Skip to content

Commit 3645601

Browse files
ggivouglide
andauthored
Dedicated profile for running Scenario tests (#4312)
* Dedicated profile for running Scenario tests to run only scenario tests mvn -Pscenario-tests clean verify # Conflicts: # src/test/java/redis/clients/jedis/mcf/ActiveActiveLocalFailoverTest.java # src/test/java/redis/clients/jedis/scenario/ActiveActiveFailoverIT.java * format * remove import after rebase conflict * fix RedisRestAPIIT scenario test - increase expected bdb's count to account for additional db added to test env - fix incorrect bdbid used for lag-aware availablity checks now using bdb of'"re-active-active" * fix LagAwareStrategySslIT scenario test - Now exception is propagated in case of ssl connection errors instead of returning UNHEALTHY - updated the test to current expectations - Enhanced test to ensure untrusted default certificate * java 8 compatibility * remove @tag("integration") from IntegrationTest* to avoid multiple runs of same test --------- Co-authored-by: Igor Malinovskiy <u.glide@gmail.com>
1 parent 07bf3b0 commit 3645601

12 files changed

+237
-128
lines changed

pom.xml

Lines changed: 80 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@
6464
<JVM_OPTS></JVM_OPTS>
6565
<!-- Default excluded groups for tests - can be overridden from command line -->
6666
<excludedGroupsForUnitTests>integration,scenario</excludedGroupsForUnitTests>
67+
<skipUnitTests>false</skipUnitTests>
68+
<skipIntegrationTests>false</skipIntegrationTests>
69+
<skipScenarioTests>true</skipScenarioTests>
6770
</properties>
6871

6972
<dependencyManagement>
@@ -287,6 +290,17 @@
287290
<destFile>${project.build.directory}/jacoco-it-suffix.exec</destFile>
288291
</configuration>
289292
</execution>
293+
<!-- Collect coverage for scenario tests -->
294+
<execution>
295+
<id>prepare-agent-scenario</id>
296+
<goals>
297+
<goal>prepare-agent</goal>
298+
</goals>
299+
<configuration>
300+
<propertyName>failsafeScenarioArgLine</propertyName>
301+
<destFile>${project.build.directory}/jacoco-scenario.exec</destFile>
302+
</configuration>
303+
</execution>
290304
<!-- Merge all coverage data after all integration tests -->
291305
<execution>
292306
<id>merge-coverage</id>
@@ -302,6 +316,7 @@
302316
<include>jacoco-ut.exec</include>
303317
<include>jacoco-it-tagged.exec</include>
304318
<include>jacoco-it-suffix.exec</include>
319+
<include>jacoco-scenario.exec</include>
305320
</includes>
306321
</fileSet>
307322
</fileSets>
@@ -333,6 +348,7 @@
333348
<artifactId>maven-surefire-plugin</artifactId>
334349
<version>${maven.surefire.version}</version>
335350
<configuration>
351+
<skipTests>${skipUnitTests}</skipTests>
336352
<argLine>@{argLine} ${JVM_OPTS}</argLine>
337353
<systemPropertyVariables>
338354
<redis-hosts>${redis-hosts}</redis-hosts>
@@ -358,13 +374,13 @@
358374
</systemPropertyVariables>
359375
<summaryFile>${project.build.directory}/failsafe-summary.xml</summaryFile>
360376
<!-- Default includes used when invoking failsafe goals directly (e.g., mvn failsafe:integration-test) -->
377+
<excludedGroups>scenario</excludedGroups>
361378
<includes>
362379
<include>**/*IntegrationTest.java</include>
363380
<include>**/*IntegrationTests.java</include>
364381
</includes>
365382
<excludes>
366383
<exclude>**/examples/*.java</exclude>
367-
<exclude>**/scenario/*Test.java</exclude>
368384
<!-- Exclude unit tests -->
369385
<exclude>**/mocked/*.java</exclude>
370386
</excludes>
@@ -377,8 +393,10 @@
377393
<goal>integration-test</goal>
378394
</goals>
379395
<configuration>
396+
<skip>${skipIntegrationTests}</skip>
380397
<argLine>@{failsafeTaggedArgLine} ${JVM_OPTS}</argLine>
381398
<groups>integration</groups>
399+
<excludedGroups>scenario,unit</excludedGroups>
382400
<includes>
383401
<include>**/*Test.java</include>
384402
<include>**/*Tests.java</include>
@@ -392,14 +410,37 @@
392410
<goal>integration-test</goal>
393411
</goals>
394412
<configuration>
413+
<skip>${skipIntegrationTests}</skip>
395414
<argLine>@{failsafeSuffixArgLine} ${JVM_OPTS}</argLine>
396-
415+
<excludedGroups>scenario,unit</excludedGroups>
397416
<includes>
417+
<include>**/*IT.java</include>
418+
<include>**/*ITs.java</include>
398419
<include>**/*IntegrationTest.java</include>
399420
<include>**/*IntegrationTests.java</include>
400421
</includes>
401422
</configuration>
402423
</execution>
424+
<!-- Run all tests tagged with @Tag("scenario") regardless of file name -->
425+
<execution>
426+
<id>scenario-tests</id>
427+
<goals>
428+
<goal>integration-test</goal>
429+
</goals>
430+
<configuration>
431+
<skip>${skipScenarioTests}</skip>
432+
<argLine>@{failsafeScenarioArgLine} ${JVM_OPTS}</argLine>
433+
<groups>scenario</groups>
434+
<excludedGroups>integration,unit</excludedGroups>
435+
<includes>
436+
<include>**/*IT.java</include>
437+
<include>**/*ITs.java</include>
438+
</includes>
439+
<excludes>
440+
<!-- ensure plugin level excludes are overridden -->
441+
</excludes>
442+
</configuration>
443+
</execution>
403444
<!-- Verify phase should run once after both IT executions -->
404445
<execution>
405446
<id>it-verify</id>
@@ -574,35 +615,43 @@
574615
</plugins>
575616
</build>
576617
</profile>
577-
<profile>
578-
<id>tests-with-params</id>
579-
<activation>
580-
<property>
581-
<name>with-param-names</name>
582-
<value>true</value>
583-
</property>
584-
</activation>
585-
<build>
586-
<plugins>
587-
<plugin>
588-
<artifactId>maven-compiler-plugin</artifactId>
589-
<version>3.14.0</version>
590-
<configuration>
591-
<source>1.8</source>
592-
<target>1.8</target>
593-
<parameters>true</parameters>
594-
</configuration>
595-
</plugin>
596-
<plugin>
597-
<artifactId>maven-surefire-plugin</artifactId>
598-
<version>${maven.surefire.version}</version>
599-
<configuration>
600-
<argLine>@{argLine} ${JVM_OPTS}</argLine>
601-
</configuration>
602-
</plugin>
603-
</plugins>
604-
</build>
605-
</profile>
618+
<profile>
619+
<id>tests-with-params</id>
620+
<activation>
621+
<property>
622+
<name>with-param-names</name>
623+
<value>true</value>
624+
</property>
625+
</activation>
626+
<build>
627+
<plugins>
628+
<plugin>
629+
<artifactId>maven-compiler-plugin</artifactId>
630+
<version>3.14.0</version>
631+
<configuration>
632+
<source>1.8</source>
633+
<target>1.8</target>
634+
<parameters>true</parameters>
635+
</configuration>
636+
</plugin>
637+
<plugin>
638+
<artifactId>maven-surefire-plugin</artifactId>
639+
<version>${maven.surefire.version}</version>
640+
<configuration>
641+
<argLine>@{argLine} ${JVM_OPTS}</argLine>
642+
</configuration>
643+
</plugin>
644+
</plugins>
645+
</build>
646+
</profile>
647+
<profile>
648+
<id>scenario-tests</id>
649+
<properties>
650+
<skipUnitTests>true</skipUnitTests>
651+
<skipIntegrationTests>true</skipIntegrationTests>
652+
<skipScenarioTests>false</skipScenarioTests>
653+
</properties>
654+
</profile>
606655

607656
</profiles>
608657
</project>

src/test/java/redis/clients/jedis/authentication/RedisEntraIDClusterIntegrationTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import redis.clients.jedis.JedisClientConfig;
3838
import redis.clients.jedis.JedisCluster;
3939

40-
@Tag("integration")
4140
public class RedisEntraIDClusterIntegrationTests {
4241
private static final Logger log = LoggerFactory
4342
.getLogger(RedisEntraIDClusterIntegrationTests.class);

src/test/java/redis/clients/jedis/authentication/RedisEntraIDIntegrationTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
import redis.clients.jedis.scenario.FaultInjectionClient.TriggerActionResponse;
7373

7474
@TestMethodOrder(MethodOrderer.MethodName.class)
75-
@Tag("integration")
7675
public class RedisEntraIDIntegrationTests {
7776
private static final Logger log = LoggerFactory.getLogger(RedisEntraIDIntegrationTests.class);
7877

src/test/java/redis/clients/jedis/authentication/RedisEntraIDManagedIdentityIntegrationTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import static org.junit.jupiter.api.Assertions.assertEquals;
2323
import static org.junit.jupiter.api.Assumptions.assumeTrue;
2424

25-
@Tag("integration")
2625
public class RedisEntraIDManagedIdentityIntegrationTests {
2726
private static final Logger log = LoggerFactory.getLogger(RedisEntraIDIntegrationTests.class);
2827

src/test/java/redis/clients/jedis/authentication/TokenBasedAuthenticationClusterIntegrationTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import redis.clients.jedis.JedisClientConfig;
4141
import redis.clients.jedis.JedisCluster;
4242

43-
@Tag("integration")
4443
public class TokenBasedAuthenticationClusterIntegrationTests {
4544
private static final Logger log = LoggerFactory
4645
.getLogger(TokenBasedAuthenticationClusterIntegrationTests.class);

src/test/java/redis/clients/jedis/mcf/ActiveActiveLocalFailoverTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import redis.clients.jedis.MultiDbConfig.CircuitBreakerConfig;
2020
import redis.clients.jedis.MultiDbConfig.DatabaseConfig;
2121
import redis.clients.jedis.MultiDbConfig.RetryConfig;
22-
import redis.clients.jedis.scenario.ActiveActiveFailoverTest;
2322
import redis.clients.jedis.scenario.MultiThreadedFakeApp;
2423
import redis.clients.jedis.scenario.RecommendedSettings;
2524
import redis.clients.jedis.scenario.FaultInjectionClient.TriggerActionResponse;
@@ -43,7 +42,7 @@
4342

4443
@Tags({ @Tag("failover"), @Tag("integration") })
4544
public class ActiveActiveLocalFailoverTest {
46-
private static final Logger log = LoggerFactory.getLogger(ActiveActiveFailoverTest.class);
45+
private static final Logger log = LoggerFactory.getLogger(ActiveActiveLocalFailoverTest.class);
4746

4847
private static final EndpointConfig endpoint1 = HostAndPorts.getRedisEndpoint("redis-failover-1");
4948
private static final EndpointConfig endpoint2 = HostAndPorts.getRedisEndpoint("redis-failover-2");

src/test/java/redis/clients/jedis/mcf/RedisRestAPIIntegrationTest.java renamed to src/test/java/redis/clients/jedis/mcf/RedisRestAPIIT.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import redis.clients.jedis.scenario.RestEndpointUtil;
3131

3232
@Tags({ @Tag("failover"), @Tag("scenario") })
33-
public class RedisRestAPIIntegrationTest {
33+
public class RedisRestAPIIT {
3434
public static class SSLBypass {
3535
private static SSLSocketFactory originalSSLSocketFactory;
3636
private static HostnameVerifier originalHostnameVerifier;
@@ -76,16 +76,19 @@ public static void restoreSSLVerification() {
7676
}
7777
}
7878

79-
private static EndpointConfig endpointConfig;
79+
private static EndpointConfig crdb;
80+
private static EndpointConfig db1;
81+
8082
private static Endpoint restAPIEndpoint;
8183
private static Supplier<RedisCredentials> credentialsSupplier;
82-
private static final Logger log = LoggerFactory.getLogger(RedisRestAPIIntegrationTest.class);
84+
private static final Logger log = LoggerFactory.getLogger(RedisRestAPIIT.class);
8385

8486
@BeforeAll
8587
public static void beforeClass() {
8688
try {
87-
endpointConfig = HostAndPorts.getRedisEndpoint("re-active-active");
88-
restAPIEndpoint = RestEndpointUtil.getRestAPIEndpoint(endpointConfig);
89+
crdb = HostAndPorts.getRedisEndpoint("re-active-active");
90+
db1 = HostAndPorts.getRedisEndpoint("re-standalone");
91+
restAPIEndpoint = RestEndpointUtil.getRestAPIEndpoint(crdb);
8992
credentialsSupplier = () -> new DefaultRedisCredentials("test@redis.com", "test123");
9093
SSLBypass.disableSSLVerification();
9194
} catch (IllegalArgumentException e) {
@@ -104,7 +107,7 @@ void testGetBdbs() throws Exception {
104107
RedisRestAPI api = new RedisRestAPI(restAPIEndpoint, credentialsSupplier);
105108

106109
List<RedisRestAPI.BdbInfo> bdbs = api.getBdbs();
107-
assertEquals(3, bdbs.size());
110+
assertEquals(4, bdbs.size());
108111
assertFalse(bdbs.isEmpty());
109112

110113
// Verify that each BDB has a UID and endpoints
@@ -119,10 +122,17 @@ void testCheckAvailability() throws Exception {
119122
RedisRestAPI api = new RedisRestAPI(restAPIEndpoint, credentialsSupplier);
120123

121124
List<RedisRestAPI.BdbInfo> bdbs = api.getBdbs();
122-
assertFalse(bdbs.isEmpty());
123-
String firstBdbUid = bdbs.get(0).getUid();
124-
assertTrue(api.checkBdbAvailability(firstBdbUid, false));
125-
assertFalse(api.checkBdbAvailability(firstBdbUid, true));
125+
// Verify availability against CRDB - without extended lag aware checks
126+
assertTrue(api.checkBdbAvailability(String.valueOf(crdb.getBdbId()), false));
127+
// Verify availability against CRDB - with lag aware
128+
assertTrue(api.checkBdbAvailability(String.valueOf(crdb.getBdbId()), true));
129+
130+
// Verify availability checks against non-CRDB with lag aware
131+
assertTrue(api.checkBdbAvailability(String.valueOf(db1.getBdbId()), false));
132+
assertFalse(api.checkBdbAvailability(String.valueOf(db1.getBdbId()), true));
133+
134+
assertFalse(api.checkBdbAvailability("non-existent-bdb", false));
135+
assertFalse(api.checkBdbAvailability("non-existent-bdb", true));
126136
}
127137

128138
}

0 commit comments

Comments
 (0)