diff options
Diffstat (limited to 'java/client/src/test')
| -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; |
