You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2017/03/31 16:39:13 UTC

qpid-jms git commit: QPIDJMS-281 Add transport trace bytes feature

Repository: qpid-jms
Updated Branches:
  refs/heads/master c6be7e958 -> 2afa0f7f1


QPIDJMS-281 Add transport trace bytes feature

Add transport.traceBytes option that adds a Netty LoggingHandler to the
channel to capture and log bytes in and out.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/2afa0f7f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/2afa0f7f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/2afa0f7f

Branch: refs/heads/master
Commit: 2afa0f7f1d87c508b94478c2b8e617a616dbb82a
Parents: c6be7e9
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Mar 31 12:39:06 2017 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Mar 31 12:39:06 2017 -0400

----------------------------------------------------------------------
 .../qpid/jms/transports/TransportOptions.java   | 20 ++++++++++++++++++++
 .../jms/transports/netty/NettyTcpTransport.java |  5 +++++
 .../jms/transports/TransportOptionsTest.java    |  4 ++++
 3 files changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2afa0f7f/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportOptions.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportOptions.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportOptions.java
index 65bbdfa..efdfb82 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportOptions.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportOptions.java
@@ -31,6 +31,7 @@ public class TransportOptions implements Cloneable {
     public static final int DEFAULT_CONNECT_TIMEOUT = 60000;
     public static final int DEFAULT_TCP_PORT = 5672;
     public static final boolean DEFAULT_USE_EPOLL = true;
+    public static final boolean DEFAULT_TRACE_BYTES = true;
 
     private int sendBufferSize = DEFAULT_SEND_BUFFER_SIZE;
     private int receiveBufferSize = DEFAULT_RECEIVE_BUFFER_SIZE;
@@ -42,6 +43,7 @@ public class TransportOptions implements Cloneable {
     private boolean tcpNoDelay = DEFAULT_TCP_NO_DELAY;
     private int defaultTcpPort = DEFAULT_TCP_PORT;
     private boolean useEpoll = DEFAULT_USE_EPOLL;
+    private boolean traceBytes = DEFAULT_TRACE_BYTES;
 
     /**
      * @return the currently set send buffer size in bytes.
@@ -181,6 +183,23 @@ public class TransportOptions implements Cloneable {
         this.useEpoll = useEpoll;
     }
 
+    /**
+     * @return true if the transport should enable byte tracing
+     */
+    public boolean isTraceBytes() {
+        return traceBytes;
+    }
+
+    /**
+     * Determines if the transport should add a logger for bytes in / out
+     *
+     * @param traceBytes
+     * 		should the transport log the bytes in and out.
+     */
+    public void setTraceBytes(boolean traceBytes) {
+        this.traceBytes = traceBytes;
+    }
+
     @Override
     public TransportOptions clone() {
         return copyOptions(new TransportOptions());
@@ -201,6 +220,7 @@ public class TransportOptions implements Cloneable {
         copy.setTrafficClass(getTrafficClass());
         copy.setDefaultTcpPort(getDefaultTcpPort());
         copy.setUseEpoll(isUseEpoll());
+        copy.setTraceBytes(isTraceBytes());
 
         return copy;
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2afa0f7f/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
index 5b2fa7f..22aaf46 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
@@ -52,6 +52,7 @@ import io.netty.channel.epoll.EpollEventLoopGroup;
 import io.netty.channel.epoll.EpollSocketChannel;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.nio.NioSocketChannel;
+import io.netty.handler.logging.LoggingHandler;
 import io.netty.handler.ssl.SslHandler;
 import io.netty.util.concurrent.Future;
 import io.netty.util.concurrent.GenericFutureListener;
@@ -403,6 +404,10 @@ public class NettyTcpTransport implements Transport {
             channel.pipeline().addLast(sslHandler);
         }
 
+        if (getTransportOptions().isTraceBytes()) {
+            channel.pipeline().addLast("logger", new LoggingHandler(getClass()));
+        }
+
         addAdditionalHandlers(channel.pipeline());
 
         channel.pipeline().addLast(createChannelHandler());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2afa0f7f/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
index b3e5637..f716f79 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
@@ -37,6 +37,7 @@ public class TransportOptionsTest extends QpidJmsTestCase {
     public static final int TEST_CONNECT_TIMEOUT = 90000;
     public static final int TEST_DEFAULT_TCP_PORT = 5682;
     public static final boolean TEST_USE_EPOLL_VALUE = !TransportOptions.DEFAULT_USE_EPOLL;
+    public static final boolean TEST_TRACE_BYTES_VALUE = !TransportOptions.DEFAULT_TRACE_BYTES;
 
     @Test
     public void testCreate() {
@@ -59,6 +60,7 @@ public class TransportOptionsTest extends QpidJmsTestCase {
         assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
         assertEquals(TEST_DEFAULT_TCP_PORT, options.getDefaultTcpPort());
         assertEquals(TEST_USE_EPOLL_VALUE, options.isUseEpoll());
+        assertEquals(TEST_TRACE_BYTES_VALUE, options.isTraceBytes());
     }
 
     @Test
@@ -75,6 +77,7 @@ public class TransportOptionsTest extends QpidJmsTestCase {
         assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
         assertEquals(TEST_DEFAULT_TCP_PORT, options.getDefaultTcpPort());
         assertEquals(TEST_USE_EPOLL_VALUE, options.isUseEpoll());
+        assertEquals(TEST_TRACE_BYTES_VALUE, options.isTraceBytes());
     }
 
     @Test
@@ -143,6 +146,7 @@ public class TransportOptionsTest extends QpidJmsTestCase {
         options.setConnectTimeout(TEST_CONNECT_TIMEOUT);
         options.setDefaultTcpPort(TEST_DEFAULT_TCP_PORT);
         options.setUseEpoll(TEST_USE_EPOLL_VALUE);
+        options.setTraceBytes(TEST_TRACE_BYTES_VALUE);
 
         return options;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org