Skip to content

Commit 2c943b8

Browse files
author
Chirag
committed
test(redis): parameterize Sentinel duration overflow cases
1 parent 0b782a4 commit 2c943b8

1 file changed

Lines changed: 28 additions & 17 deletions

File tree

apps/opik-backend/src/test/java/com/comet/opik/infrastructure/redis/RedisConfigTest.java

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@
1212
import org.junit.jupiter.api.DisplayName;
1313
import org.junit.jupiter.api.Nested;
1414
import org.junit.jupiter.api.Test;
15+
import org.junit.jupiter.params.ParameterizedTest;
16+
import org.junit.jupiter.params.provider.Arguments;
17+
import org.junit.jupiter.params.provider.MethodSource;
1518

1619
import java.util.Map;
20+
import java.util.function.Consumer;
21+
import java.util.stream.Stream;
1722

1823
import static org.assertj.core.api.Assertions.assertThat;
1924
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -285,28 +290,34 @@ void shouldRejectSentinelDurationsAboveRedissonIntegerLimit() {
285290
.containsExactlyInAnyOrder("connectTimeout", "timeout", "scanInterval");
286291
}
287292

288-
@Test
289-
@DisplayName("Should reject Sentinel duration overflow during direct builds")
290-
void shouldRejectSentinelDurationOverflowDuringDirectBuilds() {
291-
var oversizedDuration = Duration.milliseconds((long) Integer.MAX_VALUE + 1);
293+
@ParameterizedTest(name = "Should reject {0} overflow during direct builds")
294+
@MethodSource("sentinelDurationSetters")
295+
void shouldRejectSentinelDurationOverflowDuringDirectBuilds(
296+
String propertyName, Consumer<RedisConfig.SentinelConfig> setOversizedDuration) {
297+
var redisConfig = newSentinelConfig("redis://localhost:26379/0");
298+
setOversizedDuration.accept(redisConfig.getSentinel());
292299

293-
var connectTimeoutConfig = newSentinelConfig("redis://localhost:26379/0");
294-
connectTimeoutConfig.getSentinel().setConnectTimeout(oversizedDuration);
295-
assertThatThrownBy(connectTimeoutConfig::build)
300+
assertThatThrownBy(redisConfig::build)
301+
.as("overflow for %s", propertyName)
296302
.isInstanceOf(ArithmeticException.class)
297303
.hasMessage("integer overflow");
304+
}
298305

299-
var timeoutConfig = newSentinelConfig("redis://localhost:26379/0");
300-
timeoutConfig.getSentinel().setTimeout(oversizedDuration);
301-
assertThatThrownBy(timeoutConfig::build)
302-
.isInstanceOf(ArithmeticException.class)
303-
.hasMessage("integer overflow");
306+
private static Stream<Arguments> sentinelDurationSetters() {
307+
var oversizedDuration = Duration.milliseconds((long) Integer.MAX_VALUE + 1);
304308

305-
var scanIntervalConfig = newSentinelConfig("redis://localhost:26379/0");
306-
scanIntervalConfig.getSentinel().setScanInterval(oversizedDuration);
307-
assertThatThrownBy(scanIntervalConfig::build)
308-
.isInstanceOf(ArithmeticException.class)
309-
.hasMessage("integer overflow");
309+
return Stream.of(
310+
Arguments.of(
311+
"connectTimeout",
312+
(Consumer<RedisConfig.SentinelConfig>) sentinel -> sentinel
313+
.setConnectTimeout(oversizedDuration)),
314+
Arguments.of(
315+
"timeout",
316+
(Consumer<RedisConfig.SentinelConfig>) sentinel -> sentinel.setTimeout(oversizedDuration)),
317+
Arguments.of(
318+
"scanInterval",
319+
(Consumer<RedisConfig.SentinelConfig>) sentinel -> sentinel
320+
.setScanInterval(oversizedDuration)));
310321
}
311322
}
312323

0 commit comments

Comments
 (0)