From 5011e9966ae5274e2ed87c731873fce7c2d8bd2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=81azarski?= Date: Fri, 1 Feb 2019 16:01:07 +0100 Subject: [PATCH] pact-gen added --- judge-d-agent/pom.xml | 23 ++++++++-------- .../judged/agent/JudgeDPublisher.java | 6 +++-- .../judged/agent/config/BeanFactory.java | 7 ++++- .../config/CachingDelegatingDPublisher.java | 7 +++-- .../judged/agent/config/SwaggerConfig.java | 22 ---------------- .../agent/ContractTestsGenerator.groovy | 26 +++++++++++++++++++ .../hltech/HLTechServiceLocatorUT.groovy | 17 +++--------- .../resources/application-test.properties | 5 ++++ 8 files changed, 59 insertions(+), 54 deletions(-) delete mode 100644 judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/SwaggerConfig.java create mode 100644 judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/ContractTestsGenerator.groovy create mode 100644 judge-d-agent/src/test/resources/application-test.properties diff --git a/judge-d-agent/pom.xml b/judge-d-agent/pom.xml index 7d523ed0..8c65868c 100644 --- a/judge-d-agent/pom.xml +++ b/judge-d-agent/pom.xml @@ -16,6 +16,7 @@ 1.5.9.RELEASE 2.7.0 + 1.3.3 @@ -63,17 +64,6 @@ kubernetes-client 3.1.10 - - - io.springfox - springfox-swagger2 - ${swaggerVersion} - - - io.springfox - springfox-swagger-ui - ${swaggerVersion} - org.projectlombok lombok @@ -106,6 +96,17 @@ 1.2.4.RELEASE test + + cglib + cglib-nodep + 3.2.10 + test + + + com.hltech + pact-gen + ${pactGenVersion} + diff --git a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/JudgeDPublisher.java b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/JudgeDPublisher.java index 9be9b0fc..53093d4f 100644 --- a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/JudgeDPublisher.java +++ b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/JudgeDPublisher.java @@ -4,16 +4,18 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; import java.util.Set; +@FeignClient("judge-d-server") public interface JudgeDPublisher { @PutMapping(path = "environments/{environment}", produces = "application/json") - void publish(@RequestParam("environment") String environment, @RequestBody Set serviceForms); + void publish(@PathVariable("environment") String environment, @RequestBody Set serviceForms); @Getter @AllArgsConstructor diff --git a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/BeanFactory.java b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/BeanFactory.java index 31ff404f..6e682c66 100644 --- a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/BeanFactory.java +++ b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/BeanFactory.java @@ -34,9 +34,14 @@ public class BeanFactory { private static final Logger LOGGER = LoggerFactory.getLogger(BeanFactory.class); + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper(); + } + @Bean public JudgeDPublisher judgeDEnvironmentPublisher(Feign feign, @Value("${hltech.contracts.judge-d.baseUrl}") String baseUrl) { - return new CachingDelegatingDPublisher(feign.newInstance(new Target.HardCodedTarget<>(JudgeDPublisher.class, baseUrl))); + return feign.newInstance(new Target.HardCodedTarget<>(JudgeDPublisher.class, baseUrl)); } @Bean diff --git a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/CachingDelegatingDPublisher.java b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/CachingDelegatingDPublisher.java index a270f30a..ca3f89f8 100644 --- a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/CachingDelegatingDPublisher.java +++ b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/CachingDelegatingDPublisher.java @@ -7,18 +7,17 @@ import java.util.Set; @Slf4j -public class CachingDelegatingDPublisher implements JudgeDPublisher { +public class CachingDelegatingDPublisher { private final JudgeDPublisher judgeDPublisher; - private Set previouslySentEnvironment; + private Set previouslySentEnvironment; public CachingDelegatingDPublisher(JudgeDPublisher judgeDPublisher) { this.judgeDPublisher = judgeDPublisher; } - @Override - public void publish(String environment, Set serviceForms) { + public void publish(String environment, Set serviceForms) { if (previouslySentEnvironment == null || !previouslySentEnvironment.equals(serviceForms)) { log.info("publishing services to Judge-D: " + serviceForms); diff --git a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/SwaggerConfig.java b/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/SwaggerConfig.java deleted file mode 100644 index bdbf09d6..00000000 --- a/judge-d-agent/src/main/java/com/hltech/contracts/judged/agent/config/SwaggerConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.hltech.contracts.judged.agent.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@Configuration -@EnableSwagger2 -public class SwaggerConfig { - @Bean - public Docket productApi() { - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.basePackage("dev.hltech.contracts.judged.agent")) - .paths(PathSelectors.any()) - .build(); - } -} diff --git a/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/ContractTestsGenerator.groovy b/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/ContractTestsGenerator.groovy new file mode 100644 index 00000000..7eb05183 --- /dev/null +++ b/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/ContractTestsGenerator.groovy @@ -0,0 +1,26 @@ +package com.hltech.contracts.judged.agent + +import com.fasterxml.jackson.databind.ObjectMapper +import com.hltech.contracts.judged.agent.config.BeanFactory +import com.hltech.pact.gen.PactGenerator +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.test.context.ActiveProfiles +import org.springframework.test.context.ContextConfiguration +import spock.lang.Specification + +@SpringBootTest(classes = BeanFactory) +@ActiveProfiles("test") +@ContextConfiguration +class ContractTestsGenerator extends Specification { + + @Autowired + ObjectMapper objectMapper + + PactGenerator pactGenerator = new PactGenerator() + + def "should generate pact file"() { + expect: + pactGenerator.writePactFiles("com.hltech.contracts.judged.agent", "judge-d-agent", objectMapper, new File("target/pacts")) + } +} diff --git a/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/hltech/HLTechServiceLocatorUT.groovy b/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/hltech/HLTechServiceLocatorUT.groovy index 4dd01fc3..ee7dccc8 100644 --- a/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/hltech/HLTechServiceLocatorUT.groovy +++ b/judge-d-agent/src/test/groovy/com/hltech/contracts/judged/agent/hltech/HLTechServiceLocatorUT.groovy @@ -2,7 +2,6 @@ package com.hltech.contracts.judged.agent.hltech import com.fasterxml.jackson.databind.node.JsonNodeFactory import com.fasterxml.jackson.databind.node.ObjectNode -import com.google.common.collect.ImmutableMap import feign.Feign import feign.Target import io.fabric8.kubernetes.api.model.Container @@ -14,27 +13,17 @@ import io.fabric8.kubernetes.api.model.PodSpec import io.fabric8.kubernetes.api.model.PodStatus import io.fabric8.kubernetes.client.KubernetesClient import io.fabric8.kubernetes.client.dsl.MixedOperation -import org.assertj.core.util.Lists -import org.assertj.core.util.Maps import spock.lang.Specification import org.springframework.http.ResponseEntity import spock.lang.Subject -import static com.google.common.collect.Lists.newArrayList - class HLTechServiceLocatorUT extends Specification { - private Feign feign - private KubernetesClient kubernetesClient + private def feign = Mock(Feign) + private def kubernetesClient = Mock(KubernetesClient) @Subject - private HLTechServiceLocator serviceLocator - - def setup(){ - feign = Mock() - kubernetesClient = Mock() - serviceLocator = new HLTechServiceLocator(kubernetesClient, feign) - } + private HLTechServiceLocator serviceLocator = new HLTechServiceLocator(kubernetesClient, feign) def 'should find all correctly configured services'(){ given: "data of pods" diff --git a/judge-d-agent/src/test/resources/application-test.properties b/judge-d-agent/src/test/resources/application-test.properties new file mode 100644 index 00000000..49ee8665 --- /dev/null +++ b/judge-d-agent/src/test/resources/application-test.properties @@ -0,0 +1,5 @@ +server.port=0 + +hltech.contracts.judge-d.baseUrl=http://localhost:8080/ +hltech.contracts.judge-d.environment=test +hltech.contracts.judge-d.requiredLabel=app