integration tests for s-c-n-hystrix-amqp and s-c-n-turbine-amqp

This commit is contained in:
Spencer Gibb
2015-01-06 20:47:26 -07:00
parent a57c358702
commit 758d86e793
10 changed files with 110 additions and 49 deletions

View File

@@ -5,6 +5,8 @@ cache:
language: java
jdk:
- oraclejdk8
services:
- rabbitmq
before_install:
- git config user.name "$GIT_NAME"
- git config user.email "$GIT_EMAIL"

View File

@@ -76,6 +76,11 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

View File

@@ -0,0 +1,47 @@
package org.springframework.netflix.hystrix.amqp;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Spencer Gibb
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = HystrixAmqpTests.Application.class)
@WebAppConfiguration
@IntegrationTest({ "server.port=0", "spring.jmx.enabled=true" })
@DirtiesContext
public class HystrixAmqpTests {
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableCircuitBreaker
@RestController
public static class Application {
@HystrixCommand
@RequestMapping("/")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Test
public void contextLoads() { }
}

View File

@@ -1,29 +0,0 @@
package org.springframework.netflix.hystrix.amqp;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Spencer Gibb
*/
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableCircuitBreaker
@RestController
public class SampleHystrixAmqpApplicaiton {
@HystrixCommand
@RequestMapping("/")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(SampleHystrixAmqpApplicaiton.class, args);
}
}

View File

@@ -103,6 +103,16 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -16,6 +16,7 @@ import org.springframework.context.SmartLifecycle;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.SocketUtils;
import rx.Observable;
import rx.subjects.PublishSubject;
@@ -35,6 +36,7 @@ public class TurbineAmqpConfiguration implements SmartLifecycle {
@Autowired
private TurbineAmqpProperties turbine;
private int turbinePort;
@Bean
public PublishSubject<Map<String, Object>> hystrixSubject() {
@@ -53,8 +55,14 @@ public class TurbineAmqpConfiguration implements SmartLifecycle {
.doOnSubscribe(() -> log.info("Starting aggregation")).flatMap(o -> o)
.publish().refCount();
turbinePort = turbine.getPort();
if (turbinePort <= 0) {
turbinePort = SocketUtils.findAvailableTcpPort(40000);
}
HttpServer<ByteBuf, ServerSentEvent> httpServer = RxNetty.createHttpServer(
turbine.getPort(),
turbinePort,
(request, response) -> {
log.info("SSE Request Received");
response.getHeaders().setHeader("Content-Type", "text/event-stream");
@@ -103,4 +111,8 @@ public class TurbineAmqpConfiguration implements SmartLifecycle {
public int getPhase() {
return 0;
}
public int getTurbinePort() {
return turbinePort;
}
}

View File

@@ -1,4 +1,4 @@
package org.springframework.netflix.turbine.amqp;
package org.springframework.cloud.netflix.turbine.amqp;
import java.io.BufferedReader;
import java.io.InputStream;

View File

@@ -0,0 +1,32 @@
package org.springframework.cloud.netflix.turbine.amqp;
import org.junit.Test;
import org.junit.runner.RunWith;
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.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
/**
* @author Spencer Gibb
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TurbineAmqpTests.Application.class)
@WebAppConfiguration
@IntegrationTest({ "server.port=0", "turbine.amqp.port=0", "spring.jmx.enabled=true" })
public class TurbineAmqpTests {
@EnableAutoConfiguration
@EnableTurbineAmqp
public static class Application {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(Application.class)
.run(args);
}
}
@Test
public void contextLoads() { }
}

View File

@@ -1,18 +0,0 @@
package org.springframework.netflix.turbine.amqp;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.turbine.amqp.EnableTurbineAmqp;
/**
* @author Spencer Gibb
*/
@EnableAutoConfiguration
@EnableTurbineAmqp
public class SampleTurbineAmqpApplication {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(SampleTurbineAmqpApplication.class)
.run(args);
}
}