From 4de484504e3e02002a65b8f3e9fba3797279008e Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Thu, 6 Feb 2020 15:36:57 +0800 Subject: [PATCH] refactoring flakey test --- .../ScopePassingSpanSubscriberTests.java | 136 ++++++++++-------- 1 file changed, 75 insertions(+), 61 deletions(-) diff --git a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java index b809a743e..ae96ea780 100644 --- a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java @@ -21,9 +21,9 @@ import java.util.function.Function; import brave.propagation.CurrentTraceContext; import brave.propagation.CurrentTraceContext.Scope; +import brave.propagation.StrictScopeDecorator; import brave.propagation.TraceContext; import org.assertj.core.presentation.StandardRepresentation; -import org.awaitility.Awaitility; import org.junit.After; import org.junit.Test; import org.reactivestreams.Publisher; @@ -54,7 +54,8 @@ public class ScopePassingSpanSubscriberTests { Objects::toString); } - final CurrentTraceContext currentTraceContext = CurrentTraceContext.Default.create(); + final CurrentTraceContext currentTraceContext = CurrentTraceContext.Default + .newBuilder().addScopeDecorator(StrictScopeDecorator.create()).build(); TraceContext context = TraceContext.newBuilder().traceId(1).spanId(1).sampled(true) .build(); @@ -62,6 +63,52 @@ public class ScopePassingSpanSubscriberTests { TraceContext context2 = TraceContext.newBuilder().traceId(1).spanId(2).sampled(true) .build(); + Subscriber assertNotScopePassingSpanSubscriber = new CoreSubscriber() { + @Override + public void onSubscribe(Subscription s) { + s.request(Long.MAX_VALUE); + assertThat(s).isNotInstanceOf(ScopePassingSpanSubscriber.class); + } + + @Override + public void onNext(Object o) { + + } + + @Override + public void onError(Throwable t) { + + } + + @Override + public void onComplete() { + + } + }; + + Subscriber assertScopePassingSpanSubscriber = new CoreSubscriber() { + @Override + public void onSubscribe(Subscription s) { + s.request(Long.MAX_VALUE); + assertThat(s).isInstanceOf(ScopePassingSpanSubscriber.class); + } + + @Override + public void onNext(Object o) { + + } + + @Override + public void onError(Throwable t) { + + } + + @Override + public void onComplete() { + + } + }; + AnnotationConfigApplicationContext springContext = new AnnotationConfigApplicationContext(); @After @@ -97,7 +144,7 @@ public class ScopePassingSpanSubscriberTests { } @Test - public void should_not_trace_scalar_flows() { + public void should_not_scope_scalar_subscribe() { springContext.registerBean(CurrentTraceContext.class, () -> currentTraceContext); springContext.refresh(); @@ -105,71 +152,38 @@ public class ScopePassingSpanSubscriberTests { this.springContext); try (Scope ws = this.currentTraceContext.newScope(context)) { - Subscriber assertNoSpanSubscriber = new CoreSubscriber() { - @Override - public void onSubscribe(Subscription s) { - s.request(Long.MAX_VALUE); - assertThat(s).isNotInstanceOf(ScopePassingSpanSubscriber.class); - } - @Override - public void onNext(Object o) { - - } - - @Override - public void onError(Throwable t) { - - } - - @Override - public void onComplete() { - - } - }; - - Subscriber assertSpanSubscriber = new CoreSubscriber() { - @Override - public void onSubscribe(Subscription s) { - s.request(Long.MAX_VALUE); - assertThat(s).isInstanceOf(ScopePassingSpanSubscriber.class); - } - - @Override - public void onNext(Object o) { - - } - - @Override - public void onError(Throwable t) { - - } - - @Override - public void onComplete() { - - } - }; - transformer.apply(Mono.just(1).hide()).subscribe(assertSpanSubscriber); - - transformer.apply(Mono.just(1)).subscribe(assertNoSpanSubscriber); - - transformer.apply(Mono.error(new Exception()).hide()) - .subscribe(assertSpanSubscriber); + transformer.apply(Mono.just(1)) + .subscribe(assertNotScopePassingSpanSubscriber); transformer.apply(Mono.error(new Exception())) - .subscribe(assertNoSpanSubscriber); + .subscribe(assertNotScopePassingSpanSubscriber); - transformer.apply(Mono.empty().hide()) - .subscribe(assertSpanSubscriber); - - transformer.apply(Mono.empty()).subscribe(assertNoSpanSubscriber); + transformer.apply(Mono.empty()) + .subscribe(assertNotScopePassingSpanSubscriber); } + } - Awaitility.await().untilAsserted(() -> { - then(this.currentTraceContext.get()).isNull(); - }); + @Test + public void should_scope_scalar_hide_subscribe() { + springContext.registerBean(CurrentTraceContext.class, () -> currentTraceContext); + springContext.refresh(); + + Function, ? extends Publisher> transformer = scopePassingSpanOperator( + this.springContext); + + try (Scope ws = this.currentTraceContext.newScope(context)) { + + transformer.apply(Mono.just(1).hide()) + .subscribe(assertScopePassingSpanSubscriber); + + transformer.apply(Mono.error(new Exception()).hide()) + .subscribe(assertScopePassingSpanSubscriber); + + transformer.apply(Mono.empty().hide()) + .subscribe(assertScopePassingSpanSubscriber); + } } }