diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-06-26 14:53:34 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-06-26 14:53:34 +0000 |
| commit | 8bdc5010fef590e5dc3c424b1f41f8df42c47c11 (patch) | |
| tree | 4805fd38f0f9a321581cfb0079e1ef2dd571e84e /qpid/java/systests/src | |
| parent | 92067361c279257be2b2ee73484da61c9327c05a (diff) | |
| download | qpid-python-8bdc5010fef590e5dc3c424b1f41f8df42c47c11.tar.gz | |
QPID-4951: Add cause code and message into operational logs for session close initiated by the Broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1496951 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/systests/src')
| -rw-r--r-- | qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java index 1b2ec9c092..cec339c033 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ChannelLoggingTest.java @@ -20,16 +20,22 @@ */ package org.apache.qpid.server.logging; +import org.apache.qpid.AMQChannelClosedException; +import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQDestination; +import org.apache.qpid.client.AMQSession; import javax.jms.Connection; import javax.jms.MessageConsumer; import javax.jms.Queue; import javax.jms.Session; import java.util.List; +import java.util.regex.Pattern; public class ChannelLoggingTest extends AbstractTestLogging { + private static final String CHANNEL_CLOSE_FORCED_MESSAGE_PATTERN = "CHN-1003 : Close : \\d* - .*"; private static final String CHANNEL_PREFIX = "CHN-"; // No explicit startup configuration is required for this test @@ -298,6 +304,102 @@ public class ChannelLoggingTest extends AbstractTestLogging validateChannelClose(results); } + public void testChannelClosedOnQueueArgumentsMismatch() throws Exception + { + assertLoggingNotYetOccured(CHANNEL_PREFIX); + + Connection connection = getConnection(); + + // Create a session and then close it + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + waitForMessage("CHN-1001"); + + String testQueueName = getTestQueueName(); + + Queue nonDurableQueue = (Queue) session.createQueue("direct://amq.direct/" + testQueueName + "/" + testQueueName + + "?durable='false'"); + + ((AMQSession<?,?>)session).declareAndBind((AMQDestination)nonDurableQueue); + + Queue durableQueue = (Queue) session.createQueue("direct://amq.direct/" + testQueueName + "/" + testQueueName + + "?durable='true'"); + try + { + ((AMQSession<?,?>)session).declareAndBind((AMQDestination) durableQueue); + fail("Exception not thrown"); + } + catch (AMQChannelClosedException acce) + { + // pass + } + catch (Exception e) + { + fail("Wrong exception thrown " + e); + } + waitForMessage("CHN-1003"); + + List<String> results = findMatches(CHANNEL_PREFIX); + assertTrue("No CHN messages logged", results.size() > 0); + + String closeLog = results.get(results.size() -1); + int closeMessageID = closeLog.indexOf("CHN-1003"); + assertFalse("CHN-1003 is not found", closeMessageID == -1); + + String closeMessage = closeLog.substring(closeMessageID); + assertTrue("Unexpected close channel message :" + closeMessage, Pattern.matches(CHANNEL_CLOSE_FORCED_MESSAGE_PATTERN, closeMessage)); + + session.close(); + connection.close(); + } + + public void testChannelClosedOnExclusiveQueueDeclaredOnDifferentSession() throws Exception + { + assertLoggingNotYetOccured(CHANNEL_PREFIX); + + Connection connection = getConnection(); + + // Create a session and then close it + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + waitForMessage("CHN-1001"); + + Session session2 = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + waitForMessage("CHN-1001"); + + String testQueueName = getTestQueueName(); + + Queue queue = (Queue) session.createQueue("direct://amq.direct/" + testQueueName + "/" + testQueueName + + "?exclusive='true'"); + + ((AMQSession<?,?>)session).declareAndBind((AMQDestination)queue); + + try + { + ((AMQSession<?,?>)session2).declareAndBind((AMQDestination) queue); + fail("Exception not thrown"); + } + catch (AMQException acce) + { + // pass + } + catch (Exception e) + { + fail("Wrong exception thrown " + e); + } + waitForMessage("CHN-1003"); + + List<String> results = findMatches(CHANNEL_PREFIX); + assertTrue("No CHN messages logged", results.size() > 0); + + String closeLog = results.get(results.size() -1); + int closeMessageID = closeLog.indexOf("CHN-1003"); + assertFalse("CHN-1003 is not found", closeMessageID == -1); + + String closeMessage = closeLog.substring(closeMessageID); + assertTrue("Unexpected close channel message :" + closeMessage, Pattern.matches(CHANNEL_CLOSE_FORCED_MESSAGE_PATTERN, closeMessage)); + + session.close(); + connection.close(); + } private void validateChannelClose(List<String> results) { String open = getLogMessage(results, 0); |
