You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/04/07 10:04:57 UTC

camel git commit: Fixed CamelContext.addLogListener wrong case, added support for log component and log eip

Repository: camel
Updated Branches:
  refs/heads/master 97f442c6d -> a88c016a2


Fixed CamelContext.addLogListener wrong case, added support for log component and log eip


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a88c016a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a88c016a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a88c016a

Branch: refs/heads/master
Commit: a88c016a20c48a979a00d7e346e7edfd63695af6
Parents: 97f442c
Author: Gary Brown <ga...@brownuk.com>
Authored: Thu Apr 6 20:14:48 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 7 12:01:39 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/CamelContext.java     |  4 +--
 .../apache/camel/impl/DefaultCamelContext.java  |  2 +-
 .../camel/component/log/LogListenerTest.java    |  2 +-
 .../camel/processor/LogEipListenerTest.java     |  2 +-
 .../camel/opentracing/OpenTracingTracer.java    | 33 ++++++++++++++++-
 .../apache/camel/opentracing/SpanDecorator.java |  8 +++++
 .../decorators/AbstractSpanDecorator.java       |  5 +++
 .../decorators/LogSpanDecorator.java            | 31 ++++++++++++++++
 .../org.apache.camel.opentracing.SpanDecorator  |  1 +
 .../apache/camel/opentracing/ABCRouteTest.java  |  8 ++---
 .../CamelOpenTracingTestSupport.java            | 37 ++++++++++++--------
 .../opentracing/MulticastParallelRouteTest.java |  6 ++--
 .../apache/camel/opentracing/SpanTestData.java  | 12 +++++++
 13 files changed, 124 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/camel-core/src/main/java/org/apache/camel/CamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 8aec529..b0789c4 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -1975,6 +1975,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     /**
      * Adds a {@link LogListener}.
      */
-    void addlogListener(LogListener listener);
+    void addLogListener(LogListener listener);
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index f16de74..bea497d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -2691,7 +2691,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return logListeners;
     }
 
-    public void addlogListener(LogListener listener) {
+    public void addLogListener(LogListener listener) {
         logListeners.add(listener);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
index dbdaf12..4b506e7 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
@@ -35,7 +35,7 @@ public class LogListenerTest {
         CamelContext context = createCamelContext();
         MockEndpoint mock = context.getEndpoint("mock:foo", MockEndpoint.class);
         mock.expectedMessageCount(1);
-        context.addlogListener((exchange, camelLogger, message) -> {
+        context.addLogListener((exchange, camelLogger, message) -> {
             Assert.assertEquals("Exchange[ExchangePattern: InOnly, BodyType: String, Body: hello]", message);
             listenerFired = true;
             return message + " - modified by listener";

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java b/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
index 0e52fde..dbebc66 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
@@ -35,7 +35,7 @@ public class LogEipListenerTest {
         CamelContext context = createCamelContext();
         MockEndpoint mock = context.getEndpoint("mock:foo", MockEndpoint.class);
         mock.expectedMessageCount(1);
-        context.addlogListener((exchange, camelLogger, message) -> {
+        context.addLogListener((exchange, camelLogger, message) -> {
             Assert.assertEquals("Got hello", message);
             listenerFired = true;
             return message + " - modified by listener";

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index de95244..e1a130f 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -45,11 +45,13 @@ import org.apache.camel.opentracing.concurrent.CamelSpanManager;
 import org.apache.camel.opentracing.concurrent.OpenTracingExecutorServiceManager;
 import org.apache.camel.opentracing.propagation.CamelHeadersExtractAdapter;
 import org.apache.camel.opentracing.propagation.CamelHeadersInjectAdapter;
+import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
@@ -72,6 +74,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     private static Map<String, SpanDecorator> decorators = new HashMap<>();
 
     private final OpenTracingEventNotifier eventNotifier = new OpenTracingEventNotifier();
+    private final OpenTracingLogListener logListener = new OpenTracingLogListener();
     private final CamelSpanManager spanManager = CamelSpanManager.getInstance();
     private Tracer tracer;
     private CamelContext camelContext;
@@ -111,6 +114,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 // Wrap the ExecutorServiceManager with a SpanManager aware version
                 camelContext.setExecutorServiceManager(
                         new OpenTracingExecutorServiceManager(camelContext.getExecutorServiceManager(), spanManager));
+
             } catch (Exception e) {
                 throw ObjectHelper.wrapRuntimeCamelException(e);
             }
@@ -143,6 +147,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
         if (!camelContext.getRoutePolicyFactories().contains(this)) {
             camelContext.addRoutePolicyFactory(this);
         }
+        camelContext.addLogListener(logListener);
 
         if (tracer == null) {
             Set<Tracer> tracers = camelContext.getRegistry().findByType(Tracer.class);
@@ -196,6 +201,9 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
                 SpanManager.ManagedSpan parent = spanManager.current();
                 SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
+                if (!sd.newSpan()) {
+                    return;
+                }
                 SpanBuilder spanBuilder = tracer.buildSpan(sd.getOperationName(ese.getExchange(), ese.getEndpoint()))
                     .withTag(Tags.SPAN_KIND.getKey(), sd.getInitiatorSpanKind());
                 // Temporary workaround to avoid adding 'null' span as a parent
@@ -213,6 +221,10 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 }
             } else if (event instanceof ExchangeSentEvent) {
                 ExchangeSentEvent ese = (ExchangeSentEvent) event;
+                SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
+                if (!sd.newSpan()) {
+                    return;
+                }
                 SpanManager.ManagedSpan managedSpan = (SpanManager.ManagedSpan)
                         ese.getExchange().getProperty(MANAGED_SPAN_PROPERTY);
                 if (managedSpan != null) {
@@ -224,7 +236,6 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 if (LOG.isTraceEnabled()) {
                     LOG.trace("OpenTracing: start client span=" + managedSpan.getSpan());
                 }
-                SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
                 sd.post(managedSpan.getSpan(), ese.getExchange(), ese.getEndpoint());
                 managedSpan.getSpan().finish();
                 managedSpan.deactivate();
@@ -285,4 +296,24 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
         }
     }
 
+    private final class OpenTracingLogListener implements LogListener {
+
+        @Override
+        public String onLog(Exchange exchange, CamelLogger camelLogger, String message) {
+            SpanManager.ManagedSpan managedSpan = (SpanManager.ManagedSpan)
+                    exchange.getProperty(MANAGED_SPAN_PROPERTY);
+            Span span = null;
+            if (managedSpan != null) {
+                span = managedSpan.getSpan();
+            } else {
+                span = spanManager.current().getSpan();
+            }
+            if (span != null) {
+                Map<String, Object> fields = new HashMap<>();
+                fields.put("message", message);
+                span.log(fields);
+            }
+            return message;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
index 5d0445a..54414cf 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
@@ -40,6 +40,14 @@ public interface SpanDecorator {
     };
 
     /**
+     * This method indicates whether the component associated with the SpanDecorator
+     * should result in a new span being created.
+     *
+     * @return Whether a new span should be created
+     */
+    boolean newSpan();
+
+    /**
      * The camel component associated with the decorator.
      *
      * @return The camel component name

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
index 55efc4c..74d42a0 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/AbstractSpanDecorator.java
@@ -34,6 +34,11 @@ import org.apache.camel.util.URISupport;
 public abstract class AbstractSpanDecorator implements SpanDecorator {
 
     @Override
+    public boolean newSpan() {
+        return true;
+    }
+
+    @Override
     public String getOperationName(Exchange exchange, Endpoint endpoint) {
         // OpenTracing aims to use low cardinality operation names. Ideally a specific
         // span decorator should be defined for all relevant Camel components that

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
new file mode 100644
index 0000000..1b08b7d
--- /dev/null
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/LogSpanDecorator.java
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.opentracing.decorators;
+
+public class LogSpanDecorator extends AbstractSpanDecorator {
+
+    @Override
+    public String getComponent() {
+        return "log";
+    }
+
+    @Override
+    public boolean newSpan() {
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
index 36c2805..835743a 100644
--- a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
+++ b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
@@ -34,6 +34,7 @@ org.apache.camel.opentracing.decorators.JdbcSpanDecorator
 org.apache.camel.opentracing.decorators.JettySpanDecorator
 org.apache.camel.opentracing.decorators.JmsSpanDecorator
 org.apache.camel.opentracing.decorators.KafkaSpanDecorator
+org.apache.camel.opentracing.decorators.LogSpanDecorator
 org.apache.camel.opentracing.decorators.MongoDBSpanDecorator
 org.apache.camel.opentracing.decorators.MqttSpanDecorator
 org.apache.camel.opentracing.decorators.NettyHttp4SpanDecorator

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
index 0f67f57..babf9a1 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/ABCRouteTest.java
@@ -25,15 +25,15 @@ public class ABCRouteTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
         new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(1).addLogMessage("routing at b"),
         new SpanTestData().setLabel("seda:b client").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
         new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(3).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"),
         new SpanTestData().setLabel("seda:c client").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
         new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(5),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"),
         new SpanTestData().setLabel("seda:a client").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
         new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start")
@@ -72,7 +72,7 @@ public class ABCRouteTest extends CamelOpenTracingTestSupport {
                     .delay(simple("${random(1000,2000)}"));
 
                 from("seda:c").routeId("c")
-                    .log("routing at ${routeId}")
+                    .to("log:test")
                     .delay(simple("${random(0,100)}"));
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
index a48cee0..4b87ab5 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/CamelOpenTracingTestSupport.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 import io.opentracing.Span;
@@ -95,28 +94,38 @@ public class CamelOpenTracingTestSupport extends CamelTestSupport {
     }
 
     protected void verifySpan(int index, SpanTestData[] testdata, List<MockSpan> spans) {
-        String component = (String) spans.get(index).tags().get(Tags.COMPONENT.getKey());
+        MockSpan span = spans.get(index);
+        SpanTestData td = testdata[index];
+
+        String component = (String) span.tags().get(Tags.COMPONENT.getKey());
         assertNotNull(component);
-        assertEquals(testdata[index].getLabel(),
-            SpanDecorator.CAMEL_COMPONENT + URI.create((String) testdata[index].getUri()).getScheme(),
+        assertEquals(td.getLabel(),
+            SpanDecorator.CAMEL_COMPONENT + URI.create((String) td.getUri()).getScheme(),
             component);
-        assertEquals(testdata[index].getLabel(), testdata[index].getUri(), spans.get(index).tags().get("camel.uri"));
+        assertEquals(td.getLabel(), td.getUri(), span.tags().get("camel.uri"));
 
         // If span associated with TestSEDASpanDecorator, check that pre/post tags have been defined
         if ("camel-seda".equals(component)) {
-            assertTrue(spans.get(index).tags().containsKey("pre"));
-            assertTrue(spans.get(index).tags().containsKey("post"));
+            assertTrue(span.tags().containsKey("pre"));
+            assertTrue(span.tags().containsKey("post"));
         }
 
-        assertEquals(testdata[index].getLabel(), testdata[index].getOperation(), spans.get(index).operationName());
+        assertEquals(td.getLabel(), td.getOperation(), span.operationName());
+
+        assertEquals(td.getLabel(), td.getKind(),
+                span.tags().get(Tags.SPAN_KIND.getKey()));
 
-        assertEquals(testdata[index].getLabel(), testdata[index].getKind(),
-                spans.get(index).tags().get(Tags.SPAN_KIND.getKey()));
+        if (td.getParentId() != -1) {
+            assertEquals(td.getLabel(),
+                spans.get(td.getParentId()).context().spanId(),
+                span.parentId());
+        }
 
-        if (testdata[index].getParentId() != -1) {
-            assertEquals(testdata[index].getLabel(),
-                spans.get(testdata[index].getParentId()).context().spanId(),
-                spans.get(index).parentId());
+        if (!td.getLogMessages().isEmpty()) {
+            assertEquals("Number of log messages", td.getLogMessages().size(), span.logEntries().size());
+            for (int i = 0; i < td.getLogMessages().size(); i++) {
+                assertEquals(td.getLogMessages().get(i), span.logEntries().get(i).fields().get("message"));
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastParallelRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastParallelRouteTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastParallelRouteTest.java
index 856f931..ce20b30 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastParallelRouteTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/MulticastParallelRouteTest.java
@@ -25,15 +25,15 @@ public class MulticastParallelRouteTest extends CamelOpenTracingTestSupport {
 
     private static SpanTestData[] testdata = {
         new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(1),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(1).addLogMessage("routing at b"),
         new SpanTestData().setLabel("seda:b client").setUri("seda://b").setOperation("b")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
         new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(3),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(3).addLogMessage("routing at c"),
         new SpanTestData().setLabel("seda:c client").setUri("seda://c").setOperation("c")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(4),
         new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a")
-            .setKind(Tags.SPAN_KIND_SERVER).setParentId(5),
+            .setKind(Tags.SPAN_KIND_SERVER).setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"),
         new SpanTestData().setLabel("seda:a client").setUri("seda://a").setOperation("a")
             .setKind(Tags.SPAN_KIND_CLIENT).setParentId(6),
         new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start")

http://git-wip-us.apache.org/repos/asf/camel/blob/a88c016a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
index 6f532ce..eccc00c 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/SpanTestData.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.opentracing;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class SpanTestData {
 
     private String label;
@@ -23,6 +26,7 @@ public class SpanTestData {
     private String operation;
     private String kind;
     private int parentId = -1;
+    private List<String> logMessages = new ArrayList<>();
 
     public String getLabel() {
         return label;
@@ -69,4 +73,12 @@ public class SpanTestData {
         return this;
     }
 
+    public SpanTestData addLogMessage(String mesg) {
+        logMessages.add(mesg);
+        return this;
+    }
+
+    public List<String> getLogMessages() {
+        return logMessages;
+    }
 }