Skip to content

Commit 6ba7781

Browse files
committed
Add tests for case where multiple profiles share a port
1 parent ecfd585 commit 6ba7781

7 files changed

+156
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.quarkus.redis.devservices.it;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Disabled;
5+
import org.junit.jupiter.api.DisplayName;
6+
import org.junit.jupiter.api.Test;
7+
8+
import io.quarkus.redis.devservices.it.profiles.DevServicesCustomPortReusableServiceProfile;
9+
import io.quarkus.redis.devservices.it.utils.SocketKit;
10+
import io.quarkus.test.junit.QuarkusTest;
11+
import io.quarkus.test.junit.TestProfile;
12+
13+
@Disabled("Tracked by https://github.com/quarkusio/quarkus/issues/45785")
14+
@QuarkusTest
15+
@TestProfile(DevServicesCustomPortReusableServiceProfile.class)
16+
public class DevServicesRedisCustomPortReusableServiceITest {
17+
18+
@Test
19+
@DisplayName("should start redis container with the given custom port")
20+
public void shouldStartRedisContainer() {
21+
Assertions.assertTrue(SocketKit.isPortAlreadyUsed(6371));
22+
}
23+
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package io.quarkus.redis.devservices.it;
2+
3+
import static org.junit.jupiter.api.Assertions.fail;
4+
5+
import jakarta.inject.Inject;
6+
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Disabled;
10+
import org.junit.jupiter.api.DisplayName;
11+
import org.junit.jupiter.api.Test;
12+
13+
import io.quarkus.redis.datasource.RedisDataSource;
14+
import io.quarkus.redis.devservices.it.profiles.DevServicesNonUniquePortProfile;
15+
import io.quarkus.test.junit.QuarkusTest;
16+
import io.quarkus.test.junit.TestProfile;
17+
18+
@Disabled("Tracked by https://github.com/quarkusio/quarkus/issues/45785")
19+
@QuarkusTest
20+
@TestProfile(DevServicesNonUniquePortProfile.class)
21+
public class DevServicesRedisNonUniquePortITest {
22+
23+
@Inject
24+
RedisDataSource redisClient;
25+
26+
@BeforeEach
27+
public void setUp() {
28+
redisClient.value(String.class).set("anykey", "anyvalue");
29+
}
30+
31+
@Test
32+
@DisplayName("given redis container must communicate with it and return value by key")
33+
public void shouldReturnAllKeys() {
34+
Assertions.assertEquals("anyvalue", redisClient.value(String.class).get("anykey").toString());
35+
}
36+
37+
@Test
38+
public void shouldHaveStack() {
39+
// The entertainingly named lolwut command gives a version number but doesn't say if stack is available, so try using some of the commands
40+
try {
41+
redisClient.bloom(String.class).bfadd("key", "whatever");
42+
} catch (Exception e) {
43+
fail("Redis stack should be available on the connected back end (underlying error was " + e + ")");
44+
}
45+
}
46+
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.quarkus.redis.devservices.it;
2+
3+
import jakarta.inject.Inject;
4+
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.DisplayName;
8+
import org.junit.jupiter.api.Test;
9+
10+
import io.quarkus.redis.datasource.RedisDataSource;
11+
import io.quarkus.redis.devservices.it.profiles.DevServicesRandomPortProfile;
12+
import io.quarkus.test.junit.QuarkusTest;
13+
import io.quarkus.test.junit.TestProfile;
14+
15+
@QuarkusTest
16+
@TestProfile(DevServicesRandomPortProfile.class)
17+
public class DevServicesRedisRandomPortITest {
18+
19+
@Inject
20+
RedisDataSource redisClient;
21+
22+
@BeforeEach
23+
public void setUp() {
24+
redisClient.value(String.class).set("anykey", "anyvalue");
25+
}
26+
27+
@Test
28+
@DisplayName("given redis container must communicate with it and return value by key")
29+
public void shouldReturnAllKeys() {
30+
Assertions.assertEquals("anyvalue", redisClient.value(String.class).get("anykey").toString());
31+
}
32+
33+
}

integration-tests/redis-devservices/src/test/java/io/quarkus/redis/devservices/it/profiles/DevServicesCustomPortProfile.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
public class DevServicesCustomPortProfile implements QuarkusTestProfile {
99

10+
public static final String PORT = "6371";
11+
1012
@Override
1113
public Map<String, String> getConfigOverrides() {
12-
return Collections.singletonMap("quarkus.redis.devservices.port", "6371");
14+
return Collections.singletonMap("quarkus.redis.devservices.port", PORT);
1315
}
1416

1517
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.quarkus.redis.devservices.it.profiles;
2+
3+
import java.util.Collections;
4+
import java.util.Map;
5+
6+
import io.quarkus.test.junit.QuarkusTestProfile;
7+
8+
public class DevServicesCustomPortReusableServiceProfile implements QuarkusTestProfile {
9+
10+
@Override
11+
public Map<String, String> getConfigOverrides() {
12+
// This is a distinct profile, but its config should be identical to the custom port profile, so the dev service can be the same
13+
return Collections.singletonMap("quarkus.redis.devservices.port", DevServicesCustomPortProfile.PORT);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.quarkus.redis.devservices.it.profiles;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import io.quarkus.test.junit.QuarkusTestProfile;
7+
8+
public class DevServicesNonUniquePortProfile implements QuarkusTestProfile {
9+
10+
@Override
11+
public Map<String, String> getConfigOverrides() {
12+
// Set an image, both for coverage, and so we know we're connecting to the right service
13+
Map<String, String> overrides = new HashMap<>();
14+
overrides.put("quarkus.redis.devservices.port", "6371");
15+
// Choose an image which includes redis stack, so we can identify we're running on it
16+
overrides.put("quarkus.redis.devservices.image-name", "redis/redis-stack:latest");
17+
return overrides;
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.quarkus.redis.devservices.it.profiles;
2+
3+
import java.util.Collections;
4+
import java.util.Map;
5+
6+
import io.quarkus.test.junit.QuarkusTestProfile;
7+
8+
public class DevServicesRandomPortProfile implements QuarkusTestProfile {
9+
10+
@Override
11+
public Map<String, String> getConfigOverrides() {
12+
// Don't set a port, to exercise the random port path
13+
return Collections.emptyMap();
14+
}
15+
}

0 commit comments

Comments
 (0)