Author: davsclaus
Date: Tue Jan 19 06:32:53 2010
New Revision: 900669

URL: http://svn.apache.org/viewvc?rev=900669&view=rev
Log:
CAMEL-2377: Fixed test to use AtomicInteger as shared state for testing correct 
order of execution path in concurrent test.

Modified:
    
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java?rev=900669&r1=900668&r2=900669&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
 Tue Jan 19 06:32:53 2010
@@ -23,6 +23,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
@@ -41,7 +42,7 @@
  */
 public class DefaultProducerTemplateAsyncTest extends ContextTestSupport {
 
-    private static String order;
+    private static final AtomicInteger order = new AtomicInteger(0);
 
     public void testRequestAsync() throws Exception {
         Exchange exchange = new DefaultExchange(context);
@@ -260,7 +261,7 @@
 
         // produce it async so we use a helper
         Producer producer = endpoint.createProducer();
-        // normally you will use a shared exectutor service with pools
+        // normally you will use a shared executor service with pools
         ExecutorService executor = Executors.newSingleThreadExecutor();
         // send it async with the help of this helper
         Future<Exchange> future = AsyncProcessorHelper.asyncProcess(executor, 
producer, exchange);
@@ -306,7 +307,7 @@
     }
 
     public void testAsyncCallbackExchangeInOnly() throws Exception {
-        order = "";
+        order.set(0);
 
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
 
@@ -318,22 +319,22 @@
         template.asyncCallback("direct:start", exchange, new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("Hello World", exchange.getIn().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
         assertMockEndpointsSatisfied();
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     public void testAsyncCallbackExchangeInOut() throws Exception {
-        order = "";
+        order.set(0);
 
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -344,21 +345,21 @@
         template.asyncCallback("direct:echo", exchange, new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("HelloHello", exchange.getOut().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     public void testAsyncCallbackExchangeInOnlyGetResult() throws Exception {
-        order = "";
+        order.set(0);
 
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
 
@@ -368,22 +369,22 @@
         Future<Exchange> future = template.asyncCallback("direct:start", 
exchange, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("Hello World", exchange.getIn().getBody());
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         Exchange reply = future.get(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
         assertMockEndpointsSatisfied();
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
         assertNotNull(reply);
     }
 
     public void testAsyncCallbackExchangeInOutGetResult() throws Exception {
-        order = "";
+        order.set(0);
 
         Exchange exchange = 
context.getEndpoint("direct:start").createExchange();
         exchange.getIn().setBody("Hello");
@@ -392,22 +393,22 @@
         Future<Exchange> future = template.asyncCallback("direct:echo", 
exchange, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("HelloHello", exchange.getOut().getBody());
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         Exchange reply = future.get(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
         assertNotNull(reply);
         assertEquals("HelloHello", reply.getOut().getBody());
     }
 
     public void testAsyncCallbackBodyInOnly() throws Exception {
-        order = "";
+        order.set(0);
 
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
 
@@ -416,85 +417,85 @@
         template.asyncCallbackSendBody("direct:start", "Hello", new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("Hello World", exchange.getIn().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
         assertMockEndpointsSatisfied();
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     public void testAsyncCallbackBodyInOut() throws Exception {
-        order = "";
+        order.set(0);
 
         final CountDownLatch latch = new CountDownLatch(1);
 
         template.asyncCallbackRequestBody("direct:echo", "Hello", new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("HelloHello", exchange.getOut().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     public void testAsyncCallbackBodyInOnlyGetResult() throws Exception {
-        order = "";
+        order.set(0);
 
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
 
         Future<Object> future = template.asyncCallbackSendBody("direct:start", 
"Hello", new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("Hello World", exchange.getIn().getBody());
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         Object reply = future.get(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
         assertMockEndpointsSatisfied();
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
         // no reply when in only
         assertEquals(null, reply);
     }
 
     public void testAsyncCallbackBodyInOutGetResult() throws Exception {
-        order = "";
+        order.set(0);
 
         Future<Object> future = 
template.asyncCallbackRequestBody("direct:echo", "Hello", new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("HelloHello", exchange.getOut().getBody());
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         Object reply = future.get(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
         assertEquals("HelloHello", reply);
     }
 
     public void testAsyncCallbackInOnlyProcessor() throws Exception {
-        order = "";
+        order.set(0);
 
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
 
@@ -507,22 +508,22 @@
         }, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("Hello World", exchange.getIn().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
         assertMockEndpointsSatisfied();
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     public void testAsyncCallbackInOutProcessor() throws Exception {
-        order = "";
+        order.set(0);
 
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -534,17 +535,17 @@
         }, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                order += "B";
+                order.addAndGet(2);
                 assertEquals("HelloHello", exchange.getOut().getBody());
                 latch.countDown();
             }
         });
 
-        order += "A";
+        order.addAndGet(1);
         latch.await(10, TimeUnit.SECONDS);
-        order += "C";
+        order.addAndGet(4);
 
-        assertEquals("ABC", order);
+        assertEquals(7, order.get());
     }
 
     @Override
@@ -568,4 +569,5 @@
             }
         };
     }
+
 }


Reply via email to