Skip to content

Commit 9bbc73f

Browse files
madgnomeRobWin
authored andcommitted
ReactiveX#212 Add more tests checking we get the right exception (ReactiveX#214)
Check that we are getting the resilience exception even when the source will throw an exception (not on subscribe)
1 parent 5e850e9 commit 9bbc73f

File tree

6 files changed

+94
-2
lines changed

6 files changed

+94
-2
lines changed

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/CombinedOperatorsTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,16 @@ public void shouldEmitErrorWithCircuitBreakerOpenExceptionEvenWhenErrorDuringSub
8080
).expectError(CircuitBreakerOpenException.class)
8181
.verify(Duration.ofSeconds(1));
8282
}
83+
84+
@Test
85+
public void shouldEmitErrorWithCircuitBreakerOpenExceptionEvenWhenErrorNotOnSubscribe() {
86+
circuitBreaker.transitionToOpenState();
87+
StepVerifier.create(
88+
Flux.error(new IOException("BAM!"), true)
89+
.transform(CircuitBreakerOperator.of(circuitBreaker))
90+
.transform(BulkheadOperator.of(bulkhead, Schedulers.immediate()))
91+
.transform(RateLimiterOperator.of(rateLimiter, Schedulers.immediate()))
92+
).expectError(CircuitBreakerOpenException.class)
93+
.verify(Duration.ofSeconds(1));
94+
}
8395
}

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/bulkhead/operator/FluxBulkheadTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,18 @@ public void shouldEmitBulkheadFullExceptionEvenWhenErrorDuringSubscribe() {
8484

8585
assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(0);
8686
}
87+
88+
@Test
89+
public void shouldEmitBulkheadFullExceptionEvenWhenErrorNotOnSubscribe() {
90+
bulkhead.isCallPermitted();
91+
92+
StepVerifier.create(
93+
Flux.error(new IOException("BAM!"), true)
94+
.transform(BulkheadOperator.of(bulkhead, Schedulers.immediate())))
95+
.expectSubscription()
96+
.expectError(BulkheadFullException.class)
97+
.verify(Duration.ofSeconds(1));
98+
99+
assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(0);
100+
}
87101
}

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/bulkhead/operator/MonoBulkheadTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,18 @@ public void shouldEmitBulkheadFullExceptionEvenWhenErrorDuringSubscribe() {
8383

8484
assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(0);
8585
}
86+
87+
@Test
88+
public void shouldEmitBulkheadFullExceptionEvenWhenErrorNotOnSubscribe() {
89+
bulkhead.isCallPermitted();
90+
91+
StepVerifier.create(
92+
Mono.error(new IOException("BAM!")).delayElement(Duration.ofMillis(1))
93+
.transform(BulkheadOperator.of(bulkhead, Schedulers.immediate())))
94+
.expectSubscription()
95+
.expectError(BulkheadFullException.class)
96+
.verify(Duration.ofSeconds(1));
97+
98+
assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(0);
99+
}
86100
}

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/circuitbreaker/operator/MonoCircuitBreakerTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ public void shouldPropagateError() {
4747
assertSingleFailedCall();
4848
}
4949

50+
@Test
51+
public void shouldEmitCircuitBreakerOpenExceptionEvenWhenErrorNotOnSubscribe() {
52+
circuitBreaker.transitionToForcedOpenState();
53+
StepVerifier.create(
54+
Mono.error(new IOException("BAM!")).delayElement(Duration.ofMillis(1))
55+
.transform(CircuitBreakerOperator.of(circuitBreaker)))
56+
.expectError(CircuitBreakerOpenException.class)
57+
.verify(Duration.ofSeconds(1));
58+
59+
assertNoRegisteredCall();
60+
}
61+
5062
@Test
5163
public void shouldEmitCircuitBreakerOpenExceptionEvenWhenErrorDuringSubscribe() {
5264
circuitBreaker.transitionToForcedOpenState();

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/ratelimiter/operator/FluxRateLimiterTest.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void shouldPropagateError() {
5151
}
5252

5353
@Test
54-
public void shouldEmitErrorWithBulkheadFullException() {
54+
public void shouldEmitRequestNotPermittedException() {
5555
saturateRateLimiter();
5656

5757
StepVerifier.create(
@@ -63,4 +63,32 @@ public void shouldEmitErrorWithBulkheadFullException() {
6363

6464
assertNoPermitLeft();
6565
}
66+
67+
@Test
68+
public void shouldEmitRequestNotPermittedExceptionEvenWhenErrorDuringSubscribe() {
69+
saturateRateLimiter();
70+
71+
StepVerifier.create(
72+
Flux.error(new IOException("BAM!"))
73+
.transform(RateLimiterOperator.of(rateLimiter)))
74+
.expectSubscription()
75+
.expectError(RequestNotPermitted.class)
76+
.verify(Duration.ofSeconds(1));
77+
78+
assertNoPermitLeft();
79+
}
80+
81+
@Test
82+
public void shouldEmitRequestNotPermittedExceptionEvenWhenErrorNotOnSubscribe() {
83+
saturateRateLimiter();
84+
85+
StepVerifier.create(
86+
Flux.error(new IOException("BAM!"), true)
87+
.transform(RateLimiterOperator.of(rateLimiter)))
88+
.expectSubscription()
89+
.expectError(RequestNotPermitted.class)
90+
.verify(Duration.ofSeconds(1));
91+
92+
assertNoPermitLeft();
93+
}
6694
}

resilience4j-reactor/src/test/java/io/github/resilience4j/reactor/ratelimiter/operator/MonoRateLimiterTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void shouldEmitErrorWithBulkheadFullException() {
6464
}
6565

6666
@Test
67-
public void shouldEmitCircuitBreakerOpenExceptionEvenWhenErrorDuringSubscribe() {
67+
public void shouldEmitRequestNotPermittedExceptionEvenWhenErrorDuringSubscribe() {
6868
saturateRateLimiter();
6969
StepVerifier.create(
7070
Mono.error(new IOException("BAM!"))
@@ -74,4 +74,16 @@ public void shouldEmitCircuitBreakerOpenExceptionEvenWhenErrorDuringSubscribe()
7474

7575
assertNoPermitLeft();
7676
}
77+
78+
@Test
79+
public void shouldEmitRequestNotPermittedExceptionEvenWhenErrorNotOnSubscribe() {
80+
saturateRateLimiter();
81+
StepVerifier.create(
82+
Mono.error(new IOException("BAM!")).delayElement(Duration.ofMillis(1))
83+
.transform(RateLimiterOperator.of(rateLimiter, Schedulers.immediate())))
84+
.expectError(RequestNotPermitted.class)
85+
.verify(Duration.ofSeconds(1));
86+
87+
assertNoPermitLeft();
88+
}
7789
}

0 commit comments

Comments
 (0)