summaryrefslogtreecommitdiff
path: root/qpid/java/systests/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-06-26 14:53:34 +0000
committerAlex Rudyy <orudyy@apache.org>2013-06-26 14:53:34 +0000
commit8bdc5010fef590e5dc3c424b1f41f8df42c47c11 (patch)
tree4805fd38f0f9a321581cfb0079e1ef2dd571e84e /qpid/java/systests/src
parent92067361c279257be2b2ee73484da61c9327c05a (diff)
downloadqpid-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.java102
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);