Skip to content

Commit 17bc5a0

Browse files
committed
Added test case for new circuit breaker builder
1 parent ab5ca70 commit 17bc5a0

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

grpc-circuitbreaker-utils/src/test/java/org/hypertrace/circuitbreaker/grpcutils/resilience/ResilienceCircuitBreakerProviderTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,49 @@ void shouldCacheCircuitBreakerInstances() {
128128
verify(circuitBreakerRegistry, times(1))
129129
.circuitBreaker(eq(ENABLED_SERVICE), eq(serviceConfig));
130130
}
131+
132+
@Test
133+
void shouldHandleAllBuildNewCircuitBreakerScenarios() {
134+
// Case 1: Service with specific config against circuit breaker key
135+
Optional<CircuitBreaker> serviceSpecificResult = provider.getCircuitBreaker(ENABLED_SERVICE);
136+
assertTrue(serviceSpecificResult.isPresent());
137+
assertEquals(mockCircuitBreaker, serviceSpecificResult.get());
138+
verify(circuitBreakerRegistry).circuitBreaker(ENABLED_SERVICE, serviceConfig);
139+
140+
// Case 2: Service without specific config against circuit breaker key but with config present against config key
141+
String fallbackService = "fallbackService";
142+
lenient().when(circuitBreakerRegistry.circuitBreaker(eq(fallbackService), eq(defaultConfig)))
143+
.thenReturn(mockCircuitBreaker);
144+
Optional<CircuitBreaker> fallbackResult = provider.getCircuitBreaker(fallbackService);
145+
assertTrue(fallbackResult.isPresent());
146+
assertEquals(mockCircuitBreaker, fallbackResult.get());
147+
verify(circuitBreakerRegistry).circuitBreaker(fallbackService, defaultConfig);
148+
149+
// Case 3: Service with no config present against circuit breaker key and no config key, but defaultEnabled=true
150+
String noConfigService = "noConfigService";
151+
ResilienceCircuitBreakerProvider defaultEnabledProvider = new ResilienceCircuitBreakerProvider(
152+
circuitBreakerRegistry,
153+
configMap,
154+
disabledKeys,
155+
true, // defaultEnabled = true
156+
null); // no config key
157+
158+
lenient().when(circuitBreakerRegistry.circuitBreaker(eq(noConfigService)))
159+
.thenReturn(mockCircuitBreaker);
160+
Optional<CircuitBreaker> noConfigResult = defaultEnabledProvider.getCircuitBreaker(noConfigService);
161+
assertTrue(noConfigResult.isPresent());
162+
assertEquals(mockCircuitBreaker, noConfigResult.get());
163+
verify(circuitBreakerRegistry).circuitBreaker(noConfigService);
164+
165+
// Case 4: Service with no config present against circuit breaker key and no config key, and defaultEnabled=false
166+
ResilienceCircuitBreakerProvider disabledDefaultProvider = new ResilienceCircuitBreakerProvider(
167+
circuitBreakerRegistry,
168+
configMap,
169+
disabledKeys,
170+
false, // defaultEnabled = false
171+
null); // no config key
172+
173+
Optional<CircuitBreaker> disabledDefaultResult = disabledDefaultProvider.getCircuitBreaker(noConfigService);
174+
assertFalse(disabledDefaultResult.isPresent());
175+
}
131176
}

0 commit comments

Comments
 (0)