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); } }