integration tests for s-c-n-hystrix-amqp and s-c-n-turbine-amqp
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() { }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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() { }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user