You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/07/13 07:14:38 UTC

karaf-decanter git commit: [KARAF-5033] Use map for headers and properties in Camel Tracer and add tests to verify that inner map works fine in the marshaller and in the Decanter Camel Tracer

Repository: karaf-decanter
Updated Branches:
  refs/heads/master 5c9104f3f -> 941a2adad


[KARAF-5033] Use map for headers and properties in Camel Tracer and add tests to verify that inner map works fine in the marshaller and in the Decanter Camel Tracer


Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/941a2ada
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/941a2ada
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/941a2ada

Branch: refs/heads/master
Commit: 941a2adadc4791468059ace44c78077f147c09d2
Parents: 5c9104f
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Thu Jul 13 09:13:13 2017 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Thu Jul 13 09:13:13 2017 +0200

----------------------------------------------------------------------
 collector/camel-tracer/pom.xml                  |  13 +++
 .../camel/DecanterTraceEventHandler.java        |  22 +++-
 .../camel/DecanterTraceEventHandlerTest.java    | 115 +++++++++++++++++++
 .../marshaller/json/TestJsonMarshaller.java     |  27 +++++
 4 files changed, 174 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/941a2ada/collector/camel-tracer/pom.xml
----------------------------------------------------------------------
diff --git a/collector/camel-tracer/pom.xml b/collector/camel-tracer/pom.xml
index ee57afe..7903c7e 100644
--- a/collector/camel-tracer/pom.xml
+++ b/collector/camel-tracer/pom.xml
@@ -39,6 +39,19 @@
             <artifactId>camel-core</artifactId>
             <version>${camel.version}</version>
         </dependency>
+
+        <!-- test -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.7.22</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.decanter.marshaller</groupId>
+            <artifactId>org.apache.karaf.decanter.marshaller.json</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/941a2ada/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java
----------------------------------------------------------------------
diff --git a/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java b/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java
index a9fa32a..82ba378 100644
--- a/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java
+++ b/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java
@@ -1,3 +1,19 @@
+/*
+ * 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.karaf.decanter.collector.camel;
 
 import org.apache.camel.Exchange;
@@ -50,17 +66,17 @@ public class DecanterTraceEventHandler implements TraceEventHandler {
                 data.put(property.substring("decanter.".length()), exchange.getProperties().get(property));
             }
         }
-        data.put("properties", exchange.getProperties().isEmpty() ? null : exchange.getProperties().toString());
+        data.put("properties", exchange.getProperties().isEmpty() ? null : exchange.getProperties());
         for (String header : exchange.getIn().getHeaders().keySet()) {
             if (header.startsWith("decanter.")) {
                 data.put(header.substring("decanter.".length()), exchange.getIn().getHeader(header));
             }
         }
-        data.put("inHeaders", exchange.getIn().getHeaders().isEmpty() ? null : exchange.getIn().getHeaders().toString());
+        data.put("inHeaders", exchange.getIn().getHeaders().isEmpty() ? null : exchange.getIn().getHeaders());
         data.put("inBody", MessageHelper.extractBodyAsString(exchange.getIn()));
         data.put("inBodyType", MessageHelper.getBodyTypeName(exchange.getIn()));
         if (exchange.hasOut()) {
-            data.put("outHeaders", exchange.getOut().getHeaders().isEmpty() ? null : exchange.getOut().getHeaders().toString());
+            data.put("outHeaders", exchange.getOut().getHeaders().isEmpty() ? null : exchange.getOut().getHeaders());
             data.put("outBody", MessageHelper.extractBodyAsString(exchange.getOut()));
             data.put("outBodyType", MessageHelper.getBodyTypeName(exchange.getOut()));
         }

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/941a2ada/collector/camel-tracer/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandlerTest.java
----------------------------------------------------------------------
diff --git a/collector/camel-tracer/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandlerTest.java b/collector/camel-tracer/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandlerTest.java
new file mode 100644
index 0000000..228a509
--- /dev/null
+++ b/collector/camel-tracer/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandlerTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.karaf.decanter.collector.camel;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.processor.interceptor.Tracer;
+import org.apache.karaf.decanter.marshaller.json.JsonMarshaller;
+import org.junit.Assert;
+import org.junit.Test;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DecanterTraceEventHandlerTest {
+
+    @Test
+    public void testTracer() throws Exception {
+        JsonMarshaller marshaller = new JsonMarshaller();
+
+        DispatcherMock eventAdmin = new DispatcherMock();
+
+        RouteBuilder builder = new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").id("testRoute").to("log:foo");
+            }
+        };
+        CamelContext camelContext = new DefaultCamelContext();
+        camelContext.addRoutes(builder);
+        Tracer tracer = new Tracer();
+        tracer.setEnabled(true);
+        tracer.setTraceOutExchanges(true);
+        tracer.setLogLevel(LoggingLevel.OFF);
+        DecanterTraceEventHandler handler = new DecanterTraceEventHandler();
+        handler.setEventAdmin(eventAdmin);
+        tracer.addTraceHandler(handler);
+        camelContext.setTracing(true);
+        camelContext.setDefaultTracer(tracer);
+        camelContext.start();
+
+        ProducerTemplate template = camelContext.createProducerTemplate();
+        template.sendBodyAndHeader("direct:start", "TEST", "header", "test");
+
+        for (Event event : eventAdmin.getPostEvents()) {
+            String jsonString = marshaller.marshal(event);
+            JsonReader jsonReader = Json.createReader(new StringReader(jsonString));
+            JsonObject rootObject = jsonReader.readObject();
+            Assert.assertEquals("InOnly", rootObject.getString("exchangePattern"));
+            Assert.assertEquals("camelTracer", rootObject.getString("type"));
+            Assert.assertEquals("log://foo", rootObject.getString("toNode"));
+            Assert.assertEquals("testRoute", rootObject.getString("routeId"));
+            JsonObject headersObject = rootObject.getJsonObject("inHeaders");
+            Assert.assertEquals("test", headersObject.getString("header"));
+            Assert.assertEquals("direct://start", rootObject.getString("fromEndpointUri"));
+            Assert.assertEquals("127.0.0.1", rootObject.getString("hostAddress"));
+            Assert.assertEquals("to1", rootObject.getString("nodeId"));
+            Assert.assertEquals("TEST", rootObject.getString("inBody"));
+            JsonObject propertiesObject = rootObject.getJsonObject("properties");
+            Assert.assertEquals("log://foo", propertiesObject.getString("CamelToEndpoint"));
+            Assert.assertEquals("String", rootObject.getString("inBodyType"));
+            Assert.assertEquals("decanter/collect/camel/tracer", rootObject.getString("event_topics"));
+            System.out.println(marshaller.marshal(event));
+        }
+    }
+
+    private class DispatcherMock implements EventAdmin {
+
+        private List<Event> postEvents = new ArrayList<>();
+        private List<Event> sendEvents = new ArrayList<>();
+
+        @Override
+        public void postEvent(Event event) {
+            postEvents.add(event);
+        }
+
+        @Override
+        public void sendEvent(Event event) {
+            System.out.println("SEND EVENT");
+            sendEvents.add(event);
+        }
+
+        public List<Event> getPostEvents() {
+            return postEvents;
+        }
+
+        public List<Event> getSendEvents() {
+            return sendEvents;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/941a2ada/marshaller/json/src/test/java/org/apache/karaf/decanter/marshaller/json/TestJsonMarshaller.java
----------------------------------------------------------------------
diff --git a/marshaller/json/src/test/java/org/apache/karaf/decanter/marshaller/json/TestJsonMarshaller.java b/marshaller/json/src/test/java/org/apache/karaf/decanter/marshaller/json/TestJsonMarshaller.java
index 4d96b77..7abb5f4 100644
--- a/marshaller/json/src/test/java/org/apache/karaf/decanter/marshaller/json/TestJsonMarshaller.java
+++ b/marshaller/json/src/test/java/org/apache/karaf/decanter/marshaller/json/TestJsonMarshaller.java
@@ -31,6 +31,7 @@ import org.osgi.service.event.Event;
 import org.osgi.service.event.EventConstants;
 
 public class TestJsonMarshaller {
+
     private static final long EXPECTED_TIMESTAMP = 1454428780634L;
     private static final String EXPECTED_TOPIC = "testTopic";
 
@@ -49,7 +50,33 @@ public class TestJsonMarshaller {
        long ts = jsonO.getJsonNumber(EventConstants.TIMESTAMP).longValue();
        Assert.assertEquals("timestamp long", EXPECTED_TIMESTAMP, ts);
        Assert.assertEquals("Topic", EXPECTED_TOPIC, jsonO.getString(EventConstants.EVENT_TOPIC.replace('.', '_')));
+   }
+
+   @Test
+   public void testInnerMap() throws Exception {
+       Marshaller marshaller = new JsonMarshaller();
+
+       Map<String, Object> map = new HashMap<>();
+       map.put(EventConstants.TIMESTAMP, EXPECTED_TIMESTAMP);
+       map.put("test", "test");
+       Map<String, Object> inner = new HashMap<>();
+       inner.put("other", "other");
+       map.put("inner", inner);
+
+       String jsonString = marshaller.marshal(new Event(EXPECTED_TOPIC, map));
+
+       System.out.println(jsonString);
+
+       JsonReader reader = Json.createReader(new StringReader(jsonString));
+       JsonObject jsonObject = reader.readObject();
+       Assert.assertEquals("Timestamp string", "2016-02-02T15:59:40,634Z", jsonObject.getString("@timestamp"));
+       long ts = jsonObject.getJsonNumber(EventConstants.TIMESTAMP).longValue();
+       Assert.assertEquals("timestamp long", EXPECTED_TIMESTAMP, ts);
+
+       Assert.assertEquals("test", jsonObject.getString("test"));
 
+       JsonObject innerObject = jsonObject.getJsonObject("inner");
+       Assert.assertEquals("other", innerObject.getString("other"));
    }
 
 }