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"));
}
}