From 6d4e7cc914df2ad1c19adcae4838c149fa4b101f Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Wed, 3 Jul 2019 17:07:43 +0200 Subject: [PATCH] [Reactor] Add a test for inner publishers (breaks with `onLastOperator`) (#1388) --- .../reactor/SpanSubscriberTests.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java index 828146bf9..d7ba4e343 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java @@ -16,6 +16,7 @@ package org.springframework.cloud.sleuth.instrument.reactor; +import java.time.Duration; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; @@ -299,6 +300,28 @@ public class SpanSubscriberTests { then(spanInSubscriberContext).hasValue(initSpan.context().spanId()); // ok here } + @Test + public void should_pass_tracing_info_into_inner_publishers() { + Span span = this.tracer.nextSpan().name("foo").start(); + final AtomicReference spanInOperation = new AtomicReference<>(); + + try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span)) { + Flux + .range(0, 5) + .flatMap(it -> Mono + .delay(Duration.ofMillis(1)) + .map(context -> this.tracer.currentSpan()) + .doOnNext(spanInOperation::set) + ) + .blockFirst(); + } + finally { + span.finish(); + } + + then(spanInOperation.get().context().spanId()).isEqualTo(span.context().spanId()); + } + @EnableAutoConfiguration @Configuration static class Config {