Author: dvaleri
Date: Mon Apr 16 19:30:44 2012
New Revision: 1326761

URL: http://svn.apache.org/viewvc?rev=1326761&view=rev
Log:
Added annotation and tests for MockEndpointsAndSkip feature in CamelTestSupport.

Added:
    
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java
   (with props)
    
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest.java
      - copied, changed from r1326746, 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
    
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest.java
      - copied, changed from r1326746, 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java
Modified:
    
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringTestContextLoader.java
    
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
    
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java

Modified: 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringTestContextLoader.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringTestContextLoader.java?rev=1326761&r1=1326760&r2=1326761&view=diff
==============================================================================
--- 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringTestContextLoader.java
 (original)
+++ 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringTestContextLoader.java
 Mon Apr 16 19:30:44 2012
@@ -159,6 +159,7 @@ public class CamelSpringTestContextLoade
         handleProvidesBreakpoint(context, testClass);
         handleShutdownTimeout(context, testClass);
         handleMockEndpoints(context, testClass);
+        handleMockEndpointsAndSkip(context, testClass);
         handleLazyLoadTypeConverters(context, testClass);
         
         // CamelContext(s) startup
@@ -421,6 +422,33 @@ public class CamelSpringTestContextLoade
         }
     }
     
+    /**
+     * Handles auto-intercepting of endpoints with mocks based on {@link 
MockEndpoints} and skipping the
+     * original endpoint.
+     *
+     * @param context the initialized Spring context
+     * @param testClass the test class being executed
+     */
+    protected void handleMockEndpointsAndSkip(GenericApplicationContext 
context, Class<?> testClass) throws Exception {
+        if (testClass.isAnnotationPresent(MockEndpoints.class)) {
+            
+            final String mockEndpoints = testClass.getAnnotation(
+                    MockEndpoints.class).value();
+            CamelSpringTestHelper.doToSpringCamelContexts(context, new 
DoToSpringCamelContextsStrategy() {
+                
+                @Override
+                public void execute(String contextName, SpringCamelContext 
camelContext)
+                    throws Exception {
+                    
+                    LOG.info("Enabling auto mocking and skipping of endpoints 
matching pattern [{}] on "
+                            + "CamelContext with name [{}].", mockEndpoints, 
contextName);
+                    camelContext.addRegisterEndpointCallback(
+                            new 
InterceptSendToMockEndpointStrategy(mockEndpoints, true));
+                }
+            });
+        }
+    }
+    
     @SuppressWarnings("deprecation")
     protected void handleLazyLoadTypeConverters(GenericApplicationContext 
context, Class<?> testClass) throws Exception {
         final boolean lazy;

Added: 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java?rev=1326761&view=auto
==============================================================================
--- 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java
 (added)
+++ 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java
 Mon Apr 16 19:30:44 2012
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.impl.InterceptSendToMockEndpointStrategy;
+
+/**
+ * Triggers the auto-mocking of endpoints whose URIs match the provided filter 
with the added provision
+ * that the endpoints are also skipped.  The default filter is "*" which 
matches all endpoints.
+ * See {@link InterceptSendToMockEndpointStrategy} for more details on the 
registration of the mock endpoints.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface MockEndpointsAndSkip {
+    
+    /**
+     * The pattern to use for matching endpoints to enable mocking on.
+     */
+    String value() default "*";
+}

Propchange: 
camel/trunk/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/MockEndpointsAndSkip.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest.java
 (from r1326746, 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest.java?p2=camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest.java&p1=camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java&r1=1326746&r2=1326761&rev=1326761&view=diff
==============================================================================
--- 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
 (original)
+++ 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest.java
 Mon Apr 16 19:30:44 2012
@@ -17,24 +17,37 @@
 package org.apache.camel.test.junit4;
 
 import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.MockEndpoints;
+import org.apache.camel.test.spring.MockEndpointsAndSkip;
 import org.junit.Test;
 
-@MockEndpoints("log:*")
-public class CamelSpringJUnit4ClassRunnerMockEndpointsTest
+import static org.junit.Assert.assertEquals;
+
+@MockEndpointsAndSkip("mock:c")
+public class CamelSpringJUnit4ClassRunnerMockEndpointsAndSkipTest
         extends CamelSpringJUnit4ClassRunnerPlainTest {
 
-    @EndpointInject(uri = "mock:log:org.apache.camel.test.junit4.spring", 
context = "camelContext2")
-    protected MockEndpoint mockLog;
+    @EndpointInject(uri = "mock:mock:c", context = "camelContext2")
+    protected MockEndpoint mockMockC;
+    
+    @EndpointInject(uri = "mock:c", context = "camelContext2")
+    protected MockEndpoint mockC;
     
     @Test
     @Override
     public void testPositive() throws Exception {
-        mockLog.expectedBodiesReceived("Hello David");
+        assertEquals(ServiceStatus.Started, camelContext.getStatus());
+        assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+        
+        mockA.expectedBodiesReceived("David");
+        mockB.expectedBodiesReceived("Hello David");
+        mockC.expectedMessageCount(0);
+        mockMockC.expectedBodiesReceived("Hello David");
         
-        super.testPositive();
+        start.sendBody("David");
+        start2.sendBody("David");
         
-        mockLog.assertIsSatisfied();
+        MockEndpoint.assertIsSatisfied(camelContext);
     }
 }

Modified: 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java?rev=1326761&r1=1326760&r2=1326761&view=diff
==============================================================================
--- 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
 (original)
+++ 
camel/trunk/components/camel-test-spring/src/test/java/org/apache/camel/test/junit4/CamelSpringJUnit4ClassRunnerMockEndpointsTest.java
 Mon Apr 16 19:30:44 2012
@@ -17,24 +17,35 @@
 package org.apache.camel.test.junit4;
 
 import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.spring.MockEndpoints;
 import org.junit.Test;
 
-@MockEndpoints("log:*")
+import static org.junit.Assert.assertEquals;
+
+@MockEndpoints("mock:c*")
 public class CamelSpringJUnit4ClassRunnerMockEndpointsTest
         extends CamelSpringJUnit4ClassRunnerPlainTest {
 
-    @EndpointInject(uri = "mock:log:org.apache.camel.test.junit4.spring", 
context = "camelContext2")
-    protected MockEndpoint mockLog;
+    @EndpointInject(uri = "mock:mock:c", context = "camelContext2")
+    protected MockEndpoint mockMockC;
     
     @Test
     @Override
     public void testPositive() throws Exception {
-        mockLog.expectedBodiesReceived("Hello David");
         
-        super.testPositive();
+        assertEquals(ServiceStatus.Started, camelContext.getStatus());
+        assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+        
+        mockA.expectedBodiesReceived("David");
+        mockB.expectedBodiesReceived("Hello David");
+        mockC.expectedBodiesReceived("Hello David");
+        mockMockC.expectedBodiesReceived("Hello David");
+        
+        start.sendBody("David");
+        start2.sendBody("David");
         
-        mockLog.assertIsSatisfied();
+        MockEndpoint.assertIsSatisfied(camelContext);
     }
 }

Copied: 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest.java
 (from r1326746, 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest.java?p2=camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest.java&p1=camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java&r1=1326746&r2=1326761&rev=1326761&view=diff
==============================================================================
--- 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java
 (original)
+++ 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest.java
 Mon Apr 16 19:30:44 2012
@@ -17,25 +17,37 @@
 package org.apache.camel.testng;
 
 import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.MockEndpoints;
-
+import org.apache.camel.test.spring.MockEndpointsAndSkip;
 import org.testng.annotations.Test;
 
-@MockEndpoints("log:*")
-public class AbstractCamelTestNGSpringContextTestsMockEndpointsTest
+import static org.junit.Assert.assertEquals;
+
+@MockEndpointsAndSkip("mock:c")
+public class AbstractCamelTestNGSpringContextTestsMockEndpointsAndSkipTest
         extends AbstractCamelTestNGSpringContextTestsPlainTest {
 
-    @EndpointInject(uri = "mock:log:org.apache.camel.test.junit4.spring", 
context = "camelContext2")
-    protected MockEndpoint mockLog;
+    @EndpointInject(uri = "mock:mock:c", context = "camelContext2")
+    protected MockEndpoint mockMockC;
+    
+    @EndpointInject(uri = "mock:c", context = "camelContext2")
+    protected MockEndpoint mockC;
     
     @Test
     @Override
     public void testPositive() throws Exception {
-        mockLog.expectedBodiesReceived("Hello David");
+        assertEquals(ServiceStatus.Started, camelContext.getStatus());
+        assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+        
+        mockA.expectedBodiesReceived("David");
+        mockB.expectedBodiesReceived("Hello David");
+        mockC.expectedMessageCount(0);
+        mockMockC.expectedBodiesReceived("Hello David");
         
-        super.testPositive();
+        start.sendBody("David");
+        start2.sendBody("David");
         
-        mockLog.assertIsSatisfied();
+        MockEndpoint.assertIsSatisfied(camelContext);
     }
 }

Modified: 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java?rev=1326761&r1=1326760&r2=1326761&view=diff
==============================================================================
--- 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java
 (original)
+++ 
camel/trunk/components/camel-testng/src/test/java/org/apache/camel/testng/AbstractCamelTestNGSpringContextTestsMockEndpointsTest.java
 Mon Apr 16 19:30:44 2012
@@ -17,25 +17,36 @@
 package org.apache.camel.testng;
 
 import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.spring.MockEndpoints;
 
 import org.testng.annotations.Test;
 
-@MockEndpoints("log:*")
+import static org.junit.Assert.assertEquals;
+
+@MockEndpoints("mock:c*")
 public class AbstractCamelTestNGSpringContextTestsMockEndpointsTest
         extends AbstractCamelTestNGSpringContextTestsPlainTest {
 
-    @EndpointInject(uri = "mock:log:org.apache.camel.test.junit4.spring", 
context = "camelContext2")
-    protected MockEndpoint mockLog;
+    @EndpointInject(uri = "mock:mock:c", context = "camelContext2")
+    protected MockEndpoint mockMockC;
     
     @Test
     @Override
     public void testPositive() throws Exception {
-        mockLog.expectedBodiesReceived("Hello David");
         
-        super.testPositive();
+        assertEquals(ServiceStatus.Started, camelContext.getStatus());
+        assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+        
+        mockA.expectedBodiesReceived("David");
+        mockB.expectedBodiesReceived("Hello David");
+        mockC.expectedBodiesReceived("Hello David");
+        mockMockC.expectedBodiesReceived("Hello David");
+        
+        start.sendBody("David");
+        start2.sendBody("David");
         
-        mockLog.assertIsSatisfied();
+        MockEndpoint.assertIsSatisfied(camelContext);
     }
 }


Reply via email to