Add tests for cancellation of transactional streams

See gh-23864

Closes gh-23873
This commit is contained in:
Mark Paluch
2019-10-25 17:16:33 +02:00
committed by Sam Brannen
parent 5bd1af2a7f
commit 0d8aa854e8

View File

@@ -61,6 +61,34 @@ public class TransactionalOperatorTests {
assertThat(cancelled).isFalse();
}
@Test
public void cancellationPropagatedToMono() {
AtomicBoolean cancelled = new AtomicBoolean();
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());
Mono.create(sink -> sink.onCancel(() -> cancelled.set(true))).as(operator::transactional)
.as(StepVerifier::create)
.thenAwait()
.thenCancel()
.verify();
assertThat(tm.commit).isTrue();
assertThat(tm.rollback).isFalse();
assertThat(cancelled).isTrue();
}
@Test
public void cancellationPropagatedToFlux() {
AtomicBoolean cancelled = new AtomicBoolean();
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());
Flux.create(sink -> sink.onCancel(() -> cancelled.set(true))).as(operator::transactional)
.as(StepVerifier::create)
.thenAwait()
.thenCancel()
.verify();
assertThat(tm.commit).isTrue();
assertThat(tm.rollback).isFalse();
assertThat(cancelled).isTrue();
}
@Test
public void rollbackWithMono() {
TransactionalOperator operator = TransactionalOperator.create(tm, new DefaultTransactionDefinition());