From d87e1004bee5a0dbc1d58ae58730f923925479c4 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 25 Feb 2015 12:07:36 -0700 Subject: [PATCH] added zuul test with config server located by discovery. test fails with discovery NPE (lifecycle problem), but the app works. --- pom.xml | 1 + zuul-config-discovery/README.md | 3 + zuul-config-discovery/pom.xml | 110 ++++++++++++++++++ .../demo/ZuulConfigDiscoveryApplication.java | 15 +++ .../src/main/resources/application.yml | 29 +++++ .../src/main/resources/bootstrap.yml | 15 +++ .../ZuulConfigDiscoveryApplicationTests.java | 28 +++++ 7 files changed, 201 insertions(+) create mode 100755 zuul-config-discovery/README.md create mode 100755 zuul-config-discovery/pom.xml create mode 100755 zuul-config-discovery/src/main/java/demo/ZuulConfigDiscoveryApplication.java create mode 100644 zuul-config-discovery/src/main/resources/application.yml create mode 100755 zuul-config-discovery/src/main/resources/bootstrap.yml create mode 100644 zuul-config-discovery/src/test/java/demo/ZuulConfigDiscoveryApplicationTests.java diff --git a/pom.xml b/pom.xml index 913d055..f6e78ff 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,7 @@ oauth2-ribbon hystrix turbine + zuul-config-discovery zuul-proxy zuul-proxy-eureka diff --git a/zuul-config-discovery/README.md b/zuul-config-discovery/README.md new file mode 100755 index 0000000..48a40dd --- /dev/null +++ b/zuul-config-discovery/README.md @@ -0,0 +1,3 @@ +Test with zuul server, eureka and config server. Config server is located by discovery. + +Test that zuul server updates routes when new routes are added (at least doesn't fail with a stack overflow exception) diff --git a/zuul-config-discovery/pom.xml b/zuul-config-discovery/pom.xml new file mode 100755 index 0000000..0579443 --- /dev/null +++ b/zuul-config-discovery/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-sample-zuul-config-discovery + 1.0.0.BUILD-SNAPSHOT + jar + + spring-cloud-sample-zuul-config-discovery + Demo project for Spring Cloud + + + org.springframework.cloud + spring-cloud-starter-parent + 1.0.0.BUILD-SNAPSHOT + + + + UTF-8 + 1.7 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.cloud + spring-cloud-starter-zuul + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + maven-deploy-plugin + + true + + + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + http://repo.spring.io/libs-release-local + + false + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + + diff --git a/zuul-config-discovery/src/main/java/demo/ZuulConfigDiscoveryApplication.java b/zuul-config-discovery/src/main/java/demo/ZuulConfigDiscoveryApplication.java new file mode 100755 index 0000000..6dee793 --- /dev/null +++ b/zuul-config-discovery/src/main/java/demo/ZuulConfigDiscoveryApplication.java @@ -0,0 +1,15 @@ +package demo; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; + +@SpringBootApplication +@EnableZuulProxy +public class ZuulConfigDiscoveryApplication { + + public static void main(String[] args) { + new SpringApplicationBuilder(ZuulConfigDiscoveryApplication.class).web(true).run(args); + } + +} diff --git a/zuul-config-discovery/src/main/resources/application.yml b/zuul-config-discovery/src/main/resources/application.yml new file mode 100644 index 0000000..94ce552 --- /dev/null +++ b/zuul-config-discovery/src/main/resources/application.yml @@ -0,0 +1,29 @@ +info: + component: Zuul Server + +endpoints: + restart: + enabled: true + shutdown: + enabled: true + sensitive: false + +logging: + level: + org.springframework.security: DEBUG + org.springframework.web: DEBUG + org.springframework.boot: INFO + #com.netflix.discovery: 'OFF' + ROOT: INFO + +eureka: + instance: + leaseRenewalIntervalInSeconds: 10 + statusPageUrlPath: /admin/info + healthCheckUrlPath: /admin/health + +management: + port: ${MGMT_SERVER_PORT:8766} + +server: + port: ${SERVER_PORT:8765} diff --git a/zuul-config-discovery/src/main/resources/bootstrap.yml b/zuul-config-discovery/src/main/resources/bootstrap.yml new file mode 100755 index 0000000..43e2d41 --- /dev/null +++ b/zuul-config-discovery/src/main/resources/bootstrap.yml @@ -0,0 +1,15 @@ +spring: + application: + name: zuulConfigDiscoveryTest + cloud: + config: + username: user + password: password + failFast: true + discovery: + enabled: true + +eureka: + client: + serviceUrl: + defaultZone: http://user::password@localhost:8761/eureka/ diff --git a/zuul-config-discovery/src/test/java/demo/ZuulConfigDiscoveryApplicationTests.java b/zuul-config-discovery/src/test/java/demo/ZuulConfigDiscoveryApplicationTests.java new file mode 100644 index 0000000..cce1dfe --- /dev/null +++ b/zuul-config-discovery/src/test/java/demo/ZuulConfigDiscoveryApplicationTests.java @@ -0,0 +1,28 @@ +package demo; + +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = ZuulConfigDiscoveryApplication.class) +@WebIntegrationTest(randomPort = true) +@DirtiesContext +public class ZuulConfigDiscoveryApplicationTests { + + @Value("${local.server.port}") + private int port; + + + //FIXME: works fine when running the app, but not as a test + @Test + @Ignore + public void contextLoads() { + } + +}