From dc1aab94eb877b4d3eaf703593ee505f208d64fe Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 11 Nov 2014 15:19:59 +0000 Subject: [PATCH] Use interfaces for Eureka config --- .../eureka/DiscoveryManagerInitializer.java | 9 +- .../HystrixDashboardHomePageTests.java | 89 +++++++++++++++++++ .../dashboard/HystrixDashboardTests.java | 1 + 3 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardHomePageTests.java diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/DiscoveryManagerInitializer.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/DiscoveryManagerInitializer.java index cbc9a607..972cd5a9 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/DiscoveryManagerInitializer.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/DiscoveryManagerInitializer.java @@ -1,18 +1,21 @@ package org.springframework.cloud.netflix.eureka; -import com.netflix.discovery.DiscoveryManager; import org.springframework.beans.factory.annotation.Autowired; +import com.netflix.appinfo.EurekaInstanceConfig; +import com.netflix.discovery.DiscoveryManager; +import com.netflix.discovery.EurekaClientConfig; + /** * @author Spencer Gibb */ public class DiscoveryManagerInitializer { @Autowired - private EurekaClientConfigBean clientConfig; + private EurekaClientConfig clientConfig; @Autowired - private EurekaInstanceConfigBean instanceConfig; + private EurekaInstanceConfig instanceConfig; public synchronized void init() { diff --git a/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardHomePageTests.java b/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardHomePageTests.java new file mode 100644 index 00000000..e278ef6f --- /dev/null +++ b/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardHomePageTests.java @@ -0,0 +1,89 @@ +/* + * Copyright 2013-2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cloud.netflix.hystrix.dashboard; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.test.IntegrationTest; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.TestRestTemplate; +import org.springframework.cloud.netflix.hystrix.dashboard.HystrixDashboardHomePageTests.Application; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author Dave Syer + * + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = Application.class) +@WebAppConfiguration +@IntegrationTest({ "server.port=0", "spring.application.name=hystrix-dashboard" }) +public class HystrixDashboardHomePageTests { + + @Value("${local.server.port}") + private int port = 0; + + @Test + public void homePage() { + ResponseEntity entity = new TestRestTemplate().getForEntity( + "http://localhost:" + port, String.class); + assertEquals(HttpStatus.OK, entity.getStatusCode()); + entity.getBody().contains(""); + } + + @Test + public void cssAvailable() { + ResponseEntity entity = new TestRestTemplate().getForEntity( + "http://localhost:" + port + "/hystrix/css/global.css", String.class); + assertEquals(HttpStatus.OK, entity.getStatusCode()); + } + + @Test + public void monitorPage() { + ResponseEntity entity = new TestRestTemplate().getForEntity( + "http://localhost:" + port + "/hystrix/monitor", String.class); + assertEquals(HttpStatus.OK, entity.getStatusCode()); + } + + @Configuration + @EnableAutoConfiguration + @EnableHystrixDashboard + @Controller + protected static class Application { + + @RequestMapping("/") + public String home() { + return "forward:/hystrix"; + } + + public static void main(String[] args) { + new SpringApplicationBuilder(Application.class).properties( + "spring.application.name=hystrix-dashboard").run(); + } + } + +} diff --git a/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardTests.java b/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardTests.java index 40721457..8e5cc139 100644 --- a/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardTests.java +++ b/spring-cloud-netflix-hystrix-dashboard/src/test/java/org/springframework/cloud/netflix/hystrix/dashboard/HystrixDashboardTests.java @@ -50,6 +50,7 @@ public class HystrixDashboardTests { ResponseEntity entity = new TestRestTemplate().getForEntity( "http://localhost:" + port + "/hystrix", String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); + entity.getBody().contains(""); } @Test