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