GithubHelp home page GithubHelp logo

spring-cloud-samples / spring-cloud-contract-samples Goto Github PK

View Code? Open in Web Editor NEW
379.0 379.0 310.0 22.51 MB

Samples for Spring Cloud Contract project

License: Apache License 2.0

Shell 9.09% Java 68.46% Groovy 8.58% JavaScript 2.37% HTML 0.56% Kotlin 10.93%

spring-cloud-contract-samples's People

Contributors

amirensit avatar bart-blommaerts avatar bertzzie avatar buzzardo avatar cristiangreco avatar dependabot-preview[bot] avatar dependabot[bot] avatar gbtec-christianhermann avatar github-actions[bot] avatar isaacwhyuenac avatar kinmarui avatar marcello-dev avatar marcingrzejszczak avatar mkrzywanski avatar olgamaciaszek avatar onobc avatar ryanjbaxter avatar shanman190 avatar spring-builds avatar spring-operator avatar tysewyn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spring-cloud-contract-samples's Issues

spring-cloud-contract-samples build failed on unresolvable SNAPSHOT dependency

Seems that Issue #23 is again actual.

Trying to build with maven leads to unresolvable dependency com.example:beer-api-producer:0.0.1.BUILD-SNAPSHOT.

Dependency really doesn't exist in SNAPSHOT repository:

image

$ mvn clean install -U
[INFO] Scanning for projects...
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-dependencies/Hoxton.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-dependencies/Hoxton.BUILD-SNAPSHOT/maven-metadata.xml (647 B at 222 B/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-dependencies-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-dependencies-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (650 B at 1.9 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-commons-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-commons-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-netflix-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-netflix-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-circuitbreaker-dependencies/1.0.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-circuitbreaker-dependencies/1.0.1.BUILD-SNAPSHOT/maven-metadata.xml (656 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-config-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-config-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (648 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-gateway-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-gateway-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-consul-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-consul-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (648 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-sleuth-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-sleuth-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (648 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-vault-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-vault-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (647 B at 1.9 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-zookeeper-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-zookeeper-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (651 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-security-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-security-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (650 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-cloudfoundry-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-cloudfoundry-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (654 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-bus-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-bus-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (645 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (650 B at 1.9 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-aws-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-aws-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (645 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-openfeign-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-openfeign-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (651 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-kubernetes-dependencies/1.1.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-kubernetes-dependencies/1.1.1.BUILD-SNAPSHOT/maven-metadata.xml (652 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-gcp-dependencies/1.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-gcp-dependencies/1.2.1.BUILD-SNAPSHOT/maven-metadata.xml (643 B at 2.0 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.8 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-tools/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-tools/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-tools/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (643 B at 1.7 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (644 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-build/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-build/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-build/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (636 B at 2.0 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-commons-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-commons-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-commons-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 1.8 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-dependencies-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-dependencies-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-dependencies-parent/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (650 B at 1.8 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (650 B at 1.9 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-netflix-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-netflix-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-netflix-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 636 B/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-zookeeper-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-zookeeper-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-zookeeper-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (651 B at 1.4 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-consul-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-consul-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-consul-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (648 B at 1.5 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-build-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-build-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-build-dependencies/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (649 B at 1.8 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/beer-common-0.0.1.BUILD-SNAPSHOT.pom
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/beer-common-0.0.1.BUILD-SNAPSHOT.pom
[WARNING] The POM for com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT is missing, no dependency information available
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.3 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.0 kB at 2.8 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.7 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.3 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.3 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.2 kB/s)
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.2 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.2 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/beer-common-0.0.1.BUILD-SNAPSHOT.jar
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/beer-common-0.0.1.BUILD-SNAPSHOT.jar
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-pact/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-pact/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-pact/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.2 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/com/google/guava/guava/maven-metadata.xml
Downloading from spring-plugin-milestones: https://repo.spring.io/plugins-release-local/com/google/guava/guava/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/com/google/guava/guava/maven-metadata.xml
Downloading from spring-milestones: https://repo.spring.io/libs-milestone-local/com/google/guava/guava/maven-metadata.xml
Downloading from central-no-ssl: http://repo.maven.apache.org/maven2/com/google/guava/guava/maven-metadata.xml
Downloading from spring-releases: https://repo.spring.io/release/com/google/guava/guava/maven-metadata.xml
Downloaded from central-no-ssl: http://repo.maven.apache.org/maven2/com/google/guava/guava/maven-metadata.xml (3.5 kB at 30 kB/s)
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from mulesoft-releases: https://repository.mulesoft.org/releases/com/example/beer-common/0.0.1.BUILD-SNAPSHOT/beer-common-0.0.1.BUILD-SNAPSHOT.jar
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-maven-plugin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 2.7 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-kotlin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-kotlin/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.3 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-java/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.6 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.6 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.0 kB at 2.9 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-spec-groovy/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.6 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-shade/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.4 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-converters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.7 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-stub-runner/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.7 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-contract-wiremock/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (1.3 kB at 3.4 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-starter-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-starter-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-starter-contract-verifier/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (834 B at 2.5 kB/s)
Downloading from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-starters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloading from spring-plugin-snapshots: https://repo.spring.io/plugins-snapshot-local/org/springframework/cloud/spring-cloud-contract-starters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml
Downloaded from spring-snapshots: https://repo.spring.io/libs-snapshot-local/org/springframework/cloud/spring-cloud-contract-starters/2.2.1.BUILD-SNAPSHOT/maven-metadata.xml (646 B at 2.0 kB/s)
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Failure to find com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in https://repo.spring.io/libs-snapshot-local was cached in the local repository, resolution will not be reattempted until the update interval of spring-snapshots has elapsed or updates are forced @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) @
[ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Failure to find com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in https://repo.spring.io/libs-snapshot-local was cached in the local repository, resolution will not be reattempted until the update interval of spring-snapshots has elapsed or updates are forced @
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ line 17, column 12
 @
[ERROR] The build could not read 9 projects -> [Help 1]
[ERROR]
[ERROR]   The project com.example:beer-api-producer:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-webflux:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_webflux\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-webflux-webtestclient:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_webflux_webtestclient\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-with-stubs-per-consumer:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_with_stubs_per_consumer\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-with-dsl-restdocs:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_with_dsl_restdocs\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Failure to find com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in https://repo.spring.io/libs-snapshot-local was cached in the local repository, resolution will not be reattempted until the update interval of spring-snapshots has elapsed or updates are forced -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-with-spock:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_with_spock\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-junit5:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_with_junit5\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-xml:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_with_xml\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in spring-snapshots (https://repo.spring.io/libs-snapshot-local) -> [Help 2]
[ERROR]
[ERROR]   The project com.example:beer-api-producer-java:0.0.1.BUILD-SNAPSHOT (C:\dev\github\spring-cloud-contract-samples\producer_java\pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.2.1.BUILD-SNAPSHOT or one of its dependencies could not be resolved: Failure to find com.example:beer-common:jar:0.0.1.BUILD-SNAPSHOT in https://repo.spring.io/libs-snapshot-local was cached in the local repository, resolution will not be reattempted until the update interval of spring-snapshots has elapsed or updates are forced -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginManagerException

Add pact-messaging example

Hello there,

first of all, a great framework and an excellent list of examples.
I managed to convert a pact rest contract into a spring contract as given in the example.

I'm trying to do the same for a message contract. The contract gets downloaded but then an error is thrown when the test generation starts. My base test class is annotated with AutoConfigureMessageVerifier

The exception sounds as if it is attempted to convert a rest contract:
Caused by: java.lang.NullPointerException: Cannot get property 'serverValue' on null object at org.springframework.cloud.contract.verifier.builder.JUnitMessagingMethodBodyBuilder.validateResponseHeadersBlock(JUnitMessagingMethodBodyBuilder.groovy:138)
I'm certainly missing something here, but have no clue what. Any hints?

Example with external contracts and contractsMode CLASSPATH

Preamble

My setup contains the following modules:

Module name Corresponding module in the samples Description
my-contracts beer_contracts Module with contracts.
my-producer producer_with_external_contracts Producer of the API.
my-consumer - Consumer of the API.

I wanted to execute the Spring Cloud Contract tests during the build with contractsMode CLASSPATH.
For that reason, I created an aggregator containing these three modules und executed mvn clean test.

In the samples, the beer_contracts module with external contracts does not provide the artifact with the classifier stubs.
I choose another approach for my project.
The module my-contracts does provide the artifact with the classifier stubs.
The modules my-consumer and my-producer do not know each other but the API and the module my-contracts.

Issue

To demonstrate how Spring Cloud Contract works with external contracts, the samples contain already the modules beer_contracts and producer_with_external_contracts.
This works with contractsMode LOCAL but not with contractsMode CLASSPATH.

In my project this has a couple of reasons:

After setting contractsMode to CLASSPATH in my-producer the following problems occur:

  1. No stubs were found on classpath for [com.example:beer-contracts]

    I had to add the dependency of beer-contracts to the plugin dependencies in producer_with_external_contracts like this:

    <plugin>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-contract-maven-plugin</artifactId>
      <version>${spring-cloud-contract.version}</version>
      <extensions>true</extensions>
      <configuration>
          ...
        <contractDependency>
          <groupId>de.demo</groupId>
          <artifactId>my-contracts</artifactId>
          <classifier>stubs</classifier>
        </contractDependency>
        <contractsMode>CLASSPATH</contractsMode>
          ...
      </configuration>
    
      <dependencies>
        <dependency>
          <groupId>de.demo</groupId>
          <artifactId>my-contracts</artifactId>
          <version>0.0.1.BUILD-SNAPSHOT</version>
          <classifier>stubs</classifier>
        </dependency>
      </dependencies>
    </plugin>

    The next error message is the following:

  2. [ERROR] Unresolveable build extension: Plugin org.springframework.cloud:spring-cloud-contract-maven-plugin:2.1.3.BUILD-SNAPSHOT or one of its dependencies could not be resolved

    Normally Maven will resolve the dependencies of modules and plugins during the build.
    The problem here is the <extensions>true</extensions> tag.
    I guess that dependencies of extensions have to be available at the time the build starts and can not be resolved during the build.
    To fix it, I just had to include the spring-cloud-contract-maven-plugin to the extensions and remove the <extensions>true</extensions> tag (or set it to false):

    <build>
      <extensions>
        <extension>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-contract-maven-plugin</artifactId>
          <version>${spring-cloud-contract.version}</version>
        </extension>
      </extensions>
    
      <plugins>
          ...
        <plugin>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-contract-maven-plugin</artifactId>
          <version>${spring-cloud-contract.version}</version>
          <extensions>false</extensions>
          <configuration>
              ...
            <contractsMode>CLASSPATH</contractsMode>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>de.demo</groupId>
              <artifactId>my-contracts</artifactId>
              <version>0.0.1.BUILD-SNAPSHOT</version>
              <classifier>stubs</classifier>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </build>

After these fixes, the build and all Spring Cloud Contract tests run properly.
Now I have the following questions:

  • Is my approach with my-contracts and artifact with classifier stubs used in consumer and producer by Spring Cloud Contracts intended?

  • How would a setup look with given modules beer_contracts and producer_with_external_contracts with contractsMode CLASSPATH?
    Just adapting my fixes does not work.

Spring-boot-starter-test dependecy missing in build.gradle file (consumer project)

Describe the bug
I cloned the samples in my laptop in order to learn about spring cloud contract project. I noticed that the starter for test is missing (In my case I imported as gradle project, the dependency is present in pom.xml file).

Solution
Just I added the dependency in build.gradle and It works. I am able now to proceed with the intersting workshop 😃

Working example of gradle multimodule project

I'm struggling for some time now, to properly setup @AutoConfigureStubRunner annotation to pull my groovy contract files from different module in gradle multimodule project.

Relation of test to raw contracts looks like this:

|--contracts/src/test/resources/contracts/com.foo/BarContract.groovy
|--src/test/groovy/com.foo.domain/BarSpec.groovy

Below annotation does not work...

@AutoConfigureStubRunner(stubsMode = StubsMode.REMOTE,
    repositoryRoot = "stubs://file://contracts/src/test/resources/contracts",
    ids = "com.foo",
    generateStubs = true)

I'm using 2.2.5.RELEASE versions of gradle plugin, and stub-runner.

Moreover, when I run my test I get below exception:

o.s.w.c.s.GenericWebApplicationContext   : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'batchStubRunnerBeanPostProcessor' defined in class path resource [org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.class]: Unsatisfied dependency expressed through method 'batchStubRunnerBeanPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchStubRunner' defined in class path resource [org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.contract.stubrunner.BatchStubRunner]: Factory method 'batchStubRunner' threw exception; nested exception is java.lang.IllegalStateException: No stubs were found on classpath for [:]

Working example of such setup would be helpful.

Cannot run maven build on any example

Describe the bug

  • Fresh checkout
  • tried to run ./scripts/runMavenBuilds.sh
  • pretty much every example results in the same error message: see below for a sample

Sample

...
[ERROR]   The project com.example:beer-api-consumer-java:0.0.1-SNAPSHOT (/home/.../spring-cloud-samples/spring-cloud-contract-samples/consumer_java/pom.xml) has 1 error
[ERROR]     'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-stream:test-jar:test-binder is missing. @ line 61, column 15
...

not sure if the gradle build and maven build diverged, but i feel the maven builds maybe got neglected at some point.

build specs

 $ mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /home/.../.sdkman/candidates/maven/current
Java version: 17.0.2, vendor: Oracle Corporation, runtime: /home/.../.sdkman/candidates/java/17.0.2-open
Default locale: de_DE, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-131-generic", arch: "amd64", family: "unix"

Discovery Example ConnectException: Connection refusesd

Hello,
when I run the consumer discovery example I get always the following error

15:01:28.540 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.BeerControllerTest]
15:01:28.547 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
15:01:28.553 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
15:01:28.574 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.BeerControllerTest] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
15:01:28.586 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.BeerControllerTest], using SpringBootContextLoader
15:01:28.590 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.BeerControllerTest]: class path resource [com/example/BeerControllerTest-context.xml] does not exist
15:01:28.590 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.BeerControllerTest]: class path resource [com/example/BeerControllerTestContext.groovy] does not exist
15:01:28.591 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.BeerControllerTest]: no resource found for suffixes {-context.xml, Context.groovy}.
15:01:28.591 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.BeerControllerTest]: BeerControllerTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
15:01:28.672 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.BeerControllerTest]
15:01:28.678 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
15:01:28.678 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
15:01:28.678 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
15:01:28.687 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved classpath location [com/example/] to resources [URL [file:/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master%202/consumer_with_discovery/bin/com/example/], URL [jar:file:/Users/svenkohagen/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar!/com/example/]]
15:01:28.688 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example]
15:01:28.688 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example] for files matching pattern [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/*.class]
15:01:28.690 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in jar file [file:/Users/svenkohagen/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar]
15:01:28.691 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/example/*.class] to resources [file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/AbstractTest.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/BeerController.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/BeerControllerTest.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/ClientApplication.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/Person.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/Response.class], file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/ResponseStatus.class], URL [jar:file:/Users/svenkohagen/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar!/com/example/ConsumerUtils.class], URL [jar:file:/Users/svenkohagen/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar!/com/example/PatternUtils.class], URL [jar:file:/Users/svenkohagen/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar!/com/example/ProducerUtils.class]]
15:01:28.730 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/svenkohagen/Downloads/spring-cloud-contract-samples-master 2/consumer_with_discovery/bin/com/example/ClientApplication.class]
15:01:28.732 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.ClientApplication for test class com.example.BeerControllerTest
15:01:28.735 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.BeerControllerTest]: using defaults.
15:01:28.740 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
15:01:28.763 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@703580bf, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3e92efc3, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@1622f1b, org.springframework.test.context.support.DirtiesContextTestExecutionListener@72a7c7e0, org.springframework.test.context.transaction.TransactionalTestExecutionListener@2e4b8173, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@70e8f8e, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@17046283, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@5bd03f44, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@29626d54, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@5a63f509, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@6e4784bc, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@34b7ac2f]
15:01:28.765 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.BeerControllerTest]
15:01:28.765 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.BeerControllerTest]
15:01:28.773 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.BeerControllerTest]
15:01:28.773 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.BeerControllerTest]
15:01:28.774 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.BeerControllerTest]
15:01:28.774 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.BeerControllerTest]
15:01:28.774 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.BeerControllerTest]
15:01:28.774 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.BeerControllerTest]
15:01:28.776 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@15eb5ee5 testClass = BeerControllerTest, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@2145b572 testClass = BeerControllerTest, locations = '{}', classes = '{class com.example.ClientApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[[ImportsContextCustomizer@39529185 key = [Package Import com.example, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcSecurityAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebClientAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebDriverAutoConfiguration, org.springframework.boot.test.autoconfigure.json.JsonTestersAutoConfiguration, org.springframework.cloud.contract.stubrunner.spring.StubRunnerConfiguration, org.springframework.cloud.contract.stubrunner.spring.cloud.StubRunnerSpringCloudAutoConfiguration, org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonAutoConfiguration, org.springframework.cloud.contract.stubrunner.messaging.stream.StubRunnerStreamConfiguration, org.springframework.cloud.contract.stubrunner.messaging.integration.StubRunnerIntegrationConfiguration, org.springframework.cloud.contract.stubrunner.messaging.camel.StubRunnerCamelConfiguration, org.springframework.cloud.contract.stubrunner.spring.cloud.zookeeper.StubRunnerSpringCloudZookeeperAutoConfiguration, org.springframework.cloud.contract.stubrunner.spring.cloud.eureka.StubRunnerSpringCloudEurekaAutoConfiguration, org.springframework.cloud.contract.stubrunner.spring.cloud.consul.StubRunnerSpringCloudConsulAutoConfiguration, org.springframework.cloud.contract.verifier.messaging.stream.ContractVerifierStreamAutoConfiguration, org.springframework.cloud.contract.verifier.messaging.integration.ContractVerifierIntegrationConfiguration, org.springframework.cloud.contract.verifier.messaging.amqp.ContractVerifierAmqpAutoConfiguration, org.springframework.cloud.contract.verifier.messaging.amqp.RabbitMockConnectionFactoryAutoConfiguration, org.springframework.cloud.contract.verifier.messaging.camel.ContractVerifierCamelConfiguration, org.springframework.cloud.contract.verifier.messaging.noop.NoOpContractVerifierAutoConfiguration]], org.springframework.boot.test.context.SpringBootTestContextCustomizer@5e57643e, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@1ad282e0, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@5e955596, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@24724dba, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@799d4f69], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]], class annotated with @DirtiesContext [true] with mode [AFTER_CLASS].
15:01:28.777 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.BeerControllerTest]
15:01:28.777 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.BeerControllerTest]
15:01:28.833 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
15:01:28.833 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
15:01:28.833 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
15:01:28.835 [main] DEBUG org.springframework.core.env.MutablePropertySources - Adding [inline] PropertySource with highest search precedence
15:01:28.839 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}
15:01:28.839 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [Inlined Test Properties] PropertySource with highest search precedence
2017-07-18 15:01:34.325  INFO 9905 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@e3c0e40: startup date [Tue Jul 18 15:01:34 CEST 2017]; root of context hierarchy
2017-07-18 15:01:34.573  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:34.601  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dd38ddeb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.4.RELEASE)

2017-07-18 15:01:39.845  INFO 9905 --- [           main] com.example.BeerControllerTest           : No active profile set, falling back to default profiles: default
2017-07-18 15:01:39.848  INFO 9905 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@470a9030: startup date [Tue Jul 18 15:01:39 CEST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@e3c0e40
2017-07-18 15:01:40.535  INFO 9905 --- [           main] o.s.i.config.IntegrationRegistrar        : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created.
2017-07-18 15:01:40.824  INFO 9905 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=b210c69e-c8bd-39f3-980b-dbda1e50319b
2017-07-18 15:01:40.874  INFO 9905 --- [           main] faultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
2017-07-18 15:01:40.881  INFO 9905 --- [           main] faultConfiguringBeanFactoryPostProcessor : No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created.
2017-07-18 15:01:40.890  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:41.003  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.contract.stubrunner.spring.cloud.StubRunnerSpringCloudAutoConfiguration' of type [org.springframework.cloud.contract.stubrunner.spring.cloud.StubRunnerSpringCloudAutoConfiguration$$EnhancerBySpringCGLIB$$2d227b6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:41.013  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.netflix.metrics.MetricsInterceptorConfiguration$MetricsRestTemplateConfiguration' of type [org.springframework.cloud.netflix.metrics.MetricsInterceptorConfiguration$MetricsRestTemplateConfiguration$$EnhancerBySpringCGLIB$$f34b812f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:41.055  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'integrationGlobalProperties' of type [org.springframework.beans.factory.config.PropertiesFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:41.056  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'integrationGlobalProperties' of type [java.util.Properties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:41.086  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dd38ddeb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:41.092  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:41.574  INFO 9905 --- [           main] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring FrameworkServlet ''
2017-07-18 15:01:41.574  INFO 9905 --- [           main] o.s.t.web.servlet.TestDispatcherServlet  : FrameworkServlet '': initialization started
2017-07-18 15:01:41.793  INFO 9905 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/beer],methods=[POST],consumes=[application/json]}" onto public java.lang.String com.example.BeerController.gimmeABeer(com.example.Person) throws java.net.MalformedURLException
2017-07-18 15:01:41.796  INFO 9905 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-07-18 15:01:41.796  INFO 9905 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-07-18 15:01:41.842  INFO 9905 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-18 15:01:41.842  INFO 9905 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-18 15:01:41.863  INFO 9905 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-18 15:01:42.085  INFO 9905 --- [           main] o.s.c.c.s.StubDownloaderBuilderProvider  : Will download stubs using Aether
2017-07-18 15:01:42.089  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Remote repos not passed but the switch to work offline was set. Stubs will be used from your local Maven repository.
2017-07-18 15:01:42.345  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Desired version is [+] - will try to resolve the latest version
2017-07-18 15:01:42.361  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Resolved version is [0.0.1-SNAPSHOT]
2017-07-18 15:01:42.362  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Resolving artifact [com.example:beer-api-producer:jar:stubs:0.0.1-SNAPSHOT] using remote repositories []
2017-07-18 15:01:42.366  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Resolved artifact [com.example:beer-api-producer:jar:stubs:0.0.1-SNAPSHOT] to /Users/svenkohagen/.m2/repository/com/example/beer-api-producer/0.0.1-SNAPSHOT/beer-api-producer-0.0.1-SNAPSHOT-stubs.jar
2017-07-18 15:01:42.371  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Unpacking stub from JAR [URI: file:/Users/svenkohagen/.m2/repository/com/example/beer-api-producer/0.0.1-SNAPSHOT/beer-api-producer-0.0.1-SNAPSHOT-stubs.jar]
2017-07-18 15:01:42.378  INFO 9905 --- [           main] o.s.c.c.stubrunner.AetherStubDownloader  : Unpacked file to [/var/folders/14/xgn9sw4j6w5bfqd9_5r5tx040000gn/T/contracts5441429267249414642]
2017-07-18 15:01:48.467  INFO 9905 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@58ec8271: startup date [Tue Jul 18 15:01:48 CEST 2017]; root of context hierarchy
2017-07-18 15:01:48.506  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:48.804  INFO 9905 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 14176 (http)
2017-07-18 15:01:48.821  INFO 9905 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2017-07-18 15:01:48.823  INFO 9905 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.15
2017-07-18 15:01:48.979  INFO 9905 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-07-18 15:01:48.980  INFO 9905 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 513 ms
2017-07-18 15:01:49.004  INFO 9905 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'stub' to [/]
2017-07-18 15:01:49.006  INFO 9905 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'admin' to [/__admin/*]
2017-07-18 15:01:49.263  INFO 9905 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 14176 (http)
2017-07-18 15:01:49.265  INFO 9905 --- [           main] o.s.c.contract.stubrunner.StubServer     : Started stub server for project [com.example:beer-api-producer:0.0.1-SNAPSHOT:stubs] on port 14176
2017-07-18 15:01:49.450  INFO 9905 --- [io-14176-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : RequestHandlerClass from context returned com.github.tomakehurst.wiremock.http.AdminRequestHandler. Normalized mapped under returned 'null'
2017-07-18 15:01:49.716  INFO 9905 --- [           main] o.s.c.c.stubrunner.StubRunnerExecutor    : All stubs are now running RunningStubs [namesAndPorts={com.example:beer-api-producer:0.0.1-SNAPSHOT:stubs=14176}]
2017-07-18 15:01:50.045  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/autoconfig || /autoconfig.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.046  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/heapdump || /heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException
2017-07-18 15:01:50.047  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/auditevents || /auditevents.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public org.springframework.http.ResponseEntity<?> org.springframework.boot.actuate.endpoint.mvc.AuditEventsMvcEndpoint.findByPrincipalAndAfterAndType(java.lang.String,java.util.Date,java.lang.String)
2017-07-18 15:01:50.048  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/configprops || /configprops.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.048  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/mappings || /mappings.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.049  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/info || /info.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.050  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.get(java.lang.String)
2017-07-18 15:01:50.050  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers/{name:.*}],methods=[POST],consumes=[application/vnd.spring-boot.actuator.v1+json || application/json],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.set(java.lang.String,java.util.Map<java.lang.String, java.lang.String>)
2017-07-18 15:01:50.051  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers || /loggers.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.052  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/features || /features.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.053  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/dump || /dump.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.053  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/health || /health.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(javax.servlet.http.HttpServletRequest,java.security.Principal)
2017-07-18 15:01:50.053  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/service-registry/instance-status],methods=[GET]}" onto public org.springframework.http.ResponseEntity org.springframework.cloud.client.serviceregistry.endpoint.ServiceRegistryEndpoint.getStatus()
2017-07-18 15:01:50.054  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/service-registry/instance-status],methods=[POST]}" onto public org.springframework.http.ResponseEntity<?> org.springframework.cloud.client.serviceregistry.endpoint.ServiceRegistryEndpoint.setStatus(java.lang.String)
2017-07-18 15:01:50.054  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.055  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
2017-07-18 15:01:50.055  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env || /env.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.056  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
2017-07-18 15:01:50.056  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.056  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/refresh || /refresh.json],methods=[POST]}" onto public java.lang.Object org.springframework.cloud.endpoint.GenericPostableMvcEndpoint.invoke()
2017-07-18 15:01:50.057  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env],methods=[POST]}" onto public java.lang.Object org.springframework.cloud.context.environment.EnvironmentManagerMvcEndpoint.value(java.util.Map<java.lang.String, java.lang.String>)
2017-07-18 15:01:50.057  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env/reset],methods=[POST]}" onto public java.util.Map<java.lang.String, java.lang.Object> org.springframework.cloud.context.environment.EnvironmentManagerMvcEndpoint.reset()
2017-07-18 15:01:50.057  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/archaius || /archaius.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.058  INFO 9905 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-18 15:01:50.156  INFO 9905 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@470a9030: startup date [Tue Jul 18 15:01:39 CEST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@e3c0e40
2017-07-18 15:01:50.262  INFO 9905 --- [           main] o.s.t.web.servlet.TestDispatcherServlet  : FrameworkServlet '': initialization completed in 8688 ms
2017-07-18 15:01:50.393  WARN 9905 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2017-07-18 15:01:50.393  INFO 9905 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2017-07-18 15:01:50.399  WARN 9905 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2017-07-18 15:01:50.400  INFO 9905 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2017-07-18 15:01:50.556  INFO 9905 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService  'taskScheduler'
2017-07-18 15:01:50.766  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:51.086  INFO 9905 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 0
2017-07-18 15:01:51.086  INFO 9905 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
2017-07-18 15:01:51.086  INFO 9905 --- [           main] o.s.i.channel.PublishSubscribeChannel    : Channel 'beer-api-consumer:-1.errorChannel' has 1 subscriber(s).
2017-07-18 15:01:51.086  INFO 9905 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : started _org.springframework.integration.errorLogger
2017-07-18 15:01:51.108  INFO 9905 --- [           main] com.example.BeerControllerTest           : Started BeerControllerTest in 22.26 seconds (JVM running for 22.906)
2017-07-18 15:01:51.222  INFO 9905 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@169d1f92: startup date [Tue Jul 18 15:01:51 CEST 2017]; parent: org.springframework.web.context.support.GenericWebApplicationContext@470a9030
2017-07-18 15:01:51.286  INFO 9905 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-18 15:01:51.320  INFO 9905 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'stubRunnerRibbonConfiguration' of type [org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonConfiguration$$EnhancerBySpringCGLIB$$d5476703] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-18 15:01:51.717  INFO 9905 --- [           main] c.netflix.config.ChainedDynamicProperty  : Flipping property: somenameforproducer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2017-07-18 15:01:51.729  INFO 9905 --- [           main] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook installed for: NFLoadBalancer-PingTimer-somenameforproducer
2017-07-18 15:01:51.755  INFO 9905 --- [           main] c.netflix.loadbalancer.BaseLoadBalancer  : Client: somenameforproducer instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=somenameforproducer,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2017-07-18 15:01:51.762  INFO 9905 --- [           main] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2017-07-18 15:01:51.776  INFO 9905 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2017-07-18 15:01:51.795  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2017-07-18 15:01:51.830  INFO 9905 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2017-07-18 15:01:51.830  INFO 9905 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2017-07-18 15:01:51.915  INFO 9905 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2017-07-18 15:01:51.916  INFO 9905 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2017-07-18 15:01:52.064  INFO 9905 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2017-07-18 15:01:52.076  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2017-07-18 15:01:52.076  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2017-07-18 15:01:52.077  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2017-07-18 15:01:52.077  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2017-07-18 15:01:52.077  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2017-07-18 15:01:52.077  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2017-07-18 15:01:52.077  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2017-07-18 15:01:52.118 ERROR 9905 --- [           main] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplications(AbstractJerseyEurekaHttpClient.java:165) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1022) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:936) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:412) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:267) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:263) [eureka-client-1.7.0.jar:1.7.0]
	at org.springframework.cloud.netflix.eureka.CloudEurekaClient.<init>(CloudEurekaClient.java:60) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.eurekaClient(EurekaClientAutoConfiguration.java:228) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a.CGLIB$eurekaClient$0(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a$$FastClassBySpringCGLIB$$ed9ef525.invoke(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a.eurekaClient(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:345) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.java:359) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:176) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:340) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:192) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.sun.proxy.$Proxy104.getInstancesByVipAddress(Unknown Source) [na:na]
	at com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList.obtainServersViaDiscovery(DiscoveryEnabledNIWSServerList.java:167) [ribbon-eureka-2.2.2.jar:2.2.2]
	at com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList.getUpdatedListOfServers(DiscoveryEnabledNIWSServerList.java:152) [ribbon-eureka-2.2.2.jar:2.2.2]
	at org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList.getUpdatedListOfServers(DomainExtractingServerList.java:60) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonServerList$2.getUpdatedListOfServers(StubRunnerRibbonServerList.java:108) [spring-cloud-contract-stub-runner-1.2.0.BUILD-SNAPSHOT.jar:1.2.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonServerList.getUpdatedListOfServers(StubRunnerRibbonServerList.java:126) [spring-cloud-contract-stub-runner-1.2.0.BUILD-SNAPSHOT.jar:1.2.0.BUILD-SNAPSHOT]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.updateListOfServers(DynamicServerListLoadBalancer.java:232) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.restOfInit(DynamicServerListLoadBalancer.java:144) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.<init>(DynamicServerListLoadBalancer.java:95) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.ZoneAwareLoadBalancer.<init>(ZoneAwareLoadBalancer.java:82) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration.ribbonLoadBalancer(RibbonClientConfiguration.java:244) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c.CGLIB$ribbonLoadBalancer$7(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c$$FastClassBySpringCGLIB$$509b867e.invoke(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c.ribbonLoadBalancer(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:116) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:85) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getContext(SpringClientFactory.java:120) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:121) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getInstance(SpringClientFactory.java:110) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getLoadBalancerContext(SpringClientFactory.java:75) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancedRetryPolicyFactory.create(RibbonLoadBalancedRetryPolicyFactory.java:36) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor.intercept(RetryLoadBalancerInterceptor.java:62) [spring-cloud-commons-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.metrics.MetricsClientHttpRequestInterceptor.intercept(MetricsClientHttpRequestInterceptor.java:64) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:70) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:652) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:628) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:590) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.example.BeerController.gimmeABeer(BeerController.java:33) [bin/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [tomcat-embed-core-8.5.15.jar:8.5.15]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.15.jar:8.5.15]
	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) [spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:155) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.example.BeerControllerTest.should_reject_a_beer_when_im_too_young(BeerControllerTest.java:48) [bin/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12]
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) [.cp/:na]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_121]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_121]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_121]
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.3.jar:4.5.3]
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	... 188 common frames omitted

2017-07-18 15:01:52.119  WARN 9905 --- [           main] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
2017-07-18 15:01:52.122 ERROR 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_BEER-API-CONSUMER/10.0.1.3:beer-api-consumer:-1 - was unable to refresh its cache! status = Cannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1022) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:936) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:412) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:267) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:263) [eureka-client-1.7.0.jar:1.7.0]
	at org.springframework.cloud.netflix.eureka.CloudEurekaClient.<init>(CloudEurekaClient.java:60) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.eurekaClient(EurekaClientAutoConfiguration.java:228) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a.CGLIB$eurekaClient$0(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a$$FastClassBySpringCGLIB$$ed9ef525.invoke(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$e4a1d70a.eurekaClient(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:345) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.java:359) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:176) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:340) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:192) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.sun.proxy.$Proxy104.getInstancesByVipAddress(Unknown Source) [na:na]
	at com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList.obtainServersViaDiscovery(DiscoveryEnabledNIWSServerList.java:167) [ribbon-eureka-2.2.2.jar:2.2.2]
	at com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList.getUpdatedListOfServers(DiscoveryEnabledNIWSServerList.java:152) [ribbon-eureka-2.2.2.jar:2.2.2]
	at org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList.getUpdatedListOfServers(DomainExtractingServerList.java:60) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonServerList$2.getUpdatedListOfServers(StubRunnerRibbonServerList.java:108) [spring-cloud-contract-stub-runner-1.2.0.BUILD-SNAPSHOT.jar:1.2.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonServerList.getUpdatedListOfServers(StubRunnerRibbonServerList.java:126) [spring-cloud-contract-stub-runner-1.2.0.BUILD-SNAPSHOT.jar:1.2.0.BUILD-SNAPSHOT]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.updateListOfServers(DynamicServerListLoadBalancer.java:232) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.restOfInit(DynamicServerListLoadBalancer.java:144) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.DynamicServerListLoadBalancer.<init>(DynamicServerListLoadBalancer.java:95) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.ZoneAwareLoadBalancer.<init>(ZoneAwareLoadBalancer.java:82) [ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration.ribbonLoadBalancer(RibbonClientConfiguration.java:244) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c.CGLIB$ribbonLoadBalancer$7(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c$$FastClassBySpringCGLIB$$509b867e.invoke(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration$$EnhancerBySpringCGLIB$$9ccfff2c.ribbonLoadBalancer(<generated>) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) [spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:116) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:85) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getContext(SpringClientFactory.java:120) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:121) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getInstance(SpringClientFactory.java:110) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getLoadBalancerContext(SpringClientFactory.java:75) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancedRetryPolicyFactory.create(RibbonLoadBalancedRetryPolicyFactory.java:36) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor.intercept(RetryLoadBalancerInterceptor.java:62) [spring-cloud-commons-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.metrics.MetricsClientHttpRequestInterceptor.intercept(MetricsClientHttpRequestInterceptor.java:64) [spring-cloud-netflix-core-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:70) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:652) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:628) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:590) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.example.BeerController.gimmeABeer(BeerController.java:33) [bin/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [tomcat-embed-core-8.5.15.jar:8.5.15]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.15.jar:8.5.15]
	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) [spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:155) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at com.example.BeerControllerTest.should_reject_a_beer_when_im_too_young(BeerControllerTest.java:48) [bin/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12]
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.12.jar:4.12]
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) [.cp/:na]

2017-07-18 15:01:52.122  WARN 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Using default backup registry implementation which does not do anything.
2017-07-18 15:01:52.123  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2017-07-18 15:01:52.126  INFO 9905 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2017-07-18 15:01:52.128  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1500382912127 with initial instances count: 0
2017-07-18 15:01:52.162  INFO 9905 --- [           main] c.netflix.config.ChainedDynamicProperty  : Flipping property: somenameforproducer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2017-07-18 15:01:52.163  INFO 9905 --- [           main] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client somenameforproducer initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=somenameforproducer,current list of Servers=[localhost:14176],Load balancer stats=Zone stats: {unknown=[Zone:unknown;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:localhost:14176;	Zone:UNKNOWN;	Total Requests:0;	Successive connection failure:0;	Total blackout seconds:0;	Last connection made:Thu Jan 01 01:00:00 CET 1970;	First connection made: Thu Jan 01 01:00:00 CET 1970;	Active Connections:0;	total failure count in last (1000) msecs:0;	average resp time:0.0;	90 percentile resp time:0.0;	95 percentile resp time:0.0;	min resp time:0.0;	max resp time:0.0;	stddev resp time:0.0]
]}ServerList:org.springframework.cloud.contract.stubrunner.spring.cloud.ribbon.StubRunnerRibbonServerList@5afa0b1a
2017-07-18 15:01:52.210  INFO 9905 --- [o-14176-exec-10] o.a.c.c.C.[Tomcat].[localhost].[/]       : RequestHandlerClass from context returned com.github.tomakehurst.wiremock.http.StubRequestHandler. Normalized mapped under returned 'null'
2017-07-18 15:01:52.394  INFO 9905 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@470a9030: startup date [Tue Jul 18 15:01:39 CEST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@e3c0e40
2017-07-18 15:01:52.395  INFO 9905 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Unregistering application beer-api-consumer with eureka with status DOWN
2017-07-18 15:01:52.395  WARN 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1500382912395, current=DOWN, previous=STARTING]
2017-07-18 15:01:52.396  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Shutting down DiscoveryClient ...
2017-07-18 15:01:52.396  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Unregistering ...
2017-07-18 15:01:52.397  INFO 9905 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_BEER-API-CONSUMER/10.0.1.3:beer-api-consumer:-1: registering service...
2017-07-18 15:01:52.400 ERROR 9905 --- [           main] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource$Builder.delete(WebResource.java:591) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.cancel(AbstractJerseyEurekaHttpClient.java:76) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.unregister(DiscoveryClient.java:894) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.shutdown(DiscoveryClient.java:872) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient$$FastClassBySpringCGLIB$$a84c8cb4.invoke(<generated>) [eureka-client-1.7.0.jar:1.7.0]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.config.StandardBeanLifecycleDecorator$2.invoke(StandardBeanLifecycleDecorator.java:85) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.eureka.CloudEurekaClient$$EnhancerBySpringCGLIB$$f028c50f.shutdown(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.deregister(EurekaServiceRegistry.java:71) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.stop(EurekaAutoServiceRegistration.java:82) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.onApplicationEvent(EurekaAutoServiceRegistration.java:126) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:253) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:174) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:137) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:991) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:958) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultContextCache.remove(DefaultContextCache.java:207) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultContextCache.remove(DefaultContextCache.java:172) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.closeContext(DefaultCacheAwareContextLoaderDelegate.java:143) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.DefaultTestContext.markApplicationContextDirty(DefaultTestContext.java:102) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener.dirtyContext(AbstractDirtiesContextTestExecutionListener.java:68) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener.beforeOrAfterTestClass(AbstractDirtiesContextTestExecutionListener.java:147) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.DirtiesContextTestExecutionListener.afterTestClass(DirtiesContextTestExecutionListener.java:95) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.TestContextManager.afterTestClass(TestContextManager.java:363) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:77) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) [.cp/:na]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_121]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_121]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_121]
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.3.jar:4.5.3]
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	... 63 common frames omitted

2017-07-18 15:01:52.401  WARN 9905 --- [           main] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
2017-07-18 15:01:52.401 ERROR 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_BEER-API-CONSUMER/10.0.1.3:beer-api-consumer:-1 - de-registration failedCannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.unregister(DiscoveryClient.java:894) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.shutdown(DiscoveryClient.java:872) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient$$FastClassBySpringCGLIB$$a84c8cb4.invoke(<generated>) [eureka-client-1.7.0.jar:1.7.0]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.context.config.StandardBeanLifecycleDecorator$2.invoke(StandardBeanLifecycleDecorator.java:85) [spring-cloud-context-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) [spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.cloud.netflix.eureka.CloudEurekaClient$$EnhancerBySpringCGLIB$$f028c50f.shutdown(<generated>) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.deregister(EurekaServiceRegistry.java:71) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.stop(EurekaAutoServiceRegistration.java:82) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.onApplicationEvent(EurekaAutoServiceRegistration.java:126) [spring-cloud-netflix-eureka-client-1.4.0.BUILD-SNAPSHOT.jar:1.4.0.BUILD-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:253) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:174) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:137) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:991) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:958) [spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultContextCache.remove(DefaultContextCache.java:207) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultContextCache.remove(DefaultContextCache.java:172) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.closeContext(DefaultCacheAwareContextLoaderDelegate.java:143) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.DefaultTestContext.markApplicationContextDirty(DefaultTestContext.java:102) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener.dirtyContext(AbstractDirtiesContextTestExecutionListener.java:68) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener.beforeOrAfterTestClass(AbstractDirtiesContextTestExecutionListener.java:147) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.support.DirtiesContextTestExecutionListener.afterTestClass(DirtiesContextTestExecutionListener.java:95) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.TestContextManager.afterTestClass(TestContextManager.java:363) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:77) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-4.3.9.RELEASE.jar:4.3.9.RELEASE]
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) [.cp/:na]
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) [.cp/:na]

2017-07-18 15:01:52.401 ERROR 9905 --- [nfoReplicator-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570) ~[jersey-client-1.19.1.jar:1.19.1]
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.register(AbstractJerseyEurekaHttpClient.java:56) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:807) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:88) [eureka-client-1.7.0.jar:1.7.0]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_121]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_121]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_121]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_121]
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.3.jar:4.5.3]
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
	... 30 common frames omitted

2017-07-18 15:01:52.402  WARN 9905 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
2017-07-18 15:01:52.402  WARN 9905 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_BEER-API-CONSUMER/10.0.1.3:beer-api-consumer:-1 - registration failed Cannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:807) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:88) [eureka-client-1.7.0.jar:1.7.0]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

2017-07-18 15:01:52.402  WARN 9905 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:807) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) ~[eureka-client-1.7.0.jar:1.7.0]
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:88) [eureka-client-1.7.0.jar:1.7.0]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_121]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

2017-07-18 15:01:52.404  INFO 9905 --- [           main] com.netflix.discovery.DiscoveryClient    : Completed shut down of DiscoveryClient
2017-07-18 15:01:52.405  INFO 9905 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Stopping beans in phase 0
2017-07-18 15:01:52.406  INFO 9905 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
2017-07-18 15:01:52.406  INFO 9905 --- [           main] o.s.i.channel.PublishSubscribeChannel    : Channel 'beer-api-consumer:-1.errorChannel' has 0 subscriber(s).
2017-07-18 15:01:52.406  INFO 9905 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : stopped _org.springframework.integration.errorLogger
2017-07-18 15:01:52.407  INFO 9905 --- [           main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@169d1f92: startup date [Tue Jul 18 15:01:51 CEST 2017]; parent: org.springframework.web.context.support.GenericWebApplicationContext@470a9030
2017-07-18 15:01:52.408  INFO 9905 --- [           main] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook removed for: NFLoadBalancer-PingTimer-somenameforproducer
2017-07-18 15:01:52.409  INFO 9905 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
2017-07-18 15:01:52.410  INFO 9905 --- [           main] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@58ec8271: startup date [Tue Jul 18 15:01:48 CEST 2017]; root of context hierarchy
2017-07-18 15:01:52.480  INFO 9905 --- [      Thread-13] c.n.l.PollingServerListUpdater           : Shutting down the Executor Pool for PollingServerListUpdater

But the test passes.

Test spring cloud stream functions

Hello,
we are trying to implement spring cloud contracts for messaging (kafka) from consumer perspective. We are having issues trying to figure out how to create messages in the tests on given topic using the consumer functions from our production code.

Here's an example project
Could you please add an example of the recommended approach or best practice?

best regards

About version controls.

Hello.

May I have a question if u don't mind ?

When a version of producer API is changed such as a changing contract spec, how to recognise and remind consumer side if it is in a team project or some connected micro-services ?

I mean, i wanna know about version control of contract's specs.

Thanks in advance.

How to properly import gradle project to IntelliJ?

Could you describe how to import this project to IntelliJ so I would have full idea support out of box? I tried adding apply plugin: 'idea' to top level build.gradle and reimporting project but without success.

Currently Intellij doesn't understand folder structure (no sources/resources or main/test markings on directories) and when I add it manually using mark directory as IntelliJ cannot find proper gradle dependencies / dependencies on other submodules (i,e beer_contracts)

password and username can't be passed to gradle plugin on the producer side

when I use spring-cloud-contract-1.1.1-RELEASE gradle plugin , I met one issue.
I created one central project including some sub projects to save all contract scripts. each sub project present one mico service. once new commits is pushed, CI pipeline will be triggered . ***.jar and ***-stubs.jar will be uploaded to maven repository. As producer , it will download ***.jar to generate tests. As consumer,it will download ***stub.jar to start one wiremock server. username and password is required by our maven repository when downloading these jars now.

However, I didn't find any property to set username and password of the contractsRepositoryUrl on the producer side. So the maven repository always gave 401 response (Unauthorized) .

class: GradleContractsDownloader

private AetherStubDownloader stubDownloader(ContractVerifierExtension extension) {
return new AetherStubDownloader(
new StubRunnerOptionsBuilder()
.withStubRepositoryRoot(extension.contractsRepositoryUrl)
.withWorkOffline(extension.contractsWorkOffline)
.build())
}.

class : StubRunnerOptionsBuilder
public StubRunnerOptions build() {
return new StubRunnerOptions(this.minPortValue, this.maxPortValue, this.stubRepositoryRoot,
this.workOffline, this.stubsClassifier, buildDependencies(), this.stubIdsToPortMapping,
this.username, this.password, this.stubRunnerProxyOptions, this.stubPerConsumer, this.consumerName);
}

stubDownloader method will be invoked when I run "gradle generateContractTests". as you see , username and password is not set and always null. I have been blocked by the issue for 2 days. Could you give me some suggestion?

Does contract can support Chinese

My contract response contains Chinese like this

response {
        status 200
        body("""
            {
                "code": 91015,
                "description": "订单已失效",
                "lastUpdateTime": "0",
                "payload": null
            }
        """)
    }

and the generated mapping json like this

"response" : {
    "status" : 200,
    "body" : "{\"code\":91015,\"description\":\"\\u8ba2\\u5355\\u5df2\\u5931\\u6548\",\"lastUpdateTime\":\"0\",\"payload\":null}",
    "transformers" : [ "response-template" ]
  }

the description is not in chinese
So,i want to know how to set the encoding for contract file? dose it can set utf-8?
Thank you

spring-cloud-stub-runner issue with downloading pact contracts

Describe the bug
I've a consumer project which published a Pact contract to a remote pact repo successfully. Now I am trying to auto-generate the verifier test in Producer project using spring-cloud-contract-pact project. I added the following bits in by build.gradle file to configure test generation:

contractsMode = "REMOTE"
    	// Base package for generated tests
    	baseClassForTests = "somebaseclass"
    	contractRepository {
    		repositoryUrl = "pact://https://namin.pactflow.io"
    	}

When I build my project it fails. Upon further investigation, I found the copyContract gradle task is failing with the following:

2021-06-23T07:01:10.922-0400 [DEBUG] [org.springframework.cloud.contract.stubrunner.StubRunnerOptions] File not found
java.io.FileNotFoundException: class path resource [pact://https://namin.pactflow.io] cannot be resolved to URL because it does not exist
	at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:202)
	at org.springframework.core.io.AbstractResource.getURI(AbstractResource.java:123)
	at org.springframework.cloud.contract.stubrunner.StubRunnerOptions.getStubRepositoryRootAsString(StubRunnerOptions.java:263)
	at org.springframework.cloud.contract.stubrunner.AetherStubDownloader.remoteRepositories(AetherStubDownloader.java:144)
	at org.springframework.cloud.contract.stubrunner.AetherStubDownloader.<init>(AetherStubDownloader.java:83)
	at org.springframework.cloud.contract.stubrunner.AetherStubDownloaderBuilder.build(AetherStubDownloaderBuilder.java:38)

I am following the example from your sample producer-pact directory here. Not sure what needs to be configured to resolve the issue. Also, I noticed that currently username/password based authentication is supported. However, I have configured authentication to my pact repo using bearer token. Is token based authentication supported?

Do you have any example about Scenario 2 (output triggered by input)

Hi,
Do you have any example about Scenario 2 (output triggered by input), thanks.

Contract.make {
	label 'return_book_2'
	input {
		messageFrom('jms:input')
		messageBody([
				bookName: 'foo'
		])
		messageHeaders {
			header('sample', 'header')
		}
	}
	outputMessage {
		sentTo('jms:output')
		body([
				bookName: 'foo'
		])
		headers {
			header('BOOK-NAME', 'foo')
		}
	}
}

I still failed to pass the generated tests in producer side.....

validate_should_fail_update_reachability
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'topicName' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
at

Thanks,
Jeven

Confusing behaviour of serialization/deserialization of message in consumer_rabbit_middleware module

Describe the bug
I am not sure if this is a bug but it concerns consumer_rabbit_middleware module. The message that is produced by StubTrigger is serialized twice. Therfore it results in escaped json string that is consumed by listener. In the end we end up with instance of Foo2 that has field foo with value of json ({"foo":"example"}).

image

The actual body is first created in StubRunnerExecutor::send method (JsonOutput.toJson method call). Then the resulting json string is serialized again : here when writing the payload to bytes - we end up with escaped json. The deserialization works since Foo2 has constructor that accepts String.

The solution would be to convert generic payload to bytes without using ObjectMapper (it will be String in this case so simple cast could be sufficient).

If it is not desired behaviour (at least I suspect so) I could create a PR for this.

Build failed when setting up workshops

I'm getting this error when setting up the workshops

$ ./gradlew --stacktrace prepareForWorkshops

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':producer'.
> Could not resolve all files for configuration ':producer:classpath'.
   > Could not find com.example:beer-common:0.0.1-SNAPSHOT.
     Searched in the following locations:
         https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
         https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
         https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
         file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
         file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
         file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
         http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
         http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
         http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
         http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
         http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
         http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
         http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
         http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
         http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
     Required by:
         project :producer

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':producer'.
        at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:94)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:66)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:110)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:656)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:135)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:249)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:167)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:109)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':producer:classpath'.
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:891)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1500(DefaultConfiguration.java:113)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:865)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:383)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown Source)
        at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:68)
        at org.gradle.internal.classpath.DefaultClassPath.<init>(DefaultClassPath.java:48)
        at org.gradle.api.internal.initialization.DefaultScriptClassPathResolver.resolveClassPath(DefaultScriptClassPathResolver.java:39)
        at org.gradle.api.internal.initialization.DefaultScriptHandler.getScriptClassPath(DefaultScriptHandler.java:72)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.defineScriptHandlerClassScope(DefaultPluginRequestApplicator.java:210)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:84)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:189)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:61)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:58)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:64)
        ... 80 more
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.example:beer-common:0.0.1-SNAPSHOT.
Searched in the following locations:
    https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
    https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
    https://repo1.maven.org/maven2/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
    file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
    file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
    file:/Users/bp-tvuong957/.m2/repository/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
    http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
    http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
    http://repo.spring.io/snapshot/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
    http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
    http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
    http://repo.spring.io/milestone/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
    http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/maven-metadata.xml
    http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.pom
    http://repo.spring.io/release/com/example/beer-common/0.0.1-SNAPSHOT/beer-common-0.0.1-SNAPSHOT.jar
Required by:
    project :producer
        at org.gradle.internal.resolve.result.DefaultBuildableComponentResolveResult.notFound(DefaultBuildableComponentResolveResult.java:38)
        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:108)
        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolve(RepositoryChainComponentMetaDataResolver.java:63)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.ComponentResolversChain$ComponentMetaDataResolverChain.resolve(ComponentResolversChain.java:93)
        at org.gradle.api.internal.artifacts.ivyservice.clientmodule.ClientModuleResolver.resolve(ClientModuleResolver.java:45)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.resolve(ComponentState.java:156)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.getMetaData(ComponentState.java:167)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.calculateTargetConfigurations(EdgeState.java:133)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.attachToTargetConfigurations(EdgeState.java:104)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.attachToTargetRevisionsSerially(DependencyGraphBuilder.java:223)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolveEdges(DependencyGraphBuilder.java:213)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.traverseGraph(DependencyGraphBuilder.java:127)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:100)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver.resolve(DefaultArtifactDependencyResolver.java:84)
        at org.gradle.api.internal.artifacts.ivyservice.DefaultConfigurationResolver.resolveGraph(DefaultConfigurationResolver.java:138)
        at org.gradle.api.internal.artifacts.ivyservice.ShortCircuitEmptyConfigurationResolver.resolveGraph(ShortCircuitEmptyConfigurationResolver.java:73)
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph(ErrorHandlingConfigurationResolver.java:66)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$4.run(DefaultConfiguration.java:462)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:454)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:438)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1600(DefaultConfiguration.java:113)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getSelectedArtifacts(DefaultConfiguration.java:874)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:862)
        ... 99 more


* Get more help at https://help.gradle.org

Kotlin issues

hey @shanman190, I still can't build the Kotlin based projects. I've also added github actions that will finally run the samples in a visible way.

11:09:22 Building [producer_webflux_security] skipping tests? [false] after prepare for workshops? [false]
11:09:22 
11:09:22 
11:09:22 + cd producer_webflux_security
11:09:22 + [[ false == \t\r\u\e ]]
11:09:22 + [[ false == \t\r\u\e ]]
11:09:22 + ./gradlew clean build publishToMavenLocal --stacktrace --refresh-dependencies --console=plain
11:09:22 To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.7/userguide/gradle_daemon.html.

11:09:23 Daemon will be stopped at the end of the build stopping after processing

11:09:38 
11:09:38 > Configure project :
11:09:38 Boot Version [2.4.0], Cloud version [2020.0.0-SNAPSHOT], Contract version [3.0.0-SNAPSHOT]

11:09:39 Spring Cloud Contract Verifier Plugin: Falling back to legacy contracts directory in 'test' source set. Please switch to 'contractTest' source set as this will be removed in a future release.
11:09:39 Spring Cloud Contract Verifier Plugin: Falling back to legacy contracts directory in 'test' source set. Please switch to 'contractTest' source set as this will be removed in a future release.
11:09:39 
11:09:39 > Task :clean UP-TO-DATE

11:09:48 > Task :compileKotlin
11:09:48 > Task :compileJava NO-SOURCE
11:09:48 > Task :compileGroovy NO-SOURCE
11:09:48 > Task :processResources
11:09:48 > Task :classes
11:09:48 > Task :bootJarMainClassName
11:09:49 > Task :bootJar
11:09:49 > Task :inspectClassesForKotlinIC
11:09:49 > Task :jar SKIPPED
11:09:49 
11:09:49 > Task :copyContracts
11:09:49 Spring Cloud Contract Verifier Plugin: Falling back to legacy contracts directory in 'test' source set. Please switch to 'contractTest' source set as this will be removed in a future release.

11:09:49 
11:09:49 > Task :generateClientStubs
11:09:49 > Task :verifierStubsJar
11:09:49 > Task :assemble

11:09:51 
11:09:51 > Task :compileTestKotlin
11:09:51 Errors occurred while build effective model from /opt/jenkins/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-osgi/2.2.10/c926a537af564ec047ec6308df1d0d2a03364a86/jaxb-osgi-2.2.10.pom:
11:09:51     'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} in com.sun.xml.bind:jaxb-osgi:2.2.10
11:09:52 
11:09:52 > Task :compileTestJava NO-SOURCE
11:09:52 > Task :compileTestGroovy SKIPPED
11:09:52 > Task :processTestResources
11:09:52 > Task :testClasses
11:09:52 > Task :test
11:09:52 > Task :compileContractTestKotlin NO-SOURCE
11:09:53 > Task :generateContractTests
11:09:53 > Task :compileContractTestJava FAILED
11:09:53 
11:09:53 FAILURE: Build failed with an exception.
11:09:53 
11:09:53 * What went wrong:
11:09:53 A problem was found with the configuration of task ':compileContractTestJava' (type 'JavaCompile').
11:09:53 > Directory 'producer_webflux_security/build/classes/kotlin/contractTest' specified for property 'compileContractTestKotlinOutputClasses' does not exist.
11:09:53 
11:09:53 * Try:
11:09:53 Run with --info or --debug option to get more log output. Run with --scan to get full insights.
11:09:53 
11:09:53 * Exception is:
11:09:53 org.gradle.internal.execution.WorkValidationException: A problem was found with the configuration of task ':compileContractTestJava' (type 'JavaCompile').
11:09:53 	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:71)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
11:09:53 	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
11:09:53 	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
11:09:53 	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
11:09:53 	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
11:09:53 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:187)
11:09:53 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)
11:09:53 	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
11:09:53 	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
11:09:53 	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
11:09:53 	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
11:09:53 	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
11:09:53 	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
11:09:53 	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
11:09:53 	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
11:09:53 	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
11:09:53 	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
11:09:53 	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
11:09:53 Caused by: org.gradle.api.InvalidUserDataException: Directory '/opt/jenkins/data/workspace/spring-cloud-contract-samples-build-gradle-only-jdk11-3.0.x-e2e/producer_webflux_security/build/classes/kotlin/contractTest' specified for property 'compileContractTestKotlinOutputClasses' does not exist.
11:09:53 	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:71)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
11:09:53 	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
11:09:53 	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
11:09:53 	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
11:09:53 	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
11:09:53 	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
11:09:53 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:187)
11:09:53 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)
11:09:53 	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
11:09:53 	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
11:09:53 	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
11:09:53 	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
11:09:53 	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
11:09:53 	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
11:09:53 	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
11:09:53 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
11:09:53 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
11:09:53 	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
11:09:53 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
11:09:53 	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
11:09:53 	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
11:09:53 	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
11:09:53 	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)

Workshop is not consistent

I spent 2 days to go through the simplest examples. The reason for this is that the description and code examples do not match. The workshop samples code also does not match the documentation. I will not give specific examples, there are many of them. Just try out a few lessons yourself.

how to mock the service

In the real world there is always a dependency inside the controller. How to mock that service and then inject into the controller and then use that controller while starting server.

With the current example the dependency will be null always and hence 500 will be the response

build error

Error:(21, 53) java: package Beer does not exist

Add an example with WEBTESTCLIENT & RouterFunction

Would it be possible to add an example of how to set up spring-cloud-contracts for it to work with a RouterFunction in a WebFlux style (please see code below)? I'm particular interested in seeing how the BaseTest class looks like - by that I mean, how is RestAssuredWebTestClient set up, what annotations are used and how much mocking of objects are required.

@Configuration
public class LocationRouter {
    private ReactiveErrorHandler error = new ReactiveErrorHandler();

    @Bean
    public RouterFunction<ServerResponse> route(LocationHandler handler) {
        return RouterFunctions.route(GET("/locations"), handler::getLocations)
                .andRoute(GET("/locations/{geoId}"), handler::getLocationsByGeoId)
                .filter(error.notFound())
                .filter(error.badRequest())
                .filter(error.catchAll());
    }
}

The problem at hand

I cannot get past this error message

java.lang.IllegalStateException: Failed to load ApplicationContext

I have tried a set up like this in my BaseTest class:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public abstract class LocationBaseTest {

    @Autowired
    WebApplicationContext webAppContext;

    @Autowired
    ApplicationContext appContext;

    @Before
    public void setup() {

//        RestAssuredWebTestClient.applicationContextSetup(appContext);
//        RestAssuredWebTestClient.webAppContextSetup(webAppContext);
        RestAssuredWebTestClient.standaloneSetup(new LocationRouter());

    }
}

The commented out lines in the code above are the other options I've tried.
I've also tried to use

@MockBean LocationHandler handler

but that didn't get me anywhere.

All Kotlin Spring Boot Producer with Gradle build system, Kotlin version incompatibility

I am trying to do something similar to the sample Producer Kotlin FTW but keep running into an issue with the Kotlin version.

  • Gradle: 6.2
  • Spring Boot: 2.2.5.RELEASE
  • Spring Cloud: Hoxton.SR3
  • Spring Cloud Contracts: 2.2.2.RELEASE
  • Kotlin: 1.3.70

I have multiple contracts written as .kts
Whenever I try upgrading the version on Kotlin on my project past 1.3.31 I can no longer generate the contract tests e.g. ./gradlew generateContractTests.

Stacktrace
./gradlew generateContractTests --stacktrace
> Task :generateContractTests FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':generateContractTests'.
> org/jetbrains/kotlin/cli/jvm/repl/GenericReplCompiler

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':generateContractTests'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:205)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:203)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.NoClassDefFoundError: org/jetbrains/kotlin/cli/jvm/repl/GenericReplCompiler
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine$replCompiler$2.invoke(KotlinJsr223JvmLocalScriptEngine.kt:47)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine$replCompiler$2.invoke(KotlinJsr223JvmLocalScriptEngine.kt:38)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine.getReplCompiler(KotlinJsr223JvmLocalScriptEngine.kt)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine$localEvaluator$2.invoke(KotlinJsr223JvmLocalScriptEngine.kt:53)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine$localEvaluator$2.invoke(KotlinJsr223JvmLocalScriptEngine.kt:38)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine.getLocalEvaluator(KotlinJsr223JvmLocalScriptEngine.kt)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine.getReplEvaluator(KotlinJsr223JvmLocalScriptEngine.kt:55)
        at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine.createState(KotlinJsr223JvmLocalScriptEngine.kt:59)
        at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.createState$default(KotlinJsr223JvmScriptEngineBase.kt:46)
        at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.getCurrentState(KotlinJsr223JvmScriptEngineBase.kt:53)
        at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.nextCodeLine(KotlinJsr223JvmScriptEngineBase.kt:44)
        at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:61)
        at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:33)
        at org.springframework.cloud.contract.spec.internal.KotlinContractConverter$convertFrom$eval$1.invoke(KotlinContractConverter.kt:50)
        at org.springframework.cloud.contract.spec.internal.KotlinContractConverter$convertFrom$eval$1.invoke(KotlinContractConverter.kt:31)
        at org.springframework.cloud.contract.spec.internal.KotlinContractConverter.withUpdatedClassloader(KotlinContractConverter.kt:68)
        at org.springframework.cloud.contract.spec.internal.KotlinContractConverter.convertFrom(KotlinContractConverter.kt:46)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.tryConvert(ContractFileScanner.groovy:308)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.addContractToTestGeneration(ContractFileScanner.groovy:286)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.appendRecursively(ContractFileScanner.groovy:253)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.addContractToTestGeneration(ContractFileScanner.groovy:295)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.appendRecursively(ContractFileScanner.groovy:253)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.addContractToTestGeneration(ContractFileScanner.groovy:295)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.appendRecursively(ContractFileScanner.groovy:253)
        at org.springframework.cloud.contract.verifier.file.ContractFileScanner.findContractsRecursively(ContractFileScanner.groovy:221)
        at org.springframework.cloud.contract.verifier.TestGenerator.generateTestClasses(TestGenerator.groovy:125)
        at org.springframework.cloud.contract.verifier.TestGenerator.generate(TestGenerator.groovy:104)
        at org.springframework.cloud.contract.verifier.plugin.GenerateServerTestsTask.generate(GenerateServerTestsTask.groovy:132)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:727)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:694)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:568)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:553)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:536)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:276)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:265)
        at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
        at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
        at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:153)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:67)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:41)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)
        ... 30 more

I noticed in the sample the following code.

// Kotlin version needs to be aligned with Gradle
kotlin("jvm") version "1.3.31"
kotlin("plugin.spring") version "1.3.31"

Can someone point me in the right direction because I don't entirely understand the problem here?
Why does Gradle need to be aligned with the version of Kotlin? What needs to change to allow my project to use a newer version of Kotlin?

Extend fromRequest.body with additional properties

Is it possible to extend the fromRequest.body() with additional properties.
I have a case, where external system returns in the response the exact request body in addition to that an object. as an example

	request {
		method 'GET'
		url('/api/v1/xxxx') {
			queryParameters {
				parameter("foo", "bar")
				parameter("foo", "bar2")
			}
		}
		headers {
			header(authorization(), "secret")
			header(authorization(), "secret2")
		}
		body(foo: "bar", baz: 5)
	}
	response {
		status OK()
		headers {
			header(authorization(), "foo ${fromRequest().header(authorization())} bar")
		}
		body(fromRequest().body().properties.put("id":"some_id"))
	}
}```

but that results in "null".

Move out workshops generation

We're unable to maintain the workshops in its current form. The workshop documentation needs updating, polishing and the attention that we're currently unable to provide.

What we would like to achieve is:

  • Find a new home for the workshops
  • Remove the special comments from the samples code
  • Remove the gradle tasks to generate the documentation
  • Remove the workshops documentation from the repository

If you're interested in maintaining the workshops - please comment on this issue.

Unable to execute producer tests kafka

I am trying to execute kafka contract tests using SCC.
I keep running into this error :
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contractVerifierKafkaMessageExchange' defined in class path resource [org/springframework/cloud/contract/verifier/messaging/kafka/ContractVerifierKafkaConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.contract.verifier.messaging.MessageVerifier]: Factory method 'contractVerifierKafkaMessageExchange' threw exception; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.boot.autoconfigure.kafka.KafkaProperties$Consumer.getGroupId()" because the return value of "org.springframework.boot.autoconfigure.kafka.KafkaProperties.getConsumer()" is null at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.22.jar:5.3.22]

My Test looks like this :
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = KafkaEmployeeEventPublisher.class) @AutoConfigureMessageVerifier @EmbeddedKafka(partitions = 1, topics = {"test.topic"}) @ActiveProfiles("test") public abstract class BaseClassTest {

I am using spring-kafka.

Acknowledgment to producer

Is there a way to notify producer that the contract has failed for some of his consumers for some reason ("Some this which cannot be modified from consumer side")

Main idea is to know all client failure reasons to initiate a discussion

BeerVerificationListenerTest doesn't work in 2.1.x

Seems like this test depends on ordering in HashMap. For me it works with destination=verifications, but fails with destination=aa.

2018-12-27 13:26:40.708 DEBUG 150088 --- [           main] o.s.c.c.v.m.stream.StreamStubMessages    : Found following channels [{aa=aa, input=aa}] for destination [aa]. Will pick the one that matches the default channel name or the first one if none is matching
2018-12-27 13:26:40.708 DEBUG 150088 --- [           main] o.s.c.c.v.m.stream.StreamStubMessages    : Picked channel name is [aa]

https://github.com/b-dzoba/spring-cloud-contract-samples/commit/82bc41febe5d4d8dde306d8d0798aebeecb49a7c

Add sample combining Spring Cloud Contract, WebTestClient, RestAssured and Spring Restdocs

Would it be an idea to add a sample combining Spring Cloud Contract, WebTestClient, RestAssured and Spring Restdocs?

WebTestClient can be configured to use Restdocs and so does RestAssured. But under Spring Cloud Contract there seems to be no way to configure so that the snippets are written.
For instance, the following setup doesn't work:

@RunWith(SpringRunner.class)
@WebFluxTest(controllers = StateHandler.class)
public class AbstractSpringCloudContractTestBase {

    @Rule
    public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("target/generated-snippets");

    @Inject
    private ApplicationContext context;
    @MockBean
    private StateRepository stateRepository;
    protected RequestSpecification documentationSpec;

    @Before
    public void beforeEach() {
        WebTestClient webTestClient = WebTestClient.bindToApplicationContext(context).configureClient()
                                           .filter(documentationConfiguration(restDocumentation)).build();
        RestAssuredWebTestClient.webTestClient(webTestClient);
    }
}

Using the spring-cloud-contract-maven-plugin and running the tests will not result in Spring Restdocs output.

An example on how to make this work would be much appreciated.

Question is if there is actually a DSL first approach possible with WebFlux, Spring Cloud Contract and Spring Restdocs...

Compilation failed as no suitable method found for convertAsCollection

While I build beer_contracts, it's always failed as contract.verifier error.
Here is the error:
[INFO] Reactor Summary:
[INFO]
[INFO] Common ............................................. SUCCESS [ 3.610 s]
[INFO] Contracts .......................................... FAILURE [ 1.585 s]
[INFO] Producer ........................................... SKIPPED
[INFO] Producer ........................................... SKIPPED
[INFO] Producer ........................................... SKIPPED
[INFO] Producer With External Contracts ................... SKIPPED
[INFO] Producer With Rest Docs ............................ SKIPPED
[INFO] Consumer ........................................... SKIPPED
[INFO] Consumer ........................................... SKIPPED
[INFO] Consumer ........................................... SKIPPED
[INFO] Consumer with Rest Docs ............................ SKIPPED
[INFO] Spring Cloud Contract Samples ...................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.788 s
[INFO] Finished at: 2017-07-24T16:00:25+08:00
[INFO] Final Memory: 75M/486M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project beer-contracts: Compilation failure
[ERROR] /C:/git/spring-cloud-contract-samples/beer_contracts/src/test/java/docs/GenerateAdocsFromContractsTests.java:[87,78] no suitable method found for convertAsCollection(java.io.File,java.io.File)
[ERROR] method org.springframework.cloud.contract.verifier.util.ContractVerifierDslConverter.convertAsCollection(java.lang.String) is not applicable
[ERROR] (actual and formal argument lists differ in length)
[ERROR] method org.springframework.cloud.contract.verifier.util.ContractVerifierDslConverter.convertAsCollection(java.io.File) is not applicable
[ERROR] (actual and formal argument lists differ in length)
[ERROR]
[ERROR] -> [Help 1]

POM information:
<spring-cloud.version>Dalston.SR1</spring-cloud.version>
<spring-cloud-contract.version>1.1.1.RELEASE</spring-cloud-contract.version>

NullPointerException in producer_kafka

at 77bd026

Trying to run the tests in producer_kafka fails one of the contracts (validate_shouldSendFoo) with NPE

$ cd common
$ mvn clean install
...
$ cd ..
$ mvn install -DskipTests=true
... 
(there's some errors wrt pact)

$ cd roducer_kafka
$ mvn install test -DtrimStackTrace=false
...
[ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.791 s <<< FAILURE! - in com.example.ContractVerifierTest
[ERROR] validate_shouldSendFoo  Time elapsed: 0.078 s  <<< ERROR!
java.lang.NullPointerException
        at java.base/java.util.Objects.requireNonNull(Objects.java:221)
        at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:178)
        at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
        at java.base/java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet.lambda$entryConsumer$0(Collections.java:1576)
        at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1746)
        at java.base/java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator.forEachRemaining(Collections.java:1601)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        at org.springframework.cloud.contract.verifier.messaging.kafka.ContractVerifierKafkaHelper.convertHeaders(ContractVerifierKafkaConfiguration.java:93)
        at org.springframework.cloud.contract.verifier.messaging.kafka.ContractVerifierKafkaHelper.convert(ContractVerifierKafkaConfiguration.java:88)
        at org.springframework.cloud.contract.verifier.messaging.kafka.ContractVerifierKafkaHelper.convert(ContractVerifierKafkaConfiguration.java:80)
        at org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging.receive(ContractVerifierMessaging.java:65)
        at com.example.ContractVerifierTest.validate_shouldSendFoo(ContractVerifierTest.java:30)

...

Can't generate test code in producer-external project

I try to learn it on local, I created the beer-contracts project as external contracts and installed the jar(beer-contracts) to .m2. Also, I added the jar to producer- external project. all are OK.
But when I run the test for producer- external, I found no contracts 'stest code in generated-test-sources folder. I don't change the code. where is wrong. please help.

log info:

[INFO] --- spring-cloud-contract-maven-plugin:1.1.1.RELEASE:generateTests (default-generateTests) @ beer-api-producer-external ---
[INFO] Generating server tests source code for Spring Cloud Contract Verifier contract verification
[INFO] Download dependency is provided - will download contract jars
[INFO] Will download contracts from [null]. Work offline switch equals to [true]
[INFO] Remote repos not passed but the switch to work offline was set. Stubs will be used from your local Maven repository.
[INFO] Will download contracts for [com.example:beer-contracts:+:]
[INFO] Desired version is [+] - will try to resolve the latest version
[INFO] Resolved version is [0.0.1-SNAPSHOT]
[INFO] Resolving artifact [com.example:beer-contracts:jar:0.0.1-SNAPSHOT] using remote repositories []
[INFO] Resolved artifact [com.example:beer-contracts:jar:0.0.1-SNAPSHOT] to C:\Users\Administrator\.m2\repository\com\example\beer-contracts\0.0.1-SNAPSHOT\beer-contracts-0.0.1-SNAPSHOT.jar
[INFO] Unpacking stub from JAR [URI: file:/C:/Users/Administrator/.m2/repository/com/example/beer-contracts/0.0.1-SNAPSHOT/beer-contracts-0.0.1-SNAPSHOT.jar]
[INFO] Unpacked file to [C:\Users\ADMINI~1\AppData\Local\Temp\contracts564556852322903495]
[INFO] Pattern to pick contracts equals [^C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\contracts564556852322903495\\com\\example\\beer-api-producer-external\\.*$]
[INFO] Ant Pattern to pick files equals [**\com/example/beer-api-producer-external\**/]
[INFO] Directory with contract is present at [C:\Users\ADMINI~1\AppData\Local\Temp\contracts564556852322903495]
[INFO] Test Source directory: D:\ideaProjects\producer_with_external_contracts\target\generated-test-sources\contracts added.
[INFO] Using null as base class for test classes
[INFO] Generated 0 test classes.

Issues running samples on Windows OS

At the moment collecting notes here with respect to running the samples on Windows and the issues involved with doing so.

  • producer_with_git
    • Windows path and JGit error
    • Git URIish: git://file://C:\git\spring-cloud-contract-sampels\producer_with_git\../target/
    • Seems like the '\' is the culprit
  • producer_with_git_empty
    • Same error as producer_with_git
  • producer_proto
    • Uses /bin/bash, which isn't Windows friendly...
  • producer_webflux_security
    • ./keygen.sh bash and sh aren't natively available
    • GlobalSecurityConfig.kt is expecting public.txt to only have Linux line endings
  • consumer
    • ROOT environment variable relies on pwd command (not available on Windows by default)
    • pwd command is sometimes available for Windows users when running in Bash from Git for Windows. pwd returns a *nix style path which does not work with the Java usage in the consumer.
  • consumer_proto
    • Same issue as with producer_proto
  • ... more to come

Generating tests from Jar contracts doesn't work

Hi,

So I'm trying to generate contract tests from Groovy DSL that are packaged in a Jar (similar to producer_with_external_contracts example).

I packaged the Jar as shown in beer_contracts example - meaning that groovy DSL files are placed in root of a Jar.
Then the Jar is published to remote repository.

In another project I'm trying to get that Jar artifact and based on DSLs generate tests using Gradle like so:


plugins {
    id 'java'
    id 'groovy'
    id "maven-publish"
    id 'idea'
    id 'org.springframework.boot' version "2.7.1"
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id "io.freefair.lombok" version '6.3.0'
    id "org.springframework.cloud.contract" version "3.1.3"
}

contracts {
    testFramework = 'Spock'
    testMode = 'EXPLICIT'
    baseClassForTests = 'example.E2EBaseITest'
    contractDependency {
        stringNotation = 'example:0.0.17:stubs'
    }
    contractRepository {
        repositoryUrl =  'urlToRepo'
        username = "${mvnUsername}"
        password = "${mvnPassword}"
    }
    contractsMode = "REMOTE"
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-dependencies:2.7.1"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.3"
        mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:3.1.3"
        mavenBom "org.spockframework:spock-bom:2.0-groovy-3.0"
    }
}

//omitted dependency section

sourceSets {
    test {
        groovy.srcDirs += "${project.buildDir}/generated-test-sources/contracts"
    }
}


test {
    useJUnitPlatform()
    testLogging {
        events("passed", "skipped", "failed")
        exceptionFormat = 'full'
    }

    afterSuite { desc, result ->
        if (!desc.parent) {
            println "##### RESULT: " +
                    "${result.testCount} TOTAL, " +
                    "${result.successfulTestCount} SUCCESSES, " +
                    "${result.failedTestCount} FAILURES, " +
                    "${result.skippedTestCount} SKIPPED " +
                    "#####"
        }
    }
}

tasks.publish.dependsOn tasks.build
tasks.build.dependsOn tasks.test
tasks.test.dependsOn tasks.compileTestGroovy
tasks.compileTestGroovy.dependsOn tasks.generateContractTests

But the tests are not generated, no catalogs with tests are created, nothing happens...
I'm sure it gets the Jar from repo, because if I change the name to the wrong one, then I get error that it can't get the artifact.

EDIT:
I dug a little more and potentialy I see the problem.
The artifactId of a contract is completly different than the artifactId of project using it.
Let's say contract is 'com.example:contract:1.0:stubs' and the project using it 'com.example:project:2.0'.

When I look into gradle logs of copyContracts there seems to be an error there:

Unpacking stub from JAR [URI: file:/var/folders/tq/2shwm95s22j6ff4k7qkdj4tr0000gp/T/aether-local13676370951254601311/com/example/contract/1.0/com-example-contract-1.0-stubs.jar]
Unpacked file to [/var/folders/tq/2shwm95s22j6ff4k7qkdj4tr0000gp/T/contracts-1658399245296-0]
Pattern to pick contracts equals [^/var/folders/tq/2shwm95s22j6ff4k7qkdj4tr0000gp/T/contracts-1658399245296-0(/)?.*com/example/project/.*$]
Ant Pattern to pick files equals [**/com/example/project/**/]

Why it's setting the pattern to "**com/example/project/" which is current project artifactId and not the downlowded jar artifact id? It should be "**com/example/contract/"

EDIT 2:
After fiddling around a bit more it turns out I can alter the directory from which the contract DSL files will be copied from by setting the configuration option contractsPath, i.e.:
contractsPath = "/" - this will copy contract files correctly in case of contracts shown in beer_contracts example.

The problem is that in the documentation https://cloud.spring.io/spring-cloud-contract/reference/html/gradle-project.html it's described as: "Specifies the path to the jar." Which is wrong because the it's the location of a catalog of extracted JAR.

Target of subproject is packaged in stubs

When the project spring-cloud-contract-samples/beer_contracts/src/main/resources/contracts/com/example/beer-api-producer-external is build and after that the top level project spring-cloud-contract-samples/beer_contracts is build then the target dir of the sub project is packaged in the stubs jar.

The structure then looks like this:

.
├── com
│   └── example
│       └── beer-api-producer-external
│           ├── beer-api-consumer
│           │   ├── messaging
│           │   │   ├── shouldSendAcceptedVerification.groovy
│           │   │   └── shouldSendRejectedVerification.groovy
│           │   └── rest
│           │       ├── shouldGrantABeerIfOldEnough.groovy
│           │       └── shouldRejectABeerIfTooYoung.groovy
│           ├── pom.xml
│           └──**target**
│               ├── generated-test-sources
│               │   ├── contracts
│               │   │   └── org
│               │   │       └── springframework
│               │   │           └── cloud
│               │   │               └── contract
│               │   │                   └── verifier
│               │   │                       └── tests
│               │   │                           └── beer_api_consumer
│               │   │                               ├── MessagingTest.java
│               │   │                               └── RestTest.java
│               │   └── test-annotations
│               ├── maven-status
│               │   └── maven-compiler-plugin
│               │       └── testCompile
│               │           └── default-testCompile
│               │               ├── createdFiles.lst
│               │               └── inputFiles.lst
│               ├── stubs
│               │   ├── contracts
│               │   │   ├── beer-api-consumer
│               │   │   │   ├── messaging
│               │   │   │   │   ├── shouldSendAcceptedVerification.groovy
│               │   │   │   │   └── shouldSendRejectedVerification.groovy
│               │   │   │   └── rest
│               │   │   │       ├── shouldGrantABeerIfOldEnough.groovy
│               │   │   │       └── shouldRejectABeerIfTooYoung.groovy
│               │   │   ├── pom.xml
│               │   │   └── **target**
│               │   │       └── generated-test-sources
│               │   │           └── contracts
│               │   │               └── org
│               │   │                   └── springframework
│               │   │                       └── cloud
│               │   │                           └── contract
│               │   │                               └── verifier
│               │   │                                   └── tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.