diff --git a/.gitignore b/.gitignore
index 61e181b..e540fda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,7 @@ dist/
nbdist/
.nb-gradle/
\.DS_Store
+
+### Eclipse ###
+bin/
+logs/
diff --git a/.travis.yml b/.travis.yml
index 2d29533..63b16a7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,8 @@ services:
sudo: required
before_script:
- sudo service mysql stop
+script:
+ - ./gradlew check -i
env:
global:
- secure: WF5U05+p8xQRBhT75aviCl9sXpnzER52xJDkKaZPtsak3B/21rj5FGQ4TTu9ivh0oF56ws8Zy8hzNZhjS09QimqtpD+Zl5m5er4Q2GvrStVDM0k38wqye2IBf7juKIlkfntX1o1E9/xGkUgIW5eQpUt7TDGpon5FCvY8NHqDyVi+ZDU7hGQh8E3oyK+8Dly1ETLxVhoDEY3vG1VyEZ1IDrgAw/N6KlNIyiuWjPMBLTFAjGMzJAaf/MQiKfmB3HUBUtGqEdhobppEqriJkXl/6ov+Np+vh83dIBaOfRUpB1KgvGmefmtL7rb+mIIXOLMm9cpyqmK+6h1JeQrwB3xtWtIIXmmL2VEwmO/2YfTDyu+JpRkkgwDMLgyRKN9wEtaR+4C3X/p9zMysocDhyccOeGVq7XhJwgdosoJ0VRLVtUhPq1T10B/ipp2g8VF9TW1uIfSQJe6YYCrVK+fqtkWG5yuOfqQdGHNZkRJMpeTyzkJQzX7GZb8G0H8EZCsjdJ0FdEpshWcCB2ljozwH3fFMqnzE1thibpg7dC2BXF7aRGjmn/4vqme98i4hP+590FIMF+sdyDItVq7/91EAwh7m35dvszkFruIzLgHFRnrKAgG76bTHTz8bwywhnCZVbDmy/HEDOjj2ykW9jPKJ7buKRKVYbXnSgYqkn/keTHiRvLI=
diff --git a/build.gradle b/build.gradle
index 83a7850..272f808 100644
--- a/build.gradle
+++ b/build.gradle
@@ -56,7 +56,7 @@ dependencies {
testCompile('com.jayway.restassured:rest-assured:2.5.0')
testCompile ('com.jayway.restassured:spring-mock-mvc:2.5.0')
testCompile ('org.springframework.cloud:spring-cloud-starter-contract-stub-runner')
- testCompile ('com.palantir.docker.compose:docker-compose-rule-junit4:0.33.0')
+ testCompile ('com.palantir.docker.compose:docker-compose-rule-junit4:0.35.0')
}
dependencyManagement {
diff --git a/docker-compose-local.yml b/docker-compose-local.yml
index d6bedcf..851beb0 100644
--- a/docker-compose-local.yml
+++ b/docker-compose-local.yml
@@ -116,7 +116,10 @@ services:
calculationservice:
image: aista/calculation-service
environment:
+ - RABBIT_HOST=rabbitmq
- EUREKA_SERVER=discoveryservice
+ - MONGO_HOST=mongo
+ - MONGO_PORT=27017
command: ["go", "run", "main.go"]
ports:
- '8080'
diff --git a/docker-compose.yml b/docker-compose.yml
index e343d0d..3e904d2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,16 +1,31 @@
-version: '3'
+version: '2.3'
services:
edgeservice:
image: aista/edge-service
+ mem_limit: 512M
ports:
- "8080:8080"
depends_on:
- discoveryservice
+ notificationservice:
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ image: aista/notification-service
+ mem_limit: 512M
+ command: notification-service
+ ports:
+ - "32700:32700"
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - EUREKA_SERVER=discoveryservice
+
discoveryservice:
image: aista/eureka
+ mem_limit: 512M
ports:
- "8761:8761"
@@ -32,6 +47,7 @@ services:
mysqlserver:
image: mysql:5.7
+ mem_limit: 512M
volumes:
- mysql-data:/var/lib/mysql:rw
restart: always
@@ -46,6 +62,7 @@ services:
userservice:
image: aista/user-service
+ mem_limit: 512M
depends_on:
- discoveryservice
- mysqlserver
@@ -54,27 +71,30 @@ services:
mongo:
image: 'mongo:3.4.1'
+ mem_limit: 512M
container_name: 'mongo'
ports:
- '27017:27017'
volumes:
- 'mongo:/data/db'
- postgres:
- image: postgres
- restart: always
- environment:
- POSTGRES_DB: 'passenger_db'
- POSTGRES_PASSWORD: "admin"
- POSTGRES_USER: "admin"
- PGDATA: ./postgres-data
- ports:
- - '5432:5432'
- volumes:
- - ./db_volume:/var/lib/postgresql
+# postgres:
+# image: postgres
+# mem_limit: 512M
+# restart: always
+# environment:
+# POSTGRES_DB: 'passenger_db'
+# POSTGRES_PASSWORD: "admin"
+# POSTGRES_USER: "admin"
+# PGDATA: ./postgres-data
+# ports:
+# - '5432:5432'
+# volumes:
+# - ./db_volume:/var/lib/postgresql
rabbitmq:
image: rabbitmq:management
+ mem_limit: 512M
container_name: 'rabbitmq'
ports:
- "5672:5672"
@@ -82,6 +102,7 @@ services:
tripmanagementcmd:
image: aista/trip-management-cmd
+ mem_limit: 512M
environment:
- RABBIT_HOST=rabbitmq
- MONGO_HOST=mongo
@@ -94,6 +115,7 @@ services:
tripmanagementquery:
image: aista/trip-management-query
+ mem_limit: 512M
environment:
- RABBIT_HOST=rabbitmq
- MONGO_HOST=mongo
@@ -106,6 +128,7 @@ services:
gmaps-adapter:
image: aista/gmaps-adapter
+ mem_limit: 512M
environment:
- EUREKA_SERVER=discoveryservice
- RABBIT_HOST=rabbitmq
@@ -116,46 +139,52 @@ services:
calculation-service:
image: aista/calculation-service
+ mem_limit: 512M
environment:
- - EUREKA_SERVER=discoveryservice
- RABBIT_HOST=rabbitmq
- command: ["go", "run", "main.go"]
- ports:
- - '8080'
- depends_on:
- - discoveryservice
-
- passenger:
- image: aista/passenger
- ports:
- - '8080'
- depends_on:
- - postgres
- - discoveryservice
-
- driver-cmd:
- image: aista/driver-cmd
- environment:
- EUREKA_SERVER=discoveryservice
+ - MONGO_HOST=mongo
+ - MONGO_PORT=27017
+ command: ["go", "run", "main.go"]
ports:
- '8080'
depends_on:
- - rabbitmq
- - mongo
- discoveryservice
- driver-query:
- image: aista/driver-query
- container_name: 'driver-query'
- environment:
- - RABBIT_HOST=rabbitmq
- - MONGO_HOST=mongo
- ports:
- - "8080"
- depends_on:
- - rabbitmq
- - mongo
- - discoveryservice
+# passenger:
+# image: aista/passenger
+# mem_limit: 512M
+# ports:
+# - '8080'
+# depends_on:
+# - postgres
+# - discoveryservice
+#
+# driver-cmd:
+# image: aista/driver-cmd
+# mem_limit: 512M
+# environment:
+# - EUREKA_SERVER=discoveryservice
+# ports:
+# - '8080'
+# depends_on:
+# - rabbitmq
+# - mongo
+# - discoveryservice
+#
+# driver-query:
+# image: aista/driver-query
+# mem_limit: 512M
+# container_name: 'driver-query'
+# environment:
+# - RABBIT_HOST=rabbitmq
+# - MONGO_HOST=mongo
+# ports:
+# - "8080"
+# depends_on:
+# - rabbitmq
+# - mongo
+# - discoveryservice
volumes:
mongo:
diff --git a/src/main/java/aist/edge/edgeservice/ConfigurationCORS.java b/src/main/java/aist/edge/edgeservice/ConfigurationCORS.java
index 6170d9d..28344f0 100644
--- a/src/main/java/aist/edge/edgeservice/ConfigurationCORS.java
+++ b/src/main/java/aist/edge/edgeservice/ConfigurationCORS.java
@@ -1,6 +1,6 @@
package aist.edge.edgeservice;
-
+import java.util.Arrays;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -10,8 +10,6 @@
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import java.util.Arrays;
-
@Configuration
public class ConfigurationCORS extends WebSecurityConfigurerAdapter {
@@ -21,7 +19,7 @@ protected void configure(HttpSecurity http) throws Exception {
}
@Bean
- public CorsConfigurationSource corsConfigurationSource() {
+ public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7232638..5ef922a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,28 +1,34 @@
-spring:
- profiles:
- active: development
---
spring:
profiles: development
application:
name: edgeservice
zuul:
+ host:
+ connect-timeout-millis: 20000
+ socket-timeout-millis: 240000
prefix: /api
routes:
trip-cmd:
path: /trip/cmd/**
- url: http://tripmanagementcmd:8080/api
+ url: http://${TRIP_CMD_HOST:tripmanagementcmd}:${TRIP_CMD_PORT:8080}/api
trip-query:
path: /trip/query/**
- url: http://tripmanagementquery:8080/api
+ url: http://${TRIP_QUERY_HOST:tripmanagementquery}:${TRIP_QUERY_PORT:8080}/api
userservice:
path: /userservice/**
- url: http://userservice:8080/
+ url: http://${USER_SERVICE_HOST:userservice}:${USER_SERVICE_PORT:8080}/
sensitiveHeaders: Cookie,Set-Cookie
+ calculation:
+ path: /calculationservice/**
+ url: http://${CALCULATION_HOST:calculationservice}:${CALCULATION_PORT:8080}/
+ gmapsadapter:
+ path: /gmapsadapter/**
+ url: http://${GMAPS_ADAPTER_HOST:gmapsadapter}:${GMAPS_ADAPTER_PORT:8080}/
security:
oauth2:
resource:
- userInfoUri: http://userservice:8080/auth/user
+ userInfoUri: http://${USER_SERVICE_HOST:userservice}:${USER_SERVICE_PORT:8080}/auth/user
ignored: /catalog/**
eureka:
instance:
@@ -31,11 +37,16 @@ eureka:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
- defaultZone: http://discoveryservice:8761/eureka/
+ defaultZone: http://${EUREKA_SERVER:discoveryservice}:${EUREKA_PORT:8761}/eureka/
management:
security:
enabled: false
context-path: /actuator
+hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
+ribbon:
+ ConnectTimeout: 60000
+ReadTimeout: 60000
+
---
spring:
profiles: docker
@@ -67,6 +78,38 @@ eureka:
fetchRegistry: true
serviceUrl:
defaultZone: http://discoveryservice:8761/eureka/
+
+---
+spring:
+ profiles: local
+ application:
+ name: edgeservice
+zuul:
+ prefix: /api
+ routes:
+ trip-cmd:
+ path: /trip/cmd/**
+ url: http://${DOCKER_MACHINE_IP:localhost}:8080/api
+ trip-query:
+ path: /trip/query/**
+ url: http://${DOCKER_MACHINE_IP:localhost}:8080/api
+ userservice:
+ path: /userservice/**
+ url: http://${DOCKER_MACHINE_IP:localhost}:8080/
+ sensitiveHeaders: Cookie,Set-Cookie
+security:
+ oauth2:
+ resource:
+ userInfoUri: http://${DOCKER_MACHINE_IP:localhost}:8080/auth/user
+ ignored: /catalog/**
+eureka:
+ instance:
+ prefer-ip-address: true
+ client:
+ registerWithEureka: true
+ fetchRegistry: true
+ serviceUrl:
+ defaultZone: http://${DOCKER_MACHINE_IP:localhost}:8761/eureka/
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
ConnectTimeout: 3000
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..ac4fd43
--- /dev/null
+++ b/src/main/resources/bootstrap.yml
@@ -0,0 +1,9 @@
+spring:
+ application:
+ name: edgeservice
+ profiles:
+ active: development
+ cloud:
+ config:
+ uri: http://${CONFIGURATION_HOST:localhost}:8888
+ enabled: true
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..a9b59f3
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+ %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
+
+
+
+
+
+ ${LOGS}/spring-boot-logger.log
+
+ %d %p %C{1.} [%t] %m%n
+
+
+
+
+ ${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
+
+
+ 10MB
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/aist/edge/edgeservice/EdgeServiceIntegrationTests.java b/src/test/java/aist/edge/edgeservice/EdgeServiceIntegrationTests.java
index 0f6f907..62b900f 100644
--- a/src/test/java/aist/edge/edgeservice/EdgeServiceIntegrationTests.java
+++ b/src/test/java/aist/edge/edgeservice/EdgeServiceIntegrationTests.java
@@ -6,7 +6,12 @@
import com.palantir.docker.compose.connection.DockerPort;
import com.palantir.docker.compose.connection.waiting.HealthChecks;
-import java.util.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Base64;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.FileHandler;
import org.json.JSONException;
import org.json.JSONObject;
@@ -15,27 +20,32 @@
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.http.*;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.util.*;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = EdgeServiceApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class EdgeServiceIntegrationTests {
protected static final Logger LOG = LoggerFactory.getLogger(EdgeServiceIntegrationTests.class);
+ // private static String discoveryServiceURL;
+ private static String mongoURL;
+ private static String userServiceURL;
private static String tripCommandURL;
private static String tripQueryURL;
private static String gmapsAdapterURL;
private static String calculationServiceURL;
- private static String userServiceURL;
+ private static int MAX_HEALTH_CHECK_TRIES = 100000; // value based on local environment time
- //Wait for all services to have ports open
+ // Wait for all services to have ports open
@ClassRule
public static DockerComposeRule docker = DockerComposeRule.builder().pullOnStartup(true)
.file("src/test/resources/docker-compose.yml")
@@ -47,60 +57,75 @@ public class EdgeServiceIntegrationTests {
.waitingForService("gmapsadapter", HealthChecks.toHaveAllPortsOpen())
.waitingForService("calculationservice", HealthChecks.toHaveAllPortsOpen())
.waitingForService("discoveryservice", HealthChecks.toHaveAllPortsOpen())
- .waitingForService("discoveryservice", HealthChecks.toRespondOverHttp(8761,
- (port) -> port.inFormat("http://localhost:8761")))
+// .waitingForService("discoveryservice",
+// HealthChecks.toRespondOverHttp(8761, (port) -> port.inFormat("http://$HOST:$EXTERNAL_PORT")))
.build();
- //Get IP addresses and ports to run tests on
+ // Get IP addresses and ports to run tests on
@BeforeClass
- public static void initialize() {
+ public static void initialize() throws InterruptedException {
+ TimeUnit.SECONDS.sleep(20);
LOG.info("Initializing ports from Docker");
- DockerPort tripManagementCommand = docker.containers().container("tripmanagementcmd")
- .port(8080);
+ DockerPort tripManagementCommand = docker.containers().container("tripmanagementcmd").port(8080);
tripCommandURL = String.format("http://%s:%s", tripManagementCommand.getIp(),
tripManagementCommand.getExternalPort());
LOG.info("Trip Command url found: " + tripCommandURL);
- DockerPort tripManagementQuery = docker.containers().container("tripmanagementquery")
- .port(8080);
+ DockerPort tripManagementQuery = docker.containers().container("tripmanagementquery").port(8080);
tripQueryURL = String.format("http://%s:%s", tripManagementQuery.getIp(),
tripManagementQuery.getExternalPort());
LOG.info("Trip Query url found: " + tripQueryURL);
- DockerPort gmapsAdapter = docker.containers().container("gmapsadapter")
- .port(8080);
- gmapsAdapterURL = String.format("http://%s:%s", gmapsAdapter.getIp(),
- gmapsAdapter.getExternalPort());
+ DockerPort gmapsAdapter = docker.containers().container("gmapsadapter").port(8080);
+ gmapsAdapterURL = String.format("http://%s:%s", gmapsAdapter.getIp(), gmapsAdapter.getExternalPort());
LOG.info("Gmaps Adapter url found: " + gmapsAdapterURL);
- DockerPort calculationService = docker.containers().container("calculationservice")
- .port(8080);
+ DockerPort calculationService = docker.containers().container("calculationservice").port(8080);
calculationServiceURL = String.format("http://%s:%s", calculationService.getIp(),
calculationService.getExternalPort());
- while (!docker.containers().container("calculationservice").portIsListeningOnHttp(8080,
- (port) -> port.inFormat(calculationServiceURL)).succeeded()) {
+ int tryCount = 0;
+ while (!docker.containers().container("calculationservice")
+ .portIsListeningOnHttp(8080, (port) -> port.inFormat(calculationServiceURL)).succeeded()) {
+ tryCount++;
LOG.info("Waiting for calculation service to respond over HTTP");
+ if (tryCount == MAX_HEALTH_CHECK_TRIES) {
+ LOG.error("Error. Max tries (" + tryCount
+ + ") for health checks on calculationservice reached.\n Calculation Service needs to register "
+ + "with Eureka before serving on designated port.");
+ System.exit(100);
+ }
}
LOG.info("Calculation Service url found: " + calculationServiceURL);
-
- DockerPort userService = docker.containers().container("userservice")
- .port(8080);
- userServiceURL = String.format("http://%s:%s", userService.getIp(),
- userService.getExternalPort());
- while (!docker.containers().container("userservice").portIsListeningOnHttp(8080,
- (port) -> port.inFormat(userServiceURL)).succeeded()) {
+ LOG.warn("Calculation Service tryCount: " + tryCount);
+ System.out.println("********************************************");
+ System.out.println("Calculation Service tryCount: " + tryCount);
+ System.out.println("********************************************");
+
+ DockerPort userService = docker.containers().container("userservice").port(8080);
+ userServiceURL = String.format("http://%s:%s", userService.getIp(), userService.getExternalPort());
+ tryCount = 0;
+ while (!docker.containers().container("userservice")
+ .portIsListeningOnHttp(8080, (port) -> port.inFormat(userServiceURL)).succeeded()) {
+ tryCount++;
LOG.info("Waiting for user service to respond over HTTP");
+ if (tryCount == MAX_HEALTH_CHECK_TRIES) {
+ LOG.error("Error. Max tries (" + tryCount + ") for health checks on userservice reached.");
+ System.exit(100);
+ }
}
LOG.info("User Service url found: " + userServiceURL);
+ LOG.warn("User Service tryCount: " + tryCount);
+ System.out.println("********************************************");
+ System.out.println("User Service tryCount: " + tryCount);
+ System.out.println("********************************************");
}
private TestRestTemplate restTemplate = new TestRestTemplate();
private String token;
- private String tripId;
@Before
- public void setUp() throws JSONException {
+ public void setUp() throws JSONException, IOException {
String plainCreds = "front-end:front-end";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.getEncoder().encode(plainCredsBytes);
@@ -116,111 +141,117 @@ public void setUp() throws JSONException {
String body = "grant_type=password&scope=webclient&username=passenger&password=password";
HttpEntity request = new HttpEntity<>(body, headers);
- //when:
- ResponseEntity response = restTemplate.postForEntity(userServiceURL + "/auth/oauth/token",
- request, String.class, parameters);
+ // when:
+ ResponseEntity response = restTemplate.postForEntity(userServiceURL + "/auth/oauth/token", request,
+ String.class, parameters);
- //then:
+ // then:
assertThat(response.getStatusCodeValue()).isEqualTo(200);
JSONObject json = new JSONObject(response.getBody());
token = json.getString("access_token");
}
-
@Test
public void tripCommandPOSTRequestSuccess() {
- //given:
+ // given:
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
String body = "{ \"originAddress\": \"Weston, FL\", \"destinationAddress\": "
- + "\"Miami, FL\", \"userId\": \"123e4567-e89b-12d3-a456-426655440000\" }";
+ + "\"Miami, FL\", \"userId\": \"4eaf29bc-3909-49d4-a104-3d17f68ba672\" }";
HttpEntity request = new HttpEntity<>(body, headers);
- //when:
+ // when:
ResponseEntity response = restTemplate.postForEntity(tripCommandURL + "/api/v1/trip", request,
String.class);
- //then:
+ // then:
assertThat(response.getStatusCodeValue()).isEqualTo(201);
}
@Test
- public void tripQueryGETSpecificTripRequestSuccess() throws JSONException {
- //given:
+ public void tripQueryGETSpecificTripRequestSuccess() throws JSONException, InterruptedException {
+ // given:
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
String body = "{ \"originAddress\": \"Weston, FL\", \"destinationAddress\": "
- + "\"Miami, FL\", \"userId\": \"123e4567-e89b-12d3-a456-426655440000\" }";
+ + "\"Miami, FL\", \"userId\": \"4eaf29bc-3909-49d4-a104-3d17f68ba672\" }";
HttpEntity request = new HttpEntity<>(body, headers);
ResponseEntity postResponse = restTemplate.postForEntity(tripCommandURL + "/api/v1/trip", request,
String.class);
+
assertThat(postResponse.getStatusCodeValue()).isEqualTo(201);
JSONObject json = new JSONObject(postResponse.getBody());
- tripId = json.getString("id");
+ String tripId = json.getString("id");
+
+ Thread.sleep(1000);
- //when:
+ // when:
ResponseEntity response = restTemplate.getForEntity(tripQueryURL + "/api/v1/trip/" + tripId,
String.class);
- //then:
+ // then:
assertThat(response.getStatusCodeValue()).isEqualTo(200);
}
@Test
public void tripQueryGETAllTripsRequestSuccess() {
- //given:
+ // given:
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
- //when:
+ // when:
ResponseEntity response = restTemplate.getForEntity(tripQueryURL + "/api/v1/trips", String.class);
- //then:
+ // then:
assertThat(response.getStatusCodeValue()).isEqualTo(200);
}
@Test
public void calculationServiceRequestSuccess() {
- //given:
+ // given:
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
- String body = "{ \"origin\": \"Weston, FL\", \"destination\": \"Miami, FL\" }";
+ String body = "{ \"origin\": \"Weston, FL\", \"destination\": \"Miami, FL\","
+ + " \"userId\": \"4eaf29bc-3909-49d4-a104-3d17f68ba672\" }";
HttpEntity request = new HttpEntity<>(body, headers);
- //when:
+ // when:
ResponseEntity response = restTemplate.postForEntity(calculationServiceURL + "/api/v1/cost", request,
String.class);
- //then:
+ // then:
assertThat(response.getStatusCodeValue()).isEqualTo(200);
-
}
@Test
- public void gmapsAdapterRequestSuccess() {
- //given:
+ public void gmapsAdapterRequestSuccess() throws Exception {
+ // given:
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
- String body = "{ \"origin\": \"Weston, FL\", \"destination\": \"Miami, FL\","
- + " \"departureTime\": \"15220998650000000\" }";
+ String body = "{ \"origin\": \"2250 N Commerce Pkwy, Weston, FL 33326\", \"destination\": \"11200 SW 8th St, "
+ + "Miami, FL 33199\", \"departureTime\": \"15220998650000000\" }";
HttpEntity request = new HttpEntity<>(body, headers);
- //when:
+ // when:
ResponseEntity response = restTemplate.postForEntity(gmapsAdapterURL + "/api/v1/directions", request,
String.class);
- //then:
- assertThat(response.getStatusCodeValue()).isEqualTo(200);
+ if (response.getStatusCodeValue() != 200) {
+ throw new Exception(
+ String.format("Expected 200, actual %s\n%s", response.getStatusCode(), response.getBody()));
+ }
+ // then:
+ assertThat(response.getStatusCodeValue()).isEqualTo(200);
}
}
diff --git a/src/test/resources/docker-compose-calculation.yml b/src/test/resources/docker-compose-calculation.yml
new file mode 100644
index 0000000..26c4474
--- /dev/null
+++ b/src/test/resources/docker-compose-calculation.yml
@@ -0,0 +1,62 @@
+version: '2.3'
+
+services:
+
+ discoveryservice:
+ image: aista/eureka
+ container_name: 'discoveryservice'
+ mem_limit: 512M
+ ports:
+ - "8761:8761"
+
+ mongo:
+ image: 'mongo:3.4.1'
+ container_name: 'mongo'
+ mem_limit: 512M
+ ports:
+ - '27017:27017'
+ volumes:
+ - 'mongo:/data/db'
+
+ rabbitmq:
+ image: rabbitmq:management
+ container_name: 'rabbitmq'
+ mem_limit: 512M
+ ports:
+ - "5672:5672"
+ - "15672:15672"
+
+ gmapsadapter:
+ image: aista/gmaps-adapter
+ container_name: 'gmapsadapter'
+ mem_limit: 512M
+ environment:
+ - EUREKA_SERVER=discoveryservice
+ - RABBIT_HOST=rabbitmq
+ ports:
+ - '8080'
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+ calculationservice:
+ image: aista/calculation-service
+ container_name: 'calculationservice'
+ mem_limit: 512M
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - EUREKA_SERVER=discoveryservice
+ - MONGO_HOST=mongo
+ - MONGO_PORT=27017
+ command: ["go", "run", "main.go"]
+ ports:
+ - '8080'
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ - mongo
+
+volumes:
+ mongo:
\ No newline at end of file
diff --git a/src/test/resources/docker-compose-gmaps-adapter.yml b/src/test/resources/docker-compose-gmaps-adapter.yml
new file mode 100644
index 0000000..943e15d
--- /dev/null
+++ b/src/test/resources/docker-compose-gmaps-adapter.yml
@@ -0,0 +1,33 @@
+version: '2.3'
+
+services:
+
+ discoveryservice:
+ image: aista/eureka
+ container_name: 'discoveryservice'
+ mem_limit: 512M
+ ports:
+ - "8761:8761"
+
+ rabbitmq:
+ image: rabbitmq:management
+ container_name: 'rabbitmq'
+ mem_limit: 512M
+ ports:
+ - "5672:5672"
+ - "15672:15672"
+
+ gmapsadapter:
+ image: aista/gmaps-adapter
+ container_name: 'gmapsadapter'
+ mem_limit: 512M
+ environment:
+ - EUREKA_SERVER=discoveryservice
+ - RABBIT_HOST=rabbitmq
+ ports:
+ - '8080'
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
diff --git a/src/test/resources/docker-compose-trip-cmd-query.yml b/src/test/resources/docker-compose-trip-cmd-query.yml
new file mode 100644
index 0000000..94eb577
--- /dev/null
+++ b/src/test/resources/docker-compose-trip-cmd-query.yml
@@ -0,0 +1,91 @@
+version: '2.3'
+
+services:
+
+ discoveryservice:
+ image: aista/eureka
+ container_name: discoveryservice
+ mem_limit: 512M
+ ports:
+ - "8761:8761"
+
+ mysqlserver:
+ image: mysql:5.7
+ container_name: mysqlserver
+ mem_limit: 512M
+ volumes:
+ - mysql-data:/var/lib/mysql:rw
+ restart: always
+ ports:
+ - '3306:3306'
+ environment:
+ MYSQL_USER:
+ MYSQL_PASSWORD:
+ MYSQL_ROOT_PASSWORD: 'root'
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
+ MYSQL_DATABASE: 'user_service'
+
+ userservice:
+ image: aista/user-service
+ container_name: userservice
+ mem_limit: 512M
+ depends_on:
+ - discoveryservice
+ - mysqlserver
+ ports:
+ - '8080'
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+ mongo:
+ image: 'mongo:3.4.1'
+ container_name: 'mongo'
+ mem_limit: 512M
+ ports:
+ - '27017:27017'
+ volumes:
+ - 'mongo:/data/db'
+
+ rabbitmq:
+ image: rabbitmq:management
+ container_name: 'rabbitmq'
+ mem_limit: 512M
+ ports:
+ - "5672:5672"
+ - "15672:15672"
+
+ tripmanagementcmd:
+ image: aista/trip-management-cmd
+ container_name: tripmanagementcmd
+ mem_limit: 512M
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - MONGO_HOST=mongo
+ ports:
+ - '8080'
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ - mongo
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+ tripmanagementquery:
+ image: aista/trip-management-query
+ container_name: tripmanagementquery
+ mem_limit: 512M
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - MONGO_HOST=mongo
+ ports:
+ - '8080'
+ depends_on:
+ - rabbitmq
+ - mongo
+ - discoveryservice
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+volumes:
+ mongo:
+ mysql-data:
\ No newline at end of file
diff --git a/src/test/resources/docker-compose-trip-cmd.yml b/src/test/resources/docker-compose-trip-cmd.yml
new file mode 100644
index 0000000..ea54c58
--- /dev/null
+++ b/src/test/resources/docker-compose-trip-cmd.yml
@@ -0,0 +1,75 @@
+version: '2.3'
+
+services:
+
+ discoveryservice:
+ image: aista/eureka
+ container_name: 'discoveryservice'
+ mem_limit: 512M
+ ports:
+ - "8761:8761"
+
+ mysqlserver:
+ image: mysql:5.7
+ container_name: 'mysqlserver'
+ mem_limit: 512M
+ volumes:
+ - mysql-data:/var/lib/mysql:rw
+ restart: always
+ ports:
+ - '3306:3306'
+ environment:
+ MYSQL_USER:
+ MYSQL_PASSWORD:
+ MYSQL_ROOT_PASSWORD: 'root'
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
+ MYSQL_DATABASE: 'user_service'
+
+ userservice:
+ image: aista/user-service
+ container_name: userservice
+ mem_limit: 512M
+ depends_on:
+ - discoveryservice
+ - mysqlserver
+ ports:
+ - '8080'
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+ mongo:
+ image: 'mongo:3.4.1'
+ container_name: 'mongo'
+ mem_limit: 512M
+ ports:
+ - '27017:27017'
+ volumes:
+ - 'mongo:/data/db'
+
+ rabbitmq:
+ image: rabbitmq:management
+ container_name: 'rabbitmq'
+ mem_limit: 512M
+ ports:
+ - "5672:5672"
+ - "15672:15672"
+
+ tripmanagementcmd:
+ image: aista/trip-management-cmd
+ container_name: tripmanagementcmd
+ mem_limit: 512M
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - MONGO_HOST=mongo
+ ports:
+ - '8080'
+ depends_on:
+ - discoveryservice
+ - rabbitmq
+ - mongo
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+volumes:
+ mongo:
+ mysql-data:
\ No newline at end of file
diff --git a/src/test/resources/docker-compose-trip-query.yml b/src/test/resources/docker-compose-trip-query.yml
new file mode 100644
index 0000000..f9370c2
--- /dev/null
+++ b/src/test/resources/docker-compose-trip-query.yml
@@ -0,0 +1,75 @@
+version: '2.3'
+
+services:
+
+ discoveryservice:
+ image: aista/eureka
+ container_name: discoveryservice
+ mem_limit: 512M
+ ports:
+ - "8761:8761"
+
+ mysqlserver:
+ image: mysql:5.7
+ container_name: mysqlserver
+ mem_limit: 512M
+ volumes:
+ - mysql-data:/var/lib/mysql:rw
+ restart: always
+ ports:
+ - '3306:3306'
+ environment:
+ MYSQL_USER:
+ MYSQL_PASSWORD:
+ MYSQL_ROOT_PASSWORD: 'root'
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
+ MYSQL_DATABASE: 'user_service'
+
+ userservice:
+ image: aista/user-service
+ container_name: userservice
+ mem_limit: 512M
+ depends_on:
+ - discoveryservice
+ - mysqlserver
+ ports:
+ - '8080'
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+ mongo:
+ image: 'mongo:3.4.1'
+ container_name: 'mongo'
+ mem_limit: 512M
+ ports:
+ - '27017:27017'
+ volumes:
+ - 'mongo:/data/db'
+
+ rabbitmq:
+ image: rabbitmq:management
+ container_name: 'rabbitmq'
+ mem_limit: 512M
+ ports:
+ - "5672:5672"
+ - "15672:15672"
+
+ tripmanagementquery:
+ image: aista/trip-management-query
+ container_name: tripmanagementquery
+ mem_limit: 512M
+ environment:
+ - RABBIT_HOST=rabbitmq
+ - MONGO_HOST=mongo
+ ports:
+ - '8080'
+ depends_on:
+ - rabbitmq
+ - mongo
+ - discoveryservice
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
+
+volumes:
+ mongo:
+ mysql-data:
\ No newline at end of file
diff --git a/src/test/resources/docker-compose.yml b/src/test/resources/docker-compose.yml
index 9c53a4c..d22af15 100644
--- a/src/test/resources/docker-compose.yml
+++ b/src/test/resources/docker-compose.yml
@@ -1,14 +1,18 @@
-version: '3'
+version: '2.3'
services:
discoveryservice:
image: aista/eureka
+ container_name: discoveryservice
+ mem_limit: 512M
ports:
- "8761:8761"
mysqlserver:
image: mysql:5.7
+ container_name: mysqlserver
+ mem_limit: 512M
volumes:
- mysql-data:/var/lib/mysql:rw
restart: always
@@ -24,15 +28,22 @@ services:
userservice:
image: aista/user-service
container_name: userservice
+ mem_limit: 512M
depends_on:
- discoveryservice
- mysqlserver
+ links:
+ - discoveryservice
+ - mysqlserver
ports:
- '8080'
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
mongo:
image: 'mongo:3.4.1'
- container_name: 'mongo'
+ container_name: mongo
+ mem_limit: 512M
ports:
- '27017:27017'
volumes:
@@ -40,13 +51,16 @@ services:
rabbitmq:
image: rabbitmq:management
- container_name: 'rabbitmq'
+ container_name: rabbitmq
+ mem_limit: 512M
ports:
- "5672:5672"
- "15672:15672"
tripmanagementcmd:
image: aista/trip-management-cmd
+ container_name: tripmanagementcmd
+ mem_limit: 512M
environment:
- RABBIT_HOST=rabbitmq
- MONGO_HOST=mongo
@@ -56,9 +70,17 @@ services:
- discoveryservice
- rabbitmq
- mongo
+ links:
+ - discoveryservice
+ - rabbitmq
+ - mongo
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
tripmanagementquery:
image: aista/trip-management-query
+ container_name: tripmanagementquery
+ mem_limit: 512M
environment:
- RABBIT_HOST=rabbitmq
- MONGO_HOST=mongo
@@ -68,26 +90,51 @@ services:
- rabbitmq
- mongo
- discoveryservice
+ links:
+ - rabbitmq
+ - mongo
+ - discoveryservice
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
gmapsadapter:
image: aista/gmaps-adapter
+ container_name: gmapsadapter
+ mem_limit: 512M
environment:
- EUREKA_SERVER=discoveryservice
+ - RABBIT_HOST=rabbitmq
ports:
- '8080'
depends_on:
- discoveryservice
+ - rabbitmq
+ links:
+ - discoveryservice
+ - rabbitmq
+ environment:
+ - JAVA_OPTS=-Xms64m -Xmx128m -XX:+UseG1GC
calculationservice:
image: aista/calculation-service
+ container_name: calculationservice
+ mem_limit: 512M
environment:
+ - RABBIT_HOST=rabbitmq
- EUREKA_SERVER=discoveryservice
- command: ["go", "run", "main.go"]
+ - MONGO_HOST=mongo
+ - MONGO_PORT=27017
ports:
- '8080'
depends_on:
- discoveryservice
+ - rabbitmq
+ - mongo
+ links:
+ - discoveryservice
+ - rabbitmq
+ - mongo
volumes:
mongo:
- mysql-data:
\ No newline at end of file
+ mysql-data: