Skip to content

Commit 0d8aa85

Browse files
mp911desbrannen
authored andcommitted
Add tests for cancellation of transactional streams
See gh-23864 Closes gh-23873
1 parent 5bd1af2 commit 0d8aa85

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

spring-tx/src/test/java/org/springframework/transaction/reactive/TransactionalOperatorTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,34 @@ public void monoSubscriptionNotCancelled() {
6161
assertThat(cancelled).isFalse();
6262
}
6363

64+
@Test
65+
public void cancellationPropagatedToMono() {
66+
AtomicBoolean cancelled = new AtomicBoolean();
67+
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());
68+
Mono.create(sink -> sink.onCancel(() -> cancelled.set(true))).as(operator::transactional)
69+
.as(StepVerifier::create)
70+
.thenAwait()
71+
.thenCancel()
72+
.verify();
73+
assertThat(tm.commit).isTrue();
74+
assertThat(tm.rollback).isFalse();
75+
assertThat(cancelled).isTrue();
76+
}
77+
78+
@Test
79+
public void cancellationPropagatedToFlux() {
80+
AtomicBoolean cancelled = new AtomicBoolean();
81+
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());
82+
Flux.create(sink -> sink.onCancel(() -> cancelled.set(true))).as(operator::transactional)
83+
.as(StepVerifier::create)
84+
.thenAwait()
85+
.thenCancel()
86+
.verify();
87+
assertThat(tm.commit).isTrue();
88+
assertThat(tm.rollback).isFalse();
89+
assertThat(cancelled).isTrue();
90+
}
91+
6492
@Test
6593
public void rollbackWithMono() {
6694
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());

0 commit comments

Comments
 (0)