Skip to content

Commit b93d532

Browse files
authored
Fixes problems with Keycloak in the CI (#739)
* Fixes problems with keycloak in the CI * Tries to fix kafka problem in SM Service * Fixes problem in kafka tests
1 parent 2b94c0d commit b93d532

6 files changed

Lines changed: 47 additions & 24 deletions

File tree

basyx.submodelservice/basyx.submodelservice-feature-kafka/src/test/java/org/eclipse/digitaltwin/basyx/submodelservice/feature/kafka/KafkaSubmodelServiceIdsOnlySmokeTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,20 @@ public class KafkaSubmodelServiceIdsOnlySmokeTest {
8888
@Before
8989
public void awaitAssignment() throws InterruptedException, SerializationException {
9090
listener.awaitTopicAssignment();
91+
92+
assertNoAdditionalMessage();
9193

9294
FileRepository repository = new InMemoryFileRepository();
9395
SubmodelBackend backend = new InMemorySubmodelBackend();
9496
SubmodelServiceFactory smFactory = new CrudSubmodelServiceFactory(backend ,repository);
9597
service = feature.decorate(smFactory).create(submodel);
9698
}
99+
100+
@After
101+
public void assertNoAdditionalMessage() throws InterruptedException {
102+
SubmodelEvent evt = listener.next(1, TimeUnit.SECONDS);
103+
Assert.assertNull(evt);
104+
}
97105

98106
@Test
99107
public void testToplevelSubmodelElementAdded() throws InterruptedException {

basyx.submodelservice/basyx.submodelservice-feature-kafka/src/test/java/org/eclipse/digitaltwin/basyx/submodelservice/feature/kafka/KafkaSubmodelServiceSubmodelElementsEventsIntegrationTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,20 @@ public class KafkaSubmodelServiceSubmodelElementsEventsIntegrationTest {
8989
@Before
9090
public void awaitAssignment() throws InterruptedException {
9191
listener.awaitTopicAssignment();
92+
93+
skipAdditionalMessage();
9294

9395
FileRepository repository = new InMemoryFileRepository();
9496
SubmodelBackend backend = new InMemorySubmodelBackend();
9597
SubmodelServiceFactory smFactory = new CrudSubmodelServiceFactory(backend ,repository);
9698
service = feature.decorate(smFactory).create(submodel);
9799
}
100+
101+
@After
102+
public void skipAdditionalMessage() throws InterruptedException {
103+
while(listener.next(1, TimeUnit.SECONDS) != null);
104+
105+
}
98106

99107
@Test
100108
public void testToplevelSubmodelElementAdded() throws InterruptedException, SerializationException {

basyx.submodelservice/basyx.submodelservice-feature-kafka/src/test/java/org/eclipse/digitaltwin/basyx/submodelservice/feature/kafka/KafkaSubmodelServiceSubmodelEventsIntegrationTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ public void awaitAssignment() throws InterruptedException {
8181
listener.awaitTopicAssignment();
8282
}
8383

84+
@After
85+
public void assertGotTearDownMessage() throws InterruptedException {
86+
SubmodelEvent evt = listener.next(1, TimeUnit.MINUTES);
87+
Assert.assertNull(evt);
88+
}
89+
8490
@Test
8591
public void testSubmodelEvents() throws InterruptedException {
8692
// we expect the "onStartup" submodel created event

ci/docker-compose.yml

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
version: "3.9"
21
services:
32

43
nginx-proxy:
@@ -16,18 +15,15 @@ services:
1615

1716
mongo:
1817
image: mongo:5.0.10
19-
# Provide mongo config
2018
restart: always
2119
environment:
2220
MONGO_INITDB_ROOT_USERNAME: mongoAdmin
2321
MONGO_INITDB_ROOT_PASSWORD: mongoPassword
24-
# Set health checks to wait until mongo has started
2522
healthcheck:
2623
test: mongo
2724
interval: 10s
2825
start_period: 5s
2926
retries: 5
30-
# Maps tcp port to host
3127
ports:
3228
- 27017:27017
3329
networks:
@@ -109,6 +105,9 @@ services:
109105
volumes:
110106
- ./keycloak/rules/rbac_rules-aas-discovery.json:/rbac/rbac_rules.json:ro
111107
restart: always
108+
depends_on:
109+
keycloak-healthcheck:
110+
condition: service_healthy
112111
networks:
113112
- basyx-java-server-sdk
114113

@@ -153,6 +152,9 @@ services:
153152
volumes:
154153
- ./keycloak/rules/rbac_rules-aas-registry.json:/rbac/rbac_rules.json:ro
155154
restart: always
155+
depends_on:
156+
keycloak-healthcheck:
157+
condition: service_healthy
156158
networks:
157159
- basyx-java-server-sdk
158160

@@ -174,6 +176,9 @@ services:
174176
- ./keycloak/rules/rbac_rules-sm-registry.json:/rbac/rbac_rules.json:ro
175177
ports:
176178
- "8061:8080"
179+
depends_on:
180+
keycloak-healthcheck:
181+
condition: service_healthy
177182
restart: always
178183
networks:
179184
- basyx-java-server-sdk
@@ -187,6 +192,9 @@ services:
187192
- ./rules/sm-repo-rbac_rules.json:/application/rbac_rules.json
188193
- ./rules/sm-repo.properties:/application/application.properties
189194
restart: always
195+
depends_on:
196+
keycloak-healthcheck:
197+
condition: service_healthy
190198
networks:
191199
- basyx-java-server-sdk
192200

@@ -253,9 +261,19 @@ services:
253261
until curl -sf http://keycloak-nginx:8080/health/ready; do
254262
sleep 5;
255263
done;
256-
echo 'Keycloak is ready!'"
264+
echo 'Keycloak is ready!';
265+
# Create a file that signals Keycloak is ready
266+
touch /tmp/keycloak-ready;
267+
# Keep container running after health check passes
268+
tail -f /dev/null"
257269
depends_on:
258-
- keycloak
270+
- keycloak-nginx
271+
healthcheck:
272+
test: ["CMD", "test", "-f", "/tmp/keycloak-ready"]
273+
interval: 10s
274+
timeout: 3s
275+
retries: 20
276+
start_period: 5s
259277
networks:
260278
- basyx-java-server-sdk
261279

ci/keycloak/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM quay.io/keycloak/keycloak:22.0.0
1+
FROM quay.io/keycloak/keycloak:24.0.4
22
ARG HTTP_PROXY
33
ARG HTTPS_PROXY
44
# Make the realm configuration available for import

ci/keycloak/Dockerfile.keycloak

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)