summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-08-12 18:02:09 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-08-12 18:02:09 +0000
commita24759306ee03ebb6faa3c12cefe60a05831e942 (patch)
tree6534e29aea8d617aa08f01cac64fd54246b8a1eb /qpid/java
parent8eae0d0abde9612b3228840b6107e778a66abd3a (diff)
downloadqpid-python-a24759306ee03ebb6faa3c12cefe60a05831e942.tar.gz
QPID-2002 : Added Empty Queue Recovery test
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@803634 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java70
1 files changed, 61 insertions, 9 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java
index c4e33ade30..d64e08d275 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java
@@ -28,8 +28,6 @@ import javax.jms.Connection;
import javax.jms.Queue;
import javax.jms.Session;
import java.util.List;
-import java.util.LinkedList;
-import java.util.Iterator;
/**
* The MessageStore test suite validates that the follow log messages as
@@ -371,7 +369,6 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest
// exclude them here.
results = filterResultsByVirtualHost(results, "/localhost");
-
assertEquals("Recovered test queue not found.", 1, results.size());
String result = getLog(results.get(0));
@@ -402,6 +399,41 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest
/**
* Description:
+ * A persistent queue must be persisted so that on recovery it can be restored independently of any messages that may be stored on it. This test verifies that the MessageStore will log that it has recovered 0 messages for persistent queues that do not have any messages.
+ * Input:
+ *
+ * 1. Default persistent configuration
+ * 2. Persistent queue with no messages enqueued
+ * Output:
+ *
+ * <date> MST-1005 : Recovered 0 messages for queue <queue.name>
+ *
+ * Validation Steps:
+ * 3. The MST ID is correct
+ * 4. This must occur after the queue recovery start MST-1004 has been logged.
+ * 5. The count is 0
+ * 6. 'messages' is correctly printed
+ * 7. The queue.name is non-empty
+ */
+ public void testMessageStoreQueueRecoveryCountEmpty() throws Exception
+ {
+ assertLoggingNotYetOccured(MESSAGES_STORE_PREFIX);
+
+ String queueName = getTestQueueName();
+
+ startBroker();
+ Connection connetion = getConnection();
+ Session session = connetion.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Queue queue = session.createQueue("direct://amq.direct/" + queueName + "/" + queueName + "?durable='true'");
+
+ session.createConsumer(queue).close();
+
+ int COUNT = 0;
+ testDurableRecoveryCount(COUNT, queueName);
+ }
+
+ /**
+ * Description:
* On recovery all the persistent messages that are stored on disk must be returned to the queue. MST-1005 will report the number of messages that have been recovered from disk.
* Input:
*
@@ -424,6 +456,21 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest
String queueName = getTestQueueName();
+ int COUNT = 10;
+
+ testDurableRecoveryCount(COUNT, queueName);
+ }
+
+ /**
+ * Send a set number of messages to a new durable queue, as specified. Then
+ * restart the broker and validate that they are restored.
+ *
+ * @param COUNT - the count to send
+ * @param queueName - the new queue name
+ * @throws Exception - if a problem occured.
+ */
+ private void testDurableRecoveryCount(int COUNT, String queueName) throws Exception
+ {
startBroker();
Connection connetion = getConnection();
Session session = connetion.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -431,8 +478,6 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest
session.createConsumer(queue).close();
- int COUNT = 10;
-
sendMessage(session, queue, COUNT);
try
{
@@ -469,16 +514,23 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest
results = _monitor.findMatches("MST-1005");
- assertEquals("Recovered test queue not found.", 2, results.size());
+ assertTrue("Insufficient MST-1005 logged.", results.size()>0);
- result = getLog(results.get(0));
+ result = null;
// If the first message is not our queue the second one will be
- if (!result.contains(queueName))
+ for(String resultEntry : results)
{
- result = getLog(results.get(1));
+ // Look for first match and set that to result
+ if (resultEntry.contains(queueName))
+ {
+ result = getLog(resultEntry);
+ break;
+ }
}
+ assertNotNull("MST-1005 entry for queue:" + queueName + ". Not found", result);
+
// getSlize will return extract the vhost from vh(/test) -> '/test'
// so remove the '/' to get the name
String vhostName = AbstractTestLogSubject.getSlice("vh", result).substring(1);