From 9ebeb226118d827e259f47419f50fb2e958b6221 Mon Sep 17 00:00:00 2001 From: Paul Ebermann Date: Thu, 25 Feb 2021 20:15:42 +0100 Subject: [PATCH 1/3] Issue #522: demonstrate issue with a test --- .../flowid/DefaultFlowNoopTracerTest.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java index 6050acad..7bfc1835 100644 --- a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java +++ b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java @@ -1,15 +1,39 @@ package org.zalando.opentracing.flowid; +import io.opentracing.Scope; +import io.opentracing.Span; +import io.opentracing.mock.MockSpan; +import io.opentracing.noop.NoopTracer; import io.opentracing.noop.NoopTracerFactory; import org.junit.jupiter.api.Test; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static java.util.Collections.emptyMap; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; class DefaultFlowNoopTracerTest { - private final Flow unit = Flow.create(NoopTracerFactory.create()); + NoopTracer tracer = NoopTracerFactory.create(); + private final Flow unit = Flow.create(tracer); @Test void shouldThrowNoActiveSpanFoundException() { assertThrows(IllegalStateException.class, unit::currentId); } + + @Test + void writeToShouldNotThrow() { + final Span span = tracer.buildSpan("test").start(); + + try (final Scope ignored = tracer.activateSpan(span)) { + final Map target = new HashMap<>(); + + unit.writeTo(target::put); + + assertEquals(emptyMap(), target); + } + } } From 684251ebb3ae114b4810ba3a68039335b31c7cf2 Mon Sep 17 00:00:00 2001 From: Paul Ebermann Date: Thu, 25 Feb 2021 20:19:43 +0100 Subject: [PATCH 2/3] issue #522: make DefaultFlow.writeTo tolerant to NoopTracer --- .../java/org/zalando/opentracing/flowid/DefaultFlow.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java b/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java index 5417822c..f28bba7b 100644 --- a/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java +++ b/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java @@ -59,7 +59,10 @@ public String currentId() { @Override public void writeTo(final BiConsumer writer) { - writer.accept(Header.FLOW_ID, currentId()); + extractor.extract(activeSpan()) + .map(FlowId::getValue) + .ifPresent(value -> + writer.accept(Header.FLOW_ID, value)); } @Override From 035b658dc522833c7af3d4e031a20dc88c3cf0c1 Mon Sep 17 00:00:00 2001 From: Paul Ebermann Date: Thu, 25 Feb 2021 20:44:00 +0100 Subject: [PATCH 3/3] issue #522 simplify test The NoopTracer doesn't need its span to be activated. --- .../flowid/DefaultFlowNoopTracerTest.java | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java index 7bfc1835..5fd7c353 100644 --- a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java +++ b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java @@ -1,13 +1,8 @@ package org.zalando.opentracing.flowid; -import io.opentracing.Scope; -import io.opentracing.Span; -import io.opentracing.mock.MockSpan; -import io.opentracing.noop.NoopTracer; import io.opentracing.noop.NoopTracerFactory; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -16,8 +11,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; class DefaultFlowNoopTracerTest { - NoopTracer tracer = NoopTracerFactory.create(); - private final Flow unit = Flow.create(tracer); + private final Flow unit = Flow.create(NoopTracerFactory.create()); @Test void shouldThrowNoActiveSpanFoundException() { @@ -26,14 +20,8 @@ void shouldThrowNoActiveSpanFoundException() { @Test void writeToShouldNotThrow() { - final Span span = tracer.buildSpan("test").start(); - - try (final Scope ignored = tracer.activateSpan(span)) { - final Map target = new HashMap<>(); - - unit.writeTo(target::put); - - assertEquals(emptyMap(), target); - } + final Map target = new HashMap<>(); + unit.writeTo(target::put); + assertEquals(emptyMap(), target); } }