Skip to content

Commit 2a19f6e

Browse files
salaboysiri-varmasvegiraju-microsoftartur-ciocanucicoyle
committed
Update docker version for CI to fix flaky tests (dapr#1276)
* update docker version for ci Signed-off-by: salaboy <[email protected]> * adding DOCKER_HOST to all tests Signed-off-by: salaboy <[email protected]> * Move dependency management and plugin management to parent pom (dapr#1260) * Clean up pom Signed-off-by: sirivarma <[email protected]> * downgrade dependency Signed-off-by: sirivarma <[email protected]> * Fix Signed-off-by: sirivarma <[email protected]> * Fix thigns Signed-off-by: sirivarma <[email protected]> * Fix class not found Signed-off-by: sirivarma <[email protected]> * Remove import Signed-off-by: sirivarma <[email protected]> * Address comments Signed-off-by: Siri Varma Vegiraju <[email protected]> * cleanup Signed-off-by: Siri Varma Vegiraju <[email protected]> * Fix deps Signed-off-by: siri-varma <[email protected]> * cleanup Signed-off-by: Siri Varma Vegiraju <[email protected]> Signed-off-by: siri-varma <[email protected]> * Fix deps Signed-off-by: siri-varma <[email protected]> * Fix things Signed-off-by: siri-varma <[email protected]> * Fix finals Signed-off-by: siri-varma <[email protected]> * Fix finals Signed-off-by: siri-varma <[email protected]> * upgrade test containers to .5 Signed-off-by: sirivarma <[email protected]> * This is it Signed-off-by: sirivarma <[email protected]> * Fix feedback Signed-off-by: sirivarma <[email protected]> * Add comment Signed-off-by: sirivarma <[email protected]> * Add comment Signed-off-by: sirivarma <[email protected]> * Change to properties Signed-off-by: sirivarma <[email protected]> --------- Signed-off-by: sirivarma <[email protected]> Signed-off-by: Siri Varma Vegiraju <[email protected]> Signed-off-by: siri-varma <[email protected]> Co-authored-by: Siri Varma Vegiraju <[email protected]> Co-authored-by: salaboy <[email protected]> Co-authored-by: artur-ciocanu <[email protected]> Co-authored-by: Cassie Coyle <[email protected]> Signed-off-by: salaboy <[email protected]> * fixing flaky docker network Signed-off-by: salaboy <[email protected]> --------- Signed-off-by: salaboy <[email protected]> Signed-off-by: sirivarma <[email protected]> Signed-off-by: Siri Varma Vegiraju <[email protected]> Signed-off-by: siri-varma <[email protected]> Co-authored-by: Siri Varma Vegiraju <[email protected]> Co-authored-by: Siri Varma Vegiraju <[email protected]> Co-authored-by: artur-ciocanu <[email protected]> Co-authored-by: Cassie Coyle <[email protected]> Signed-off-by: salaboy <[email protected]>
1 parent ef7b7e7 commit 2a19f6e

File tree

4 files changed

+113
-59
lines changed

4 files changed

+113
-59
lines changed

.github/workflows/build.yml

+9
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ jobs:
4545
DAPR_REF:
4646
TOXIPROXY_URL: https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy-server-linux-amd64
4747
steps:
48+
- name: Install Stable Docker
49+
id: setup_docker
50+
uses: docker/setup-docker-action@v4
51+
- name: Check Docker version
52+
run: docker version
4853
- uses: actions/checkout@v4
4954
- name: Set up OpenJDK ${{ env.JDK_VER }}
5055
uses: actions/setup-java@v4
@@ -113,13 +118,17 @@ jobs:
113118
run: ./mvnw compile -B -q
114119
- name: Unit tests
115120
run: ./mvnw test # making it temporarily verbose.
121+
env:
122+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
116123
- name: Codecov
117124
uses: codecov/[email protected]
118125
- name: Install jars
119126
run: ./mvnw install -q -B -DskipTests
120127
- name: Integration tests using spring boot version ${{ matrix.spring-boot-version }}
121128
id: integration_tests
122129
run: PRODUCT_SPRING_BOOT_VERSION=${{ matrix.spring-boot-version }} ./mvnw -B -Pintegration-tests verify
130+
env:
131+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
123132
- name: Upload test report for sdk
124133
uses: actions/upload-artifact@v4
125134
with:

.github/workflows/validate.yml

+38-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ jobs:
4949
with:
5050
distribution: 'temurin'
5151
java-version: ${{ env.JDK_VER }}
52+
- name: Install Stable Docker
53+
id: setup_docker
54+
uses: docker/setup-docker-action@v4
55+
- name: Check Docker version
56+
run: docker version
5257
- name: Set up Dapr CLI
5358
run: wget -q ${{ env.DAPR_INSTALL_URL }} -O - | /bin/bash -s ${{ env.DAPR_CLI_VER }}
5459
- name: Set up Go ${{ env.GOVER }}
@@ -108,63 +113,95 @@ jobs:
108113
run: ./mvnw compile -q
109114
- name: Install jars
110115
run: ./mvnw install -q
116+
env:
117+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
111118
- name: Validate invoke http example
112119
working-directory: ./examples
113120
run: |
114121
mm.py ./src/main/java/io/dapr/examples/invoke/http/README.md
122+
env:
123+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
115124
- name: Validate invoke grpc example
116125
working-directory: ./examples
117126
run: |
118127
mm.py ./src/main/java/io/dapr/examples/invoke/grpc/README.md
128+
env:
129+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
119130
- name: Validate tracing example
120131
working-directory: ./examples
121132
run: |
122133
mm.py ./src/main/java/io/dapr/examples/tracing/README.md
134+
env:
135+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
123136
- name: Validate expection handling example
124137
working-directory: ./examples
125138
run: |
126139
mm.py ./src/main/java/io/dapr/examples/exception/README.md
140+
env:
141+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
127142
- name: Validate state example
128143
working-directory: ./examples
129144
run: |
130145
mm.py ./src/main/java/io/dapr/examples/state/README.md
146+
env:
147+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
131148
- name: Validate pubsub example
132149
working-directory: ./examples
133150
run: |
134151
mm.py ./src/main/java/io/dapr/examples/pubsub/README.md
152+
env:
153+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
135154
- name: Validate bindings HTTP example
136155
working-directory: ./examples
137156
run: |
138157
mm.py ./src/main/java/io/dapr/examples/bindings/http/README.md
158+
env:
159+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
139160
- name: Validate secrets example
140161
working-directory: ./examples
141162
run: |
142163
mm.py ./src/main/java/io/dapr/examples/secrets/README.md
164+
env:
165+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
143166
- name: Validate unit testing example
144167
working-directory: ./examples
145168
run: |
146169
mm.py ./src/main/java/io/dapr/examples/unittesting/README.md
170+
env:
171+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
147172
- name: Validate Configuration API example
148173
working-directory: ./examples
149174
run: |
150175
mm.py ./src/main/java/io/dapr/examples/configuration/README.md
176+
env:
177+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
151178
- name: Validate actors example
152179
working-directory: ./examples
153180
run: |
154181
mm.py ./src/main/java/io/dapr/examples/actors/README.md
182+
env:
183+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
155184
- name: Validate query state HTTP example
156185
working-directory: ./examples
157186
run: |
158187
mm.py ./src/main/java/io/dapr/examples/querystate/README.md
188+
env:
189+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
159190
- name: Validate workflows example
160191
working-directory: ./examples
161192
run: |
162193
mm.py ./src/main/java/io/dapr/examples/workflows/README.md
194+
env:
195+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
163196
- name: Validate streaming subscription example
164197
working-directory: ./examples
165198
run: |
166199
mm.py ./src/main/java/io/dapr/examples/pubsub/stream/README.md
200+
env:
201+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
167202
- name: Validate Spring Boot examples
168203
working-directory: ./spring-boot-examples
169204
run: |
170-
mm.py README.md
205+
mm.py README.md
206+
env:
207+
DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}

spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java

+38-34
Original file line numberDiff line numberDiff line change
@@ -35,42 +35,47 @@
3535
public class DaprTestContainersConfig {
3636

3737
@Bean
38-
public Network getNetwork() {
39-
Network defaultDaprNetwork = new Network() {
40-
@Override
41-
public String getId() {
42-
return "dapr-network";
43-
}
38+
public Network getDaprNetwork(Environment env) {
39+
boolean reuse = env.getProperty("reuse", Boolean.class, false);
40+
if (reuse) {
41+
Network defaultDaprNetwork = new Network() {
42+
@Override
43+
public String getId() {
44+
return "dapr-network";
45+
}
4446

45-
@Override
46-
public void close() {
47+
@Override
48+
public void close() {
4749

48-
}
50+
}
4951

50-
@Override
51-
public Statement apply(Statement base, Description description) {
52-
return null;
53-
}
54-
};
52+
@Override
53+
public Statement apply(Statement base, Description description) {
54+
return null;
55+
}
56+
};
5557

56-
List<com.github.dockerjava.api.model.Network> networks = DockerClientFactory.instance().client().listNetworksCmd()
57-
.withNameFilter("dapr-network").exec();
58-
if (networks.isEmpty()) {
59-
Network.builder().createNetworkCmdModifier(cmd -> cmd.withName("dapr-network")).build().getId();
60-
return defaultDaprNetwork;
58+
List<com.github.dockerjava.api.model.Network> networks = DockerClientFactory.instance().client().listNetworksCmd()
59+
.withNameFilter("dapr-network").exec();
60+
if (networks.isEmpty()) {
61+
Network.builder().createNetworkCmdModifier(cmd -> cmd.withName("dapr-network")).build().getId();
62+
return defaultDaprNetwork;
63+
} else {
64+
return defaultDaprNetwork;
65+
}
6166
} else {
62-
return defaultDaprNetwork;
67+
return Network.newNetwork();
6368
}
6469
}
6570

6671
@Bean
6772
public RabbitMQContainer rabbitMQContainer(Network daprNetwork, Environment env) {
6873
boolean reuse = env.getProperty("reuse", Boolean.class, false);
6974
return new RabbitMQContainer(DockerImageName.parse("rabbitmq:3.7.25-management-alpine"))
70-
.withExposedPorts(5672)
71-
.withNetworkAliases("rabbitmq")
72-
.withReuse(reuse)
73-
.withNetwork(daprNetwork);
75+
.withExposedPorts(5672)
76+
.withNetworkAliases("rabbitmq")
77+
.withReuse(reuse)
78+
.withNetwork(daprNetwork);
7479
}
7580

7681
@Bean
@@ -83,16 +88,15 @@ public DaprContainer daprContainer(Network daprNetwork, RabbitMQContainer rabbit
8388
rabbitMqProperties.put("password", "guest");
8489

8590
return new DaprContainer("daprio/daprd:1.14.4")
86-
.withAppName("consumer-app")
87-
.withNetwork(daprNetwork).withComponent(new Component("pubsub",
88-
"pubsub.rabbitmq", "v1", rabbitMqProperties))
89-
.withDaprLogLevel(DaprLogLevel.INFO)
90-
.withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String()))
91-
.withAppPort(8081).withAppChannelAddress("host.testcontainers.internal")
92-
.withReusablePlacement(reuse)
93-
.withAppHealthCheckPath("/actuator/health")
94-
.dependsOn(rabbitMQContainer);
91+
.withAppName("consumer-app")
92+
.withNetwork(daprNetwork).withComponent(new Component("pubsub",
93+
"pubsub.rabbitmq", "v1", rabbitMqProperties))
94+
.withDaprLogLevel(DaprLogLevel.INFO)
95+
.withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String()))
96+
.withAppPort(8081).withAppChannelAddress("host.testcontainers.internal")
97+
.withReusablePlacement(reuse)
98+
.withAppHealthCheckPath("/actuator/health")
99+
.dependsOn(rabbitMQContainer);
95100
}
96101

97-
98102
}

spring-boot-examples/producer-app/src/test/java/io/dapr/springboot/examples/producer/DaprTestContainersConfig.java

+28-24
Original file line numberDiff line numberDiff line change
@@ -44,32 +44,36 @@ public class DaprTestContainersConfig {
4444

4545

4646
@Bean
47-
public Network getNetwork() {
48-
Network defaultDaprNetwork = new Network() {
49-
@Override
50-
public String getId() {
51-
return "dapr-network";
52-
}
53-
54-
@Override
55-
public void close() {
56-
57-
}
58-
59-
@Override
60-
public Statement apply(Statement base, Description description) {
61-
return null;
47+
public Network getDaprNetwork(Environment env) {
48+
boolean reuse = env.getProperty("reuse", Boolean.class, false);
49+
if (reuse) {
50+
Network defaultDaprNetwork = new Network() {
51+
@Override
52+
public String getId() {
53+
return "dapr-network";
54+
}
55+
56+
@Override
57+
public void close() {
58+
59+
}
60+
61+
@Override
62+
public Statement apply(Statement base, Description description) {
63+
return null;
64+
}
65+
};
66+
67+
List<com.github.dockerjava.api.model.Network> networks = DockerClientFactory.instance().client().listNetworksCmd()
68+
.withNameFilter("dapr-network").exec();
69+
if (networks.isEmpty()) {
70+
Network.builder().createNetworkCmdModifier(cmd -> cmd.withName("dapr-network")).build().getId();
71+
return defaultDaprNetwork;
72+
} else {
73+
return defaultDaprNetwork;
6274
}
63-
};
64-
65-
List<com.github.dockerjava.api.model.Network> networks = DockerClientFactory.instance().client().listNetworksCmd().withNameFilter("dapr-network").exec();
66-
if (networks.isEmpty()) {
67-
Network.builder()
68-
.createNetworkCmdModifier(cmd -> cmd.withName("dapr-network"))
69-
.build().getId();
70-
return defaultDaprNetwork;
7175
} else {
72-
return defaultDaprNetwork;
76+
return Network.newNetwork();
7377
}
7478
}
7579

0 commit comments

Comments
 (0)