• Stars
    star
    379
  • Rank 113,004 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Samples for Spring Cloud Contract project

CircleCI

Spring Cloud Contract samples

This repository contains the consumer and the producer applications to use with Spring Cloud Contract project.

It contains several important branches. master where we test against the latest versions of Spring Cloud Contract, and x.x.x where we test against x.x.x version of Spring Cloud Contract.

This repository shows examples of

  • storing contracts on the producer side

  • storing contracts in a common repo

  • passing stubs via Rest docs

Both for REST and Messaging. Built with Maven and Gradle. Also some additional Spring Cloud Contract plugin configuration is present.

These samples were used in the following presentation. It might help to use the samples.

You can also go through the Spring Cloud Contract Workshops to learn how to use the tool by example.

Projects

Common

Contains the JAR with common classes used in the contracts on the producer side.

Beer_contracts

Contains the repo with all contracts for all applications. It can be used when you want to store all contracts in a single place.

Producer

The producer application contains contracts for both REST and messaging communication. From these contracts tests and stubs will be generated.

The producer in the contract also uses features like usage of common libraries, different combination of dynamic properties.

It also uses scenario based contracts. That means that the produced stubs are stateful.

Producer_yaml

The same as Producer but uses YAML

Producer_advanced

Contains more advanced examples of Spring Cloud Contract usage.

Producer_with_external_contracts

The producer application that downloads its contracts for both REST and messaging communication, from the Beer-contracts JAR. From these contracts tests and stubs will be generated.

Producer_with_restdocs

The producer application that uses both contracts and Spring Cloud Contract WireMock with RESTDocs. Contracts are used for messaging but the HTTP stubs are created via REST Docs tests.

Producer_with_stubs_per_consumer

The producer application stores the contracts in such way that every consumer has its own, delegated folder. Then on the consumer side by turning on the stubs per consumer feature only respective stubs for the given consumer will be used.

producer_with_junit4

The producer application using JUnit 5

Producer_with_latest_2_2_features

The producer application using the latest, most notable features of Spring Cloud Contract 2.2

Producer_kotlin

The producer application with code in Kotlin

Producer_kotlin_ftw

(FTW - For the win) The producer application with code, setup and contract in Kotlin.

Consumer_kotlin_ftw

(FTW - For the win) The consumer application with code, setup and contract in Kotlin.

Consumer

The consumer application is using the stubs of the producer for both rest and messaging.

It also contains the consumer side of the stateful scenario case. By calling the same endpoint a couple of times we get different responses due to changing state.

Consumer_with_discovery

The consumer application is using the stubs of the producer for rest. It sends requests via a load balanced rest template. In the tests Spring Cloud Contract stubs out any discovery service infrastructure.

Consumer_with_restdocs

The consumer application is using the stubs of the producer for both rest and messaging. The stubs come from the test compile dependency of the producer.

Consumer_with_stubs_per_consumer

The consumer application that has the stub of the HTTP server get fed with stubs that lay under proper folder in the reused JAR.

Producer_proto

Project that uses Protocol Buffers to communicate.

Consumer_proto

Project that uses Protocol Buffers to communicate.

How to build it?

You can run Maven from the root folder once the "common" module has been installed. So from a clean checkout:

(cd common; ../mvnw clean install)
./mvnw clean install -Ptest

(or ./scripts/runMavenBuild.sh). Then you can build normally

./mvnw clean install

The order should be as follows

  • common

  • beer-contracts

  • producer

  • producer_advanced

  • producer_with_external_contracts

  • producer_with_stubs_per_consumer

  • consumer

  • consumer_with_discovery

  • producer_with_restdocs

  • consumer_with_restdocs

  • consumer_with_stubs_per_consumer

If the order is different then your apps will blow up most likely due to missing stubs.

You can also go to each of the projects and run Gradle wrapper:

./gradlew clean build publishToMavenLocal

How to test it?

You can run the script

./scripts/runAcceptanceTests.sh

More Repositories

1

eureka

Java
500
star
2

customers-stores

Two microservices for customers and stores
Java
431
star
3

configserver

Java
371
star
4

spring-cloud-gateway-sample

Sample Spring Cloud Gateway Application
Java
360
star
5

brewery

Brewing beer with Spring Cloud has never been that easy...
Java
353
star
6

feign-eureka

Example of using feign with eureka
Java
236
star
7

config-repo

Configuration files for the server sample
138
star
8

bookstore-service-broker

Sample application for Spring Cloud Open Service Broker
Java
72
star
9

spring-cloud-circuitbreaker-demo

Samples demonstrating how to using Spring Cloud Circuitbreaker
Java
64
star
10

spring-cloud-sleuth-samples

Contains isolated samples of Spring Cloud Sleuth
Java
23
star
11

spring-cloud-contract-nodejs

Spring Cloud Contract with Node JS application
Shell
22
star
12

spring-cloud-config-vault

Sample application demonstrating how to use Hashicorp Vault as a backend for a Spring Cloud Config server
Java
16
star
13

svn-config-server

Sample Config Server and Config Client. The Config Server is configured to use Subversion rather than git
Java
16
star
14

spring-cloud-app-broker-samples

Sample apps for https://github.com/spring-cloud/spring-cloud-app-broker
Java
8
star
15

spring-cloud-square-retrofit-web

Demo project for Spring Cloud Square Retrofit Web
Java
3
star
16

sleuth-issues

Samples for Sleuth that replicate issues
Java
2
star
17

spring-cloud-function-samples

1
star
18

spring-cloud-square-retrofit-webclient

Java
1
star
19

spring-cloud-intro-demo-config

Centralised Configuration for Spring Cloud Intro Demo
1
star
20

spring-cloud-contract-nodejs-external-contracts

External contracts for the Spring Cloud Contract NodeJS sample
Java
1
star