Skip to content

Commit 94b3ecb

Browse files
committed
Redis dev mode test
1 parent 6ddda62 commit 94b3ecb

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

integration-tests/redis-devservices/pom.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
<groupId>io.quarkus</groupId>
1616
<artifactId>quarkus-redis-client</artifactId>
1717
</dependency>
18+
<dependency>
19+
<groupId>io.quarkus</groupId>
20+
<artifactId>quarkus-rest-jackson</artifactId>
21+
</dependency>
1822
<dependency>
1923
<groupId>io.quarkus</groupId>
2024
<artifactId>quarkus-arc</artifactId>
@@ -34,6 +38,11 @@
3438
<artifactId>quarkus-junit5-internal</artifactId>
3539
<scope>test</scope>
3640
</dependency>
41+
<dependency>
42+
<groupId>io.rest-assured</groupId>
43+
<artifactId>rest-assured</artifactId>
44+
<scope>test</scope>
45+
</dependency>
3746
<!-- Minimal test dependencies to *-deployment artifacts for consistent build order -->
3847
<dependency>
3948
<groupId>io.quarkus</groupId>
@@ -61,6 +70,19 @@
6170
</exclusion>
6271
</exclusions>
6372
</dependency>
73+
<dependency>
74+
<groupId>io.quarkus</groupId>
75+
<artifactId>quarkus-rest-jackson-deployment</artifactId>
76+
<version>${project.version}</version>
77+
<type>pom</type>
78+
<scope>test</scope>
79+
<exclusions>
80+
<exclusion>
81+
<groupId>*</groupId>
82+
<artifactId>*</artifactId>
83+
</exclusion>
84+
</exclusions>
85+
</dependency>
6486
</dependencies>
6587

6688
<build>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.quarkus.test.devservices.redis;
2+
3+
import jakarta.inject.Inject;
4+
import jakarta.ws.rs.GET;
5+
import jakarta.ws.rs.Path;
6+
import jakarta.ws.rs.PathParam;
7+
8+
import io.quarkus.redis.datasource.RedisDataSource;
9+
10+
@Path("/")
11+
public class TestResource {
12+
13+
@Inject
14+
RedisDataSource redis;
15+
16+
@GET
17+
@Path("/ping")
18+
public String ping() {
19+
return redis.execute("ping").toString();
20+
}
21+
22+
@GET
23+
@Path("/set/{key}/{value}")
24+
public String set(@PathParam("key") String key, @PathParam("value") String value) {
25+
redis.value(String.class).set(key, value);
26+
return "OK";
27+
}
28+
29+
@GET
30+
@Path("/get/{key}")
31+
public String get(@PathParam("key") String key) {
32+
return redis.value(String.class).get(key);
33+
}
34+
}

integration-tests/redis-devservices/src/test/java/io/quarkus/redis/devservices/continuoustesting/it/DevServicesRedisContinuousTestingTest.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package io.quarkus.redis.devservices.continuoustesting.it;
22

3+
import static io.restassured.RestAssured.when;
4+
import static org.hamcrest.Matchers.is;
35
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
import static org.junit.jupiter.api.Assertions.assertFalse;
47
import static org.junit.jupiter.api.Assertions.assertTrue;
58

69
import java.util.ArrayList;
@@ -22,6 +25,7 @@
2225
import io.quarkus.redis.devservices.it.PlainQuarkusTest;
2326
import io.quarkus.test.ContinuousTestingTestUtils;
2427
import io.quarkus.test.QuarkusDevModeTest;
28+
import io.quarkus.test.devservices.redis.TestResource;
2529

2630
public class DevServicesRedisContinuousTestingTest {
2731

@@ -37,7 +41,7 @@ public class DevServicesRedisContinuousTestingTest {
3741
@RegisterExtension
3842
public static QuarkusDevModeTest test = new QuarkusDevModeTest()
3943
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
40-
.addClasses()
44+
.addClasses(TestResource.class)
4145
.addAsResource(new StringAsset(ContinuousTestingTestUtils.appProperties("")),
4246
"application.properties"))
4347
.setTestArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class).addClass(PlainQuarkusTest.class));
@@ -59,6 +63,33 @@ public void testContinuousTestingDisablesDevServicesWhenPropertiesChange() {
5963
// We could check the container goes away, but we'd have to check slowly, because ryuk can be slow
6064
}
6165

66+
@Test
67+
public void testDevModeServiceConfigRefresh() {
68+
List<Container> started = getRedisContainers();
69+
ping();
70+
71+
assertFalse(started.isEmpty());
72+
Container container = started.get(0);
73+
assertTrue(Arrays.stream(container.getPorts()).noneMatch(p -> p.getPublicPort() == 6377),
74+
"Expected random port 6377, but got: " + Arrays.toString(container.getPorts()));
75+
76+
test.modifyResourceFile("application.properties",
77+
s -> ContinuousTestingTestUtils.appProperties("quarkus.redis.devservices.port=6377"));
78+
79+
ping();
80+
List<Container> newContainers = getRedisContainersExcludingExisting(started);
81+
assertEquals(1, newContainers.size()); // this can be wrong
82+
Container newContainer = newContainers.get(0);
83+
assertTrue(Arrays.stream(newContainer.getPorts()).anyMatch(p -> p.getPublicPort() == 6377),
84+
"Expected port 6377, but got: " + Arrays.toString(newContainer.getPorts()));
85+
}
86+
87+
void ping() {
88+
when().get("/ping").then()
89+
.statusCode(200)
90+
.body(is("PONG"));
91+
}
92+
6293
@Test
6394
public void testContinuousTestingReusesInstanceWhenPropertiesAreNotChanged() {
6495

0 commit comments

Comments
 (0)