You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2011/09/29 17:38:15 UTC
svn commit: r1177338 -
/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java
Author: tabish
Date: Thu Sep 29 15:38:15 2011
New Revision: 1177338
URL: http://svn.apache.org/viewvc?rev=1177338&view=rev
Log:
Make the test work without relying on a sleep statement to get the results needed.
Modified:
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java?rev=1177338&r1=1177337&r2=1177338&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/failover/SlowConnectionTest.java Thu Sep 29 15:38:15 2011
@@ -26,50 +26,52 @@ import javax.net.ServerSocketFactory;
import junit.framework.TestCase;
import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.util.Wait;
public class SlowConnectionTest extends TestCase {
-
+
public void testSlowConnection() throws Exception {
-
+
int timeout = 1000;
URI tcpUri = new URI("tcp://localhost:61616?soTimeout=" + timeout + "&trace=true&connectionTimeout=" + timeout + "&wireFormat.maxInactivityDurationInitalDelay=" + timeout);
-
+
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")");
final Connection connection = cf.createConnection();
-
+
MockBroker broker = new MockBroker();
broker.start();
-
+
new Thread(new Runnable() {
public void run() {
try { connection.start(); } catch (Throwable ignored) {}
}
}).start();
-
- Thread.sleep(timeout * 5);
-
+
int count = 0;
- for (Thread thread : Thread.getAllStackTraces().keySet()) {
- if (thread.getName().contains("ActiveMQ Transport")) { count++; }
- }
-
+ assertTrue("Transport count: " + count + ", expected <= 1", Wait.waitFor(new Wait.Condition(){
+ public boolean isSatisified() throws Exception {
+ int count = 0;
+ for (Thread thread : Thread.getAllStackTraces().keySet()) {
+ if (thread.getName().contains("ActiveMQ Transport")) { count++; }
+ }
+ return count == 1;
+ }}));
+
broker.interrupt();
broker.join();
-
- assertTrue("Transport count: " + count + ", expected <= 1", count <= 1);
- }
-
+ }
+
class MockBroker extends Thread {
-
+
public void run() {
-
+
List<Socket> inProgress = new ArrayList<Socket>();
ServerSocketFactory factory = ServerSocketFactory.getDefault();
ServerSocket ss = null;
-
+
try {
ss = factory.createServerSocket(61616);
-
+
while (!interrupted()) {
inProgress.add(ss.accept()); // eat socket
}
@@ -77,10 +79,10 @@ public class SlowConnectionTest extends
e.printStackTrace();
} finally {
try { ss.close(); } catch (IOException ignored) {}
- for (Socket s : inProgress) {
+ for (Socket s : inProgress) {
try { s.close(); } catch (IOException ignored) {}
- }
- }
+ }
+ }
}
}
}