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 2013/04/09 00:34:04 UTC

svn commit: r1465814 - /activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java

Author: tabish
Date: Mon Apr  8 22:34:04 2013
New Revision: 1465814

URL: http://svn.apache.org/r1465814
Log:
fix for: https://issues.apache.org/jira/browse/AMQ-4463

Modified:
    activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java

Modified: activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java?rev=1465814&r1=1465813&r2=1465814&view=diff
==============================================================================
--- activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java (original)
+++ activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ4368Test.java Mon Apr  8 22:34:04 2013
@@ -81,13 +81,15 @@ public class AMQ4368Test {
     abstract class Client implements Runnable   {
         private final String name;
         final AtomicBoolean done = new AtomicBoolean();
+        CountDownLatch startedLatch;
         CountDownLatch doneLatch = new CountDownLatch(1);
         Connection connection;
         Session session;
         final AtomicLong size = new AtomicLong();
 
-        Client(String name) {
+        Client(String name, CountDownLatch startedLatch) {
             this.name = name;
+            this.startedLatch = startedLatch;
         }
 
         public void start() {
@@ -146,8 +148,8 @@ public class AMQ4368Test {
 
     class ProducingClient extends Client {
 
-        ProducingClient(String name) {
-            super(name);
+        ProducingClient(String name, CountDownLatch startedLatch) {
+            super(name, startedLatch);
         }
 
         private String createMessage() {
@@ -162,6 +164,7 @@ public class AMQ4368Test {
         protected void work() throws Exception {
             String data = createMessage();
             MessageProducer producer = session.createProducer(destination);
+            startedLatch.countDown();
             while (!done.get()) {
                 producer.send(session.createTextMessage(data));
                 long i = size.incrementAndGet();
@@ -173,14 +176,14 @@ public class AMQ4368Test {
     }
 
     class ConsumingClient extends Client {
-
-        public ConsumingClient(String name) {
-            super(name);
+        public ConsumingClient(String name, CountDownLatch startedLatch) {
+            super(name, startedLatch);
         }
 
         @Override
         protected void work() throws Exception {
             MessageConsumer consumer = session.createConsumer(destination);
+            startedLatch.countDown();
             while (!done.get()) {
                 Message msg = consumer.receive(100);
                 if (msg != null) {
@@ -193,16 +196,23 @@ public class AMQ4368Test {
     @Test
     public void testENTMQ220() throws InterruptedException, JMSException {
         LOG.info("Start test.");
-
-        ProducingClient producer1 = new ProducingClient("1");
-        ProducingClient producer2 = new ProducingClient("2");
-        ConsumingClient listener1 = new ConsumingClient("subscriber-1");
+        CountDownLatch producer1Started = new CountDownLatch(1);
+        CountDownLatch producer2Started = new CountDownLatch(1);
+        CountDownLatch listener1Started = new CountDownLatch(1);
+
+        ProducingClient producer1 = new ProducingClient("1", producer1Started);
+        ProducingClient producer2 = new ProducingClient("2", producer2Started);
+        ConsumingClient listener1 = new ConsumingClient("subscriber-1", listener1Started);
         try {
 
             producer1.start();
             producer2.start();
             listener1.start();
 
+            producer1Started.await(15, TimeUnit.SECONDS);
+            producer2Started.await(15, TimeUnit.SECONDS);
+            listener1Started.await(15, TimeUnit.SECONDS);
+
             long lastSize = listener1.size.get();
             for (int i = 0; i < 10; i++) {
                 Thread.sleep(2000);