Polished test to not output stacktrace during testing.

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cba6e2e8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cba6e2e8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cba6e2e8

Branch: refs/heads/master
Commit: cba6e2e8f053caeb7c9d3d0b156348e7359ade18
Parents: ca92f73
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Jul 28 11:34:54 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Jul 28 11:34:54 2014 +0200

----------------------------------------------------------------------
 .../mock/MockEndpointTimeClauseTest.java        | 36 +++++++++++++++++---
 1 file changed, 31 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/cba6e2e8/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTimeClauseTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTimeClauseTest.java
 
b/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTimeClauseTest.java
index 706fa7e..edbcfc2 100644
--- 
a/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTimeClauseTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTimeClauseTest.java
@@ -17,11 +17,15 @@
 package org.apache.camel.component.mock;
 
 import java.util.Date;
-import java.util.concurrent.Executor;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.Service;
+import org.apache.camel.StatefulService;
 import org.apache.camel.builder.RouteBuilder;
 
 /**
@@ -71,7 +75,7 @@ public class MockEndpointTimeClauseTest extends 
ContextTestSupport {
 
         template.sendBody("direct:a", "A");
 
-        Executor executor = Executors.newSingleThreadExecutor();
+        ExecutorService executor = Executors.newSingleThreadExecutor();
         executor.execute(new Runnable() {
             public void run() {
                 try {
@@ -79,7 +83,9 @@ public class MockEndpointTimeClauseTest extends 
ContextTestSupport {
                 } catch (Exception e) {
                     // ignore
                 }
-                template.sendBody("direct:a", "B");
+                if (isStarted(template)) {
+                    template.sendBody("direct:a", "B");
+                }
             }
         });
 
@@ -89,6 +95,8 @@ public class MockEndpointTimeClauseTest extends 
ContextTestSupport {
         } catch (AssertionError e) {
             assertEquals("mock://result Received message count. Expected: <1> 
but was: <2>", e.getMessage());
         }
+
+        executor.shutdownNow();
     }
 
     public void testNoAssertPeriodSecondMessageArrives() throws Exception {
@@ -97,22 +105,33 @@ public class MockEndpointTimeClauseTest extends 
ContextTestSupport {
 
         template.sendBody("direct:a", "A");
 
+        final CountDownLatch latch = new CountDownLatch(1);
+
         // this executor was bound to send a 2nd message
-        Executor executor = Executors.newSingleThreadExecutor();
+        ExecutorService executor = Executors.newSingleThreadExecutor();
         executor.execute(new Runnable() {
             public void run() {
                 try {
                     Thread.sleep(2000);
+
+                    if (isStarted(template)) {
+                        template.sendBody("direct:a", "B");
+                    }
                 } catch (Exception e) {
                     // ignore
+                } finally {
+                    latch.countDown();
                 }
-                template.sendBody("direct:a", "B");
             }
         });
 
         // but the assertion would be complete before hand and thus
         // the assertion was valid at the time given
         assertMockEndpointsSatisfied();
+
+        assertTrue(latch.await(10, TimeUnit.SECONDS));
+
+        executor.shutdownNow();
     }
 
     public void testArrivesBeforeNext() throws Exception {
@@ -203,4 +222,11 @@ public class MockEndpointTimeClauseTest extends 
ContextTestSupport {
         };
     }
 
+    private boolean isStarted(Service service) {
+        if (service instanceof StatefulService) {
+            return ((StatefulService) service).isStarted();
+        }
+        return true;
+    }
+
 }

Reply via email to