diff options
author | Robert Gemmell <robbie@apache.org> | 2013-10-27 17:09:42 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2013-10-27 17:09:42 +0000 |
commit | 62adcf960b84eae15c5947f40c7913581472fe52 (patch) | |
tree | 93c32abcd34b6259fae8291daa55282494554fb8 | |
parent | 76666e50981b92b60197d9a51c7fff62e38fb98e (diff) | |
download | qpid-python-62adcf960b84eae15c5947f40c7913581472fe52.tar.gz |
QPID-5266: include the client product string in connection open log message
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1536163 13f79535-47bb-0310-9956-ffa450edef68
11 files changed, 96 insertions, 30 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java index 639705edbf..2766f0c1f1 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java @@ -60,12 +60,12 @@ public class ConnectionMessages /** * Log a Connection message of the Format: - * <pre>CON-1001 : Open[ : Client ID : {0}][ : Protocol Version : {1}][ : Client Version : {2}]</pre> + * <pre>CON-1001 : Open[ : Client ID : {0}][ : Protocol Version : {1}][ : Client Version : {2}][ : Client Product : {3}]</pre> * Optional values are contained in [square brackets] and are numbered * sequentially in the method call. * */ - public static LogMessage OPEN(String param1, String param2, String param3, boolean opt1, boolean opt2, boolean opt3) + public static LogMessage OPEN(String param1, String param2, String param3, String param4, boolean opt1, boolean opt2, boolean opt3, boolean opt4) { String rawMessage = _messages.getString("OPEN"); StringBuffer msg = new StringBuffer(); @@ -108,11 +108,21 @@ public class ConnectionMessages // Use 'end + 1' to remove the ']' from the output msg.append(parts[3].substring(end + 1)); + + // Add Option : : Client Product : {3}. + end = parts[4].indexOf(']'); + if (opt4) + { + msg.append(parts[4].substring(0, end)); + } + + // Use 'end + 1' to remove the ']' from the output + msg.append(parts[4].substring(end + 1)); } rawMessage = msg.toString(); - final Object[] messageArguments = {param1, param2, param3}; + final Object[] messageArguments = {param1, param2, param3, param4}; // Create a new MessageFormat to ensure thread safety. // Sharing a MessageFormat and using applyPattern is not thread safe MessageFormat formatter = new MessageFormat(rawMessage, _currentLocale); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties index a99bcc7352..ad9896a659 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties @@ -21,6 +21,6 @@ # 0 - Client id # 1 - Protocol Version # 2 - Client Version -OPEN = CON-1001 : Open[ : Client ID : {0}][ : Protocol Version : {1}][ : Client Version : {2}] +OPEN = CON-1001 : Open[ : Client ID : {0}][ : Protocol Version : {1}][ : Client Version : {2}][ : Client Product : {3}] CLOSE = CON-1002 : Close IDLE_CLOSE = CON-1003 : Closed due to inactivity diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java index 19c5d03e0c..180653af0e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java @@ -79,6 +79,8 @@ public interface AMQConnectionModel extends StatisticsGatherer String getClientVersion(); + String getClientProduct(); + String getPrincipalAsString(); long getSessionCountLimit(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java index b2951ae54a..fedc3fc52b 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java @@ -27,27 +27,29 @@ import java.util.List; */ public class ConnectionMessagesTest extends AbstractTestMessages { - public void testConnectionOpen_WithClientIDProtocolVersionClientVersion() + public void testConnectionOpen_WithClientIDProtocolVersionClientVersionClientProduct() { String clientID = "client"; String protocolVersion = "8-0"; String clientVersion = "1.2.3_4"; + String clientProduct = "myProduct"; - _logMessage = ConnectionMessages.OPEN(clientID, protocolVersion, clientVersion, true , true, true); + _logMessage = ConnectionMessages.OPEN(clientID, protocolVersion, clientVersion, clientProduct , true, true, true, true); List<Object> log = performLog(); String[] expected = {"Open :", "Client ID", clientID, ": Protocol Version :", protocolVersion, - ": Client Version :", clientVersion}; + ": Client Version :", clientVersion, + ": Client Product :", clientProduct}; validateLogMessage(log, "CON-1001", expected); } - public void testConnectionOpen_WithClientIDNoProtocolVersionNoClientVersion() + public void testConnectionOpen_WithClientIDNoProtocolVersionNoClientVersionNoClientProduct() { String clientID = "client"; - _logMessage = ConnectionMessages.OPEN(clientID, null, null, true, false, false); + _logMessage = ConnectionMessages.OPEN(clientID, null, null, null, true, false, false, false); List<Object> log = performLog(); String[] expected = {"Open :", "Client ID", clientID}; @@ -55,11 +57,11 @@ public class ConnectionMessagesTest extends AbstractTestMessages validateLogMessage(log, "CON-1001", expected); } - public void testConnectionOpen_WithNOClientIDProtocolVersionNoClientVersion() + public void testConnectionOpen_WithNOClientIDProtocolVersionNoClientVersionNoClientProduct() { String protocolVersion = "8-0"; - _logMessage = ConnectionMessages.OPEN(null, protocolVersion, null, false , true, false); + _logMessage = ConnectionMessages.OPEN(null, protocolVersion, null, null , false, true, false, false); List<Object> log = performLog(); String[] expected = {"Open", ": Protocol Version :", protocolVersion}; @@ -67,11 +69,11 @@ public class ConnectionMessagesTest extends AbstractTestMessages validateLogMessage(log, "CON-1001", expected); } - public void testConnectionOpen_WithNOClientIDNoProtocolVersionClientVersion() + public void testConnectionOpen_WithNOClientIDNoProtocolVersionClientVersionNoClientProduct() { String clientVersion = "1.2.3_4"; - _logMessage = ConnectionMessages.OPEN(null, null, clientVersion, false , false, true); + _logMessage = ConnectionMessages.OPEN(null, null, clientVersion, null , false, false, true, false); List<Object> log = performLog(); String[] expected = {"Open", ": Client Version :", clientVersion}; @@ -79,11 +81,11 @@ public class ConnectionMessagesTest extends AbstractTestMessages validateLogMessage(log, "CON-1001", expected); } - public void testConnectionOpen_WithNOClientIDNoProtocolVersionNullClientVersion() + public void testConnectionOpen_WithNOClientIDNoProtocolVersionNullClientVersionNoClientProduct() { String clientVersion = null; - _logMessage = ConnectionMessages.OPEN(null, null, clientVersion , false , false, true); + _logMessage = ConnectionMessages.OPEN(null, null, clientVersion , null , false, false, true, false); List<Object> log = performLog(); String[] expected = {"Open", ": Client Version :", clientVersion}; @@ -91,9 +93,21 @@ public class ConnectionMessagesTest extends AbstractTestMessages validateLogMessage(log, "CON-1001", true, expected); } - public void testConnectionOpen_WithNoClientIDNoProtocolVersionNoClientVersion() + public void testConnectionOpen_WithNOClientIDNoProtocolVersionNoClientVersionNullClientProduct() { - _logMessage = ConnectionMessages.OPEN(null, null, null, false, false, false); + String clientProduct = null; + + _logMessage = ConnectionMessages.OPEN(null, null, null , clientProduct , false, false, false, true); + List<Object> log = performLog(); + + String[] expected = {"Open", ": Client Product :", clientProduct}; + + validateLogMessage(log, "CON-1001", true, expected); + } + + public void testConnectionOpen_WithNoClientIDNoProtocolVersionNoClientVersionNoClientProduct() + { + _logMessage = ConnectionMessages.OPEN(null, null, null, null, false, false, false, false); List<Object> log = performLog(); String[] expected = {"Open"}; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java index b26d7530aa..77f09dc567 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java @@ -530,6 +530,12 @@ public class MockSubscription implements Subscription } @Override + public String getClientProduct() + { + return null; + } + + @Override public String getPrincipalAsString() { return null; diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java index 73708d9841..9e41a5234c 100755 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java @@ -79,8 +79,8 @@ public class ProtocolEngine_0_10 extends InputHandler implements ServerProtocol _connection.setSender(new Disassembler(wrapSender(sender), MAX_FRAME_SIZE)); _connection.setPeerPrincipal(_network.getPeerPrincipal()); // FIXME Two log messages to maintain compatibility with earlier protocol versions - _connection.getLogActor().message(ConnectionMessages.OPEN(null, null, null, false, false, false)); - _connection.getLogActor().message(ConnectionMessages.OPEN(null, "0-10", null, false, true, false)); + _connection.getLogActor().message(ConnectionMessages.OPEN(null, null, null, null, false, false, false, false)); + _connection.getLogActor().message(ConnectionMessages.OPEN(null, "0-10", null, null, false, true, false, false)); } private Sender<ByteBuffer> wrapSender(final Sender<ByteBuffer> sender) diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java index 0015988ab7..72d6a0832d 100644 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java @@ -106,7 +106,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel, { _onOpenTask.run(); } - _actor.message(ConnectionMessages.OPEN(getClientId(), "0-10", getClientVersion(), true, true, true)); + _actor.message(ConnectionMessages.OPEN(getClientId(), "0-10", getClientVersion(), getClientProduct(), true, true, true, true)); getVirtualHost().getConnectionRegistry().registerConnection(this); } @@ -499,17 +499,24 @@ public class ServerConnection extends Connection implements AMQConnectionModel, return _lastIoTime.longValue(); } - + @Override public String getClientId() { return getConnectionDelegate().getClientId(); } + @Override public String getClientVersion() { return getConnectionDelegate().getClientVersion(); } + @Override + public String getClientProduct() + { + return getConnectionDelegate().getClientProduct(); + } + public String getPrincipalAsString() { return getAuthorizedPrincipal() == null ? null : getAuthorizedPrincipal().getName(); diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java index 6634627805..129a811b61 100644 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java @@ -347,4 +347,9 @@ public class ServerConnectionDelegate extends ServerDelegate { return _clientProperties == null ? null : (String) _clientProperties.get(ConnectionStartProperties.VERSION_0_10); } + + public String getClientProduct() + { + return _clientProperties == null ? null : (String) _clientProperties.get(ConnectionStartProperties.PRODUCT); + } } diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java index 34cbd90b8c..33300e9e59 100644 --- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java +++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java @@ -114,6 +114,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi private AMQShortString _contextKey; private String _clientVersion = null; + private String _clientProduct = null; private VirtualHost _virtualHost; @@ -212,7 +213,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi _logSubject = new ConnectionLogSubject(this); - _actor.message(ConnectionMessages.OPEN(null, null, null, false, false, false)); + _actor.message(ConnectionMessages.OPEN(null, null, null, null, false, false, false, false)); _closeWhenNoRoute = (Boolean)_broker.getAttribute(Broker.CONNECTION_CLOSE_WHEN_NO_ROUTE); @@ -476,7 +477,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi try { // Log incomming protocol negotiation request - _actor.message(ConnectionMessages.OPEN(null, pi.getProtocolMajor() + "-" + pi.getProtocolMinor(), null, false, true, false)); + _actor.message(ConnectionMessages.OPEN(null, pi.getProtocolMajor() + "-" + pi.getProtocolMinor(), null, null, false, true, false, false)); ProtocolVersion pv = pi.checkVersion(); // Fails if not correct @@ -1109,6 +1110,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi } _clientVersion = _clientProperties.getString(ConnectionStartProperties.VERSION_0_8); + _clientProduct = _clientProperties.getString(ConnectionStartProperties.PRODUCT); String clientId = _clientProperties.getString(ConnectionStartProperties.CLIENT_ID_0_8); if (clientId != null) @@ -1116,7 +1118,7 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi setContextKey(new AMQShortString(clientId)); } - _actor.message(ConnectionMessages.OPEN(clientId, _protocolVersion.toString(), _clientVersion, true, true, true)); + _actor.message(ConnectionMessages.OPEN(clientId, _protocolVersion.toString(), _clientVersion, _clientProduct, true, true, true, true)); } } @@ -1350,6 +1352,12 @@ public class AMQProtocolEngine implements ServerProtocolEngine, AMQProtocolSessi return _clientVersion; } + @Override + public String getClientProduct() + { + return _clientProduct; + } + public String getPrincipalAsString() { return getAuthId(); diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java index 320875cc97..4cb9767514 100644 --- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java +++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java @@ -224,6 +224,12 @@ public class Connection_1_0 implements ConnectionEventListener } @Override + public String getClientProduct() + { + return ""; //TODO + } + + @Override public String getPrincipalAsString() { return String.valueOf(_conn.getUser()); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java index ffe25a5cbe..2eccab102b 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java @@ -90,18 +90,19 @@ public class ConnectionLoggingTest extends AbstractTestLogging validateMessageID("CON-1001",log); // validate the last three CON-1001 messages. - // MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Client ID : clientid : Protocol Version : 0-9 : Client Version : 1.2.3_4 - validateConnectionOpen(results, 0, true, true, clientid, true, QpidProperties.getReleaseVersion()); + // MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Client ID : clientid : Protocol Version : 0-9 : Client Version : 1.2.3_4 : Client Product : product + validateConnectionOpen(results, 0, true, true, clientid, true, QpidProperties.getReleaseVersion(), true, QpidProperties.getProductName()); // MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Protocol Version : 0-9 - validateConnectionOpen(results, 1, true, false, null, false, null); + validateConnectionOpen(results, 1, true, false, null, false, null, false, null); // MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open - validateConnectionOpen(results, 2, false, false, null, false, null); + validateConnectionOpen(results, 2, false, false, null, false, null, false, null); } private void validateConnectionOpen(List<String> results, int positionFromEnd, - boolean protocolVersionPresent, boolean clientIdOptionPresent, String clientIdValue, boolean clientVersionPresent, String clientVersionValue) + boolean protocolVersionPresent, boolean clientIdOptionPresent, String clientIdValue, + boolean clientVersionPresent, String clientVersionValue, boolean clientProductPresent, String clientProductValue) { String log = getLogMessageFromEnd(results, positionFromEnd); @@ -119,12 +120,19 @@ public class ConnectionLoggingTest extends AbstractTestLogging //fixme there is no way currently to find out the negotiated protocol version // The delegate is the versioned class ((AMQConnection)connection)._delegate - assertEquals("unexpected Client ID option state", clientVersionPresent, fromMessage(log).contains("Client Version :")); + assertEquals("unexpected Client Version option state", clientVersionPresent, fromMessage(log).contains("Client Version :")); if(clientVersionPresent && clientVersionValue != null) { assertTrue("Client version value is not present: " + clientVersionValue, fromMessage(log).contains(clientVersionValue)); } + + assertEquals("unexpected Client Product option state", clientVersionPresent, fromMessage(log).contains("Client Product :")); + + if(clientProductPresent && clientProductValue != null) + { + assertTrue("Client product value is not present: " + clientProductValue, fromMessage(log).contains(clientProductValue)); + } } /** |