Skip to content

Commit f226587

Browse files
committed
Harden ITs
- increase Postgres max-connection configuration to mitigate Task test issue. - Fix the influx analytics test to avoid out of order test fixture. - stream line the docker-compose files to reduce repetition.
1 parent 69a0089 commit f226587

File tree

11 files changed

+58
-33
lines changed

11 files changed

+58
-33
lines changed

spring-cloud-dataflow-server/README.adoc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,11 @@ With the help of the `TestProperties` properties one can change the docker-compo
152152
SCDF, Skipper servers installed, or the versions Stream and Task apps:
153153

154154
----
155-
./mvnw clean test-compile failsafe:integration-test -pl spring-cloud-dataflow-server -Pfailsafe
156-
-Dtest.docker.compose.paths=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-influxdb.yml,../src/docker-compose/docker-compose-postgres.yml,../src/docker-compose/docker-compose-rabbitmq.yml
157-
-Dtest.docker.compose.stream.apps.uri=https://dataflow.spring.io/rabbitmq-maven-latest
158-
-Dtest.docker.compose.dataflow.version=2.8.0-SNAPSHOT
159-
-Dtest.docker.compose.skipper.version=2.7.0-SNAPSHOT
155+
./mvnw clean test-compile failsafe:integration-test -pl spring-cloud-dataflow-server -Pfailsafe \
156+
-Dtest.docker.compose.paths=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-influxdb.yml,../src/docker-compose/docker-compose-postgres.yml,../src/docker-compose/docker-compose-rabbitmq.yml \
157+
-Dtest.docker.compose.stream.apps.uri=https://dataflow.spring.io/rabbitmq-maven-latest \
158+
-Dtest.docker.compose.dataflow.version=2.8.0-SNAPSHOT \
159+
-Dtest.docker.compose.skipper.version=2.7.0-SNAPSHOT \
160160
----
161161
The `test.docker.compose.paths` property accepts comma separated list of docker compose file names and supports `file:`, `classpath:`, and `http:`/`https:` URI schemas. If the schema prefix is not explicitly set, the file is treated as local one.
162162

spring-cloud-dataflow-server/src/test/java/org/springframework/cloud/dataflow/integration/test/DataFlowIT.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
import org.springframework.util.StreamUtils;
7878
import org.springframework.web.client.RestTemplate;
7979

80-
8180
import static org.assertj.core.api.Assertions.assertThat;
8281
import static org.junit.jupiter.api.Assertions.assertThrows;
8382
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -644,9 +643,9 @@ public void analyticsCounter() {
644643

645644
Awaitility.await().until(() -> stream.getStatus().equals(DEPLOYED));
646645

647-
String message1 = "Test message 1";
648-
String message2 = "Test message 2 with extension";
649-
String message3 = "Test message 2 with double extension";
646+
String message1 = "Test message 1"; // length 14
647+
String message2 = "Test message 2 with extension"; // length 29
648+
String message3 = "Test message 2 with double extension"; // length 36
650649

651650
String httpAppUrl = runtimeApps.getApplicationInstanceUrl(stream.getName(), "http");
652651
httpPost(httpAppUrl, message1);
@@ -684,14 +683,14 @@ public void analyticsCounter() {
684683
.inPath("$.results[0].series[0].values[1][0]")
685684
.isEqualTo("myinfluxdb");
686685

686+
List<String> messageLengths = java.util.stream.Stream.of(message1, message2, message3)
687+
.map(s -> String.format("\"%s\"", s.length())).collect(Collectors.toList());
688+
687689
// http://localhost:8086/query?db=myinfluxdb&q=SELECT%20%2A%20FROM%20%22my_http_counter%22
688690
String myHttpCounter = httpGet(testProperties.getInfluxUrl() + "/query?db=myinfluxdb&q=SELECT * FROM \"my_http_analytics\"");
689-
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[0][7]")
690-
.isEqualTo(String.format("\"%s\"", message1.length()));
691-
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[1][7]")
692-
.isEqualTo(String.format("\"%s\"", message2.length()));
693-
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[2][7]")
694-
.isEqualTo(String.format("\"%s\"", message3.length()));
691+
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[0][7]").isIn(messageLengths);
692+
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[1][7]").isIn(messageLengths);
693+
JsonAssertions.assertThatJson(myHttpCounter).inPath("$.results[0].series[0].values[2][7]").isIn(messageLengths);
695694
});
696695
}
697696
}

spring-cloud-dataflow-server/src/test/resources/docker-compose-it.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
version: '3'
22

3+
# Used by the CI runs to ensures that that DooD containers use the parent docker configuration and therefore
4+
# reusing the parent DockerHub credentials.
35
services:
46
dataflow-server:
57
environment:

src/docker-compose/docker-compose-dood.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,17 @@ services:
6464

6565
# Best effort to set default STREAM_APPS_URI and TASK_APPS_URI values. But because those can be overridden by other
6666
# composition YAMLs, it is highly recommended to set the STREAM_APPS_URI and TASK_APPS_URI explicitly!
67-
app-import:
67+
app-import-stream:
6868
command: >
6969
/bin/sh -c "
7070
./wait-for-it.sh -t 360 dataflow-server:9393;
7171
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/kafka-docker-latest&force=true}';
72-
echo 'Docker Stream apps imported'
72+
echo 'Docker Stream apps imported'"
73+
74+
app-import-task:
75+
command: >
76+
/bin/sh -c "
77+
./wait-for-it.sh -t 360 dataflow-server:9393;
7378
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-docker-latest&force=true}';
7479
wget -qO- 'http://dataflow-server:9393/apps/task/scenario/0.0.1-SNAPSHOT' --post-data='uri=docker:springcloudtask/scenario-task:0.0.1-SNAPSHOT';
7580
echo 'Docker Task apps imported'"

src/docker-compose/docker-compose-postgres.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ services:
99

1010
postgres:
1111
image: postgres:10
12+
command: postgres -c 'max_connections=300'
1213
container_name: dataflow-postgres
1314
restart: always
1415
environment:

src/docker-compose/docker-compose-rabbitmq.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,10 @@ services:
2020
environment:
2121
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_RABBITMQ_HOST=rabbitmq
2222

23-
app-import:
23+
app-import-stream:
2424
command: >
2525
/bin/sh -c "
2626
./wait-for-it.sh -t 360 dataflow-server:9393;
2727
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/rabbitmq-maven-latest&force=true}';
28-
echo 'Stream apps imported'
29-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-maven-latest&force=true}';
30-
wget -qO- 'http://dataflow-server:9393/apps/task/scenario/0.0.1-SNAPSHOT' --post-data='uri=maven://io.spring:scenario-task:0.0.1-SNAPSHOT';
31-
echo 'Task apps imported'"
28+
echo 'Stream apps imported'"
3229

src/docker-compose/docker-compose.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ services:
8181
volumes:
8282
- ${HOST_MOUNT_PATH:-.}:${DOCKER_MOUNT_PATH:-/root/scdf}
8383

84-
app-import:
84+
app-import-stream:
8585
image: springcloud/baseimage:1.0.0
8686
container_name: dataflow-app-import
8787
depends_on:
@@ -90,7 +90,16 @@ services:
9090
/bin/sh -c "
9191
./wait-for-it.sh -t 360 dataflow-server:9393;
9292
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/kafka-maven-latest&force=true}';
93-
echo 'Maven Stream apps imported'
93+
echo 'Maven Stream apps imported'"
94+
95+
app-import-task:
96+
image: springcloud/baseimage:1.0.0
97+
container_name: dataflow-app-import
98+
depends_on:
99+
- dataflow-server
100+
command: >
101+
/bin/sh -c "
102+
./wait-for-it.sh -t 360 dataflow-server:9393;
94103
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-maven-latest&force=true}';
95104
wget -qO- 'http://dataflow-server:9393/apps/task/scenario/0.0.1-SNAPSHOT' --post-data='uri=maven://io.spring:scenario-task:0.0.1-SNAPSHOT';
96105
echo 'Maven Task apps imported'"

src/templates/docker-compose/docker-compose-dood.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,17 @@ services:
6464

6565
# Best effort to set default STREAM_APPS_URI and TASK_APPS_URI values. But because those can be overridden by other
6666
# composition YAMLs, it is highly recommended to set the STREAM_APPS_URI and TASK_APPS_URI explicitly!
67-
app-import:
67+
app-import-stream:
6868
command: >
6969
/bin/sh -c "
7070
./wait-for-it.sh -t 360 dataflow-server:9393;
7171
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/kafka-docker-latest&force=true}';
72-
echo 'Docker Stream apps imported'
72+
echo 'Docker Stream apps imported'"
73+
74+
app-import-task:
75+
command: >
76+
/bin/sh -c "
77+
./wait-for-it.sh -t 360 dataflow-server:9393;
7378
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-docker-latest&force=true}';
7479
wget -qO- 'http://dataflow-server:9393/apps/task/scenario/0.0.1-SNAPSHOT' --post-data='uri=docker:springcloudtask/scenario-task:0.0.1-SNAPSHOT';
7580
echo 'Docker Task apps imported'"

src/templates/docker-compose/docker-compose-postgres.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ services:
99

1010
postgres:
1111
image: postgres:10
12+
command: postgres -c 'max_connections=300'
1213
container_name: dataflow-postgres
1314
restart: always
1415
environment:

src/templates/docker-compose/docker-compose-rabbitmq.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,10 @@ services:
2020
environment:
2121
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_RABBITMQ_HOST=rabbitmq
2222

23-
app-import:
23+
app-import-stream:
2424
command: >
2525
/bin/sh -c "
2626
./wait-for-it.sh -t 360 dataflow-server:9393;
2727
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/rabbitmq-maven-latest&force=true}';
28-
echo 'Stream apps imported'
29-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-maven-latest&force=true}';
30-
wget -qO- 'http://dataflow-server:9393/apps/task/scenario/0.0.1-SNAPSHOT' --post-data='uri=maven://io.spring:scenario-task:0.0.1-SNAPSHOT';
31-
echo 'Task apps imported'"
28+
echo 'Stream apps imported'"
3229

0 commit comments

Comments
 (0)