summaryrefslogtreecommitdiff
path: root/java/client/src
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-03-03 16:35:19 +0000
committerRafael H. Schloming <rhs@apache.org>2008-03-03 16:35:19 +0000
commitb09b179dd7bc5537373b063ee943411de6e52967 (patch)
treee74533b764f8040a8daed47ec09bbf6ee8b7846c /java/client/src
parentd3c008daa45d37daae7d9679b0a5b8ffdf92a071 (diff)
downloadqpid-python-b09b179dd7bc5537373b063ee943411de6e52967.tar.gz
added an assert to verify that no threads are leaked on connection open/close; this should detect problems with dispatcher threads not dieing as described inQPID-823
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@633164 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client/src')
-rw-r--r--java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionCloseTest.java29
-rw-r--r--java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java2
2 files changed, 30 insertions, 1 deletions
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionCloseTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionCloseTest.java
index 20443944d2..7df8c87300 100644
--- a/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionCloseTest.java
+++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionCloseTest.java
@@ -23,6 +23,9 @@ package org.apache.qpid.test.unit.client.connection;
import org.apache.qpid.testutil.QpidTestCase;
import org.apache.qpidity.transport.util.Logger;
+import java.util.HashMap;
+import java.util.Map;
+
import javax.jms.Connection;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
@@ -42,6 +45,8 @@ public class ConnectionCloseTest extends QpidTestCase
public void testSendReceiveClose() throws Exception
{
+ Map<Thread,StackTraceElement[]> before = Thread.getAllStackTraces();
+
for (int i = 0; i < 500; i++)
{
if ((i % 10) == 0)
@@ -67,6 +72,30 @@ public class ConnectionCloseTest extends QpidTestCase
assertEquals(m.getText(), "test");
receiver.close();
}
+
+ Map<Thread,StackTraceElement[]> after = Thread.getAllStackTraces();
+
+ Map<Thread,StackTraceElement[]> delta = new HashMap<Thread,StackTraceElement[]>(after);
+ for (Thread t : before.keySet())
+ {
+ delta.remove(t);
+ }
+
+ dumpStacks(delta);
+
+ assertTrue("Spurious thread creation exceeded threshold, " +
+ delta.size() + " threads created.",
+ delta.size() < 10);
+ }
+
+ private void dumpStacks(Map<Thread,StackTraceElement[]> map)
+ {
+ for (Map.Entry<Thread,StackTraceElement[]> entry : map.entrySet())
+ {
+ Throwable t = new Throwable();
+ t.setStackTrace(entry.getValue());
+ log.warn(t, entry.getKey().toString());
+ }
}
}
diff --git a/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java b/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
index 60b1b70d67..4a8d74ff87 100644
--- a/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
+++ b/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
@@ -270,7 +270,7 @@ public class QpidTestCase extends TestCase
return con;
}
- public Connection getConnection(String username, String password, String id) throws Exception
+ public Connection getConnection(String username, String password, String id) throws Exception
{
_logger.info("get Connection");
Connection con;