diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2008-03-03 16:35:19 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2008-03-03 16:35:19 +0000 |
| commit | b09b179dd7bc5537373b063ee943411de6e52967 (patch) | |
| tree | e74533b764f8040a8daed47ec09bbf6ee8b7846c /java/client/src | |
| parent | d3c008daa45d37daae7d9679b0a5b8ffdf92a071 (diff) | |
| download | qpid-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.java | 29 | ||||
| -rw-r--r-- | java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java | 2 |
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; |
