summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-03-09 15:53:50 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-03-09 15:53:50 +0000
commit4ecef8a975b415c342d1e1fad0b4d5127e3f58fb (patch)
treee5ff41006dc0ad4a01006343630d15c61675917d
parentbf192f54d641f1fd84a7213567673c17621d7214 (diff)
downloadqpid-python-4ecef8a975b415c342d1e1fad0b4d5127e3f58fb.tar.gz
Added test to ensure ThreadPool is references are correctly removed for Priority queues.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@751714 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueEntryList.java1
-rw-r--r--java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueThreadPoolTest.java (renamed from java/broker/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueThreadPoolTest.java)54
2 files changed, 45 insertions, 10 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueEntryList.java b/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueEntryList.java
index 89f6e6378b..5dd76a5299 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueEntryList.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueEntryList.java
@@ -457,6 +457,7 @@ public class PriorityQueueEntryList extends FlowableBaseQueueEntryList implement
@Override
public void stop()
{
+ super.stop();
for (QueueEntryList queueEntryList : _priorityLists)
{
queueEntryList.stop();
diff --git a/java/broker/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueThreadPoolTest.java b/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueThreadPoolTest.java
index 40961a3d2e..c7cf778d93 100644
--- a/java/broker/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueThreadPoolTest.java
+++ b/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueThreadPoolTest.java
@@ -21,19 +21,17 @@
package org.apache.qpid.server.queue;
import junit.framework.TestCase;
+import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.pool.ReferenceCountingExecutorService;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-
import org.apache.qpid.server.registry.ApplicationRegistry;
-import org.apache.qpid.AMQException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.qpid.server.virtualhost.VirtualHost;
-public class SimpleAMQQueueThreadPoolTest extends TestCase
+public class AMQQueueThreadPoolTest extends TestCase
{
- public void test() throws AMQException
+ public void testSimpleAMQQueue() throws AMQException
{
int initialCount = ReferenceCountingExecutorService.getInstance().getReferenceCount();
VirtualHost test = ApplicationRegistry.getInstance(1).getVirtualHostRegistry().getVirtualHost("test");
@@ -51,14 +49,50 @@ public class SimpleAMQQueueThreadPoolTest extends TestCase
// 2 - queue InhalerThread
// 3 - queue PurgerThread
assertEquals("References not increased", initialCount + 3, ReferenceCountingExecutorService.getInstance().getReferenceCount());
-
+
queue.stop();
- assertEquals("References not decreased", initialCount , ReferenceCountingExecutorService.getInstance().getReferenceCount());
+ assertEquals("References not decreased", initialCount, ReferenceCountingExecutorService.getInstance().getReferenceCount());
}
finally
{
ApplicationRegistry.remove(1);
- }
+ }
}
+
+ public void testPriorityAMQQueue() throws AMQException
+ {
+ int initialCount = ReferenceCountingExecutorService.getInstance().getReferenceCount();
+ VirtualHost test = ApplicationRegistry.getInstance(1).getVirtualHostRegistry().getVirtualHost("test");
+
+ try
+ {
+
+ FieldTable arguements = new FieldTable();
+ int priorities = 10;
+ arguements.put(AMQQueueFactory.X_QPID_PRIORITIES, priorities);
+
+ SimpleAMQQueue queue = (SimpleAMQQueue) AMQQueueFactory.createAMQQueueImpl(new AMQShortString("test"), false,
+ new AMQShortString("owner"),
+ false, test, arguements);
+
+ assertFalse("Creation did not start Pool.", ReferenceCountingExecutorService.getInstance().getPool().isShutdown());
+
+ //This is +2 because:
+ // 1 - asyncDelivery Thread
+ // 2 + 3 - queue InhalerThread, PurgerThread for the Priority Queue
+ // priorities * ( Inhaler , Purger) for each priority level
+ assertEquals("References not increased", (initialCount + 3) + priorities * 2,
+ ReferenceCountingExecutorService.getInstance().getReferenceCount());
+
+ queue.stop();
+
+ assertEquals("References not decreased", initialCount, ReferenceCountingExecutorService.getInstance().getReferenceCount());
+ }
+ finally
+ {
+ ApplicationRegistry.remove(1);
+ }
+ }
+
}