You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/04/15 01:38:46 UTC
svn commit: r394227 [3/3] - in /incubator/servicemix/trunk: ./
servicemix-assembly/
servicemix-common/src/main/java/org/apache/servicemix/common/
servicemix-core/src/main/java/org/apache/servicemix/
servicemix-core/src/main/java/org/apache/servicemix/e...
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentBasedRouterTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentBasedRouterTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentBasedRouterTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentBasedRouterTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOut;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.ContentBasedRouter;
+import org.apache.servicemix.eip.support.RoutingRule;
+import org.apache.servicemix.eip.support.XPathPredicate;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.store.memory.MemoryStore;
+import org.apache.servicemix.tck.ReceiverComponent;
+import org.w3c.dom.Node;
+
+public class ContentBasedRouterTest extends AbstractEIPTest {
+
+ private ContentBasedRouter router;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ router = new ContentBasedRouter();
+ router.setRules(new RoutingRule[] {
+ new RoutingRule(
+ new XPathPredicate("/hello/@id = '1'"),
+ createServiceExchangeTarget(new QName("target1"))),
+ new RoutingRule(
+ new XPathPredicate("/hello/@id = '2'"),
+ createServiceExchangeTarget(new QName("target2"))),
+ new RoutingRule(
+ null,
+ createServiceExchangeTarget(new QName("target3")))
+ });
+ configureRouter();
+ activateComponent(router, "router");
+ }
+
+ protected void configureRouter() throws Exception {
+ router.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOnly() throws Exception {
+ ReceiverComponent rec1 = activateReceiver("target1");
+ ReceiverComponent rec2 = activateReceiver("target2");
+ ReceiverComponent rec3 = activateReceiver("target3");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='1' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ rec1.getMessageList().assertMessagesReceived(1);
+ rec2.getMessageList().assertMessagesReceived(0);
+ rec3.getMessageList().assertMessagesReceived(0);
+
+ rec1.getMessageList().flushMessages();
+ rec2.getMessageList().flushMessages();
+ rec3.getMessageList().flushMessages();
+
+ me = client.createInOnlyExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='2' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ rec1.getMessageList().assertMessagesReceived(0);
+ rec2.getMessageList().assertMessagesReceived(1);
+ rec3.getMessageList().assertMessagesReceived(0);
+
+ rec1.getMessageList().flushMessages();
+ rec2.getMessageList().flushMessages();
+ rec3.getMessageList().flushMessages();
+
+ me = client.createInOnlyExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='3' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ rec1.getMessageList().assertMessagesReceived(0);
+ rec2.getMessageList().assertMessagesReceived(0);
+ rec3.getMessageList().assertMessagesReceived(1);
+ }
+
+ public void testInOut() throws Exception {
+ activateComponent(new ReturnMockComponent("<from1/>"), "target1");
+ activateComponent(new ReturnMockComponent("<from2/>"), "target2");
+ activateComponent(new ReturnMockComponent("<from3/>"), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='1' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ Node node = new SourceTransformer().toDOMNode(me.getOutMessage());
+ assertEquals("from1", node.getFirstChild().getNodeName());
+ client.done(me);
+
+ me = client.createInOutExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='2' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ node = new SourceTransformer().toDOMNode(me.getOutMessage());
+ assertEquals("from2", node.getFirstChild().getNodeName());
+ client.done(me);
+
+ me = client.createInOutExchange();
+ me.setService(new QName("router"));
+ me.getInMessage().setContent(createSource("<hello id='3' />"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ node = new SourceTransformer().toDOMNode(me.getOutMessage());
+ assertEquals("from3", node.getFirstChild().getNodeName());
+ client.done(me);
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/PipelineTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/PipelineTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/PipelineTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/PipelineTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOptionalOut;
+import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.RobustInOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.Pipeline;
+import org.apache.servicemix.store.memory.MemoryStore;
+import org.apache.servicemix.tck.ReceiverComponent;
+
+public class PipelineTest extends AbstractEIPTest {
+
+ protected Pipeline pipeline;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ pipeline = new Pipeline();
+ pipeline.setTransformer(createServiceExchangeTarget(new QName("transformer")));
+ pipeline.setTarget(createServiceExchangeTarget(new QName("target")));
+ configurePipeline();
+ activateComponent(pipeline, "pipeline");
+ }
+
+ protected void configurePipeline() throws Exception {
+ pipeline.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOut() throws Exception {
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ }
+
+ public void testInOptionalOut() throws Exception {
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ }
+
+ public void testInOnly() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOnlyWithTransformerFault() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOnlyWithTransformerError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOnlyWithTargetError() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnly() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTransformerFault() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ target.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTransformerFaultAndError() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.fail(me, new Exception("I do not like faults"));
+
+ target.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTransformerError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "transformer");
+ ReceiverComponent target = activateReceiver("target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTargetFault() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTargetFaultAndError() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.fail(me, new Exception("I do not like faults"));
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithTargetError() throws Exception {
+ activateComponent(new ReturnOutComponent(), "transformer");
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("pipeline"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ listener.assertExchangeCompleted();
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/SpringConfigurationTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/SpringConfigurationTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/SpringConfigurationTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/SpringConfigurationTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import javax.jbi.messaging.InOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.tck.Receiver;
+import org.apache.servicemix.tck.SpringTestSupport;
+import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+
+public class SpringConfigurationTest extends SpringTestSupport {
+
+ public void testConfig() throws Exception {
+ ServiceMixClient client = new DefaultServiceMixClient(jbi);
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("http://test", "wireTap"));
+ me.getInMessage().setContent(new StringSource("<test><echo/><world/></test>"));
+ client.sendSync(me);
+
+ ((Receiver) getBean("trace1")).getMessageList().assertMessagesReceived(1);
+ ((Receiver) getBean("trace2")).getMessageList().assertMessagesReceived(1);
+ ((Receiver) getBean("trace3")).getMessageList().assertMessagesReceived(1);
+
+ // Wait for all messages to be processed
+ Thread.sleep(50);
+ }
+
+ protected AbstractXmlApplicationContext createBeanFactory() {
+ return new ClassPathXmlApplicationContext("org/apache/servicemix/eip/spring.xml");
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRecipientListTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRecipientListTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRecipientListTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRecipientListTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOptionalOut;
+import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.RobustInOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.StaticRecipientList;
+import org.apache.servicemix.eip.support.ExchangeTarget;
+import org.apache.servicemix.store.memory.MemoryStore;
+import org.apache.servicemix.tck.ReceiverComponent;
+
+public class StaticRecipientListTest extends AbstractEIPTest {
+
+ protected StaticRecipientList recipientList;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ recipientList = new StaticRecipientList();
+ recipientList.setRecipients(
+ new ExchangeTarget[] {
+ createServiceExchangeTarget(new QName("recipient1")),
+ createServiceExchangeTarget(new QName("recipient2")),
+ createServiceExchangeTarget(new QName("recipient3"))
+ });
+ configureRecipientList();
+ activateComponent(recipientList, "recipientList");
+ }
+
+ protected void configureRecipientList() {
+ recipientList.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOut() throws Exception {
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("recipientList"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ }
+
+ public void testInOptionalOut() throws Exception {
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("recipientList"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ }
+
+ public void testInOnly() throws Exception {
+ ReceiverComponent r1 = activateReceiver("recipient1");
+ ReceiverComponent r2 = activateReceiver("recipient2");
+ ReceiverComponent r3 = activateReceiver("recipient3");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("recipientList"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ r1.getMessageList().assertMessagesReceived(1);
+ r2.getMessageList().assertMessagesReceived(1);
+ r3.getMessageList().assertMessagesReceived(1);
+ }
+
+ public void testRobustInOnly() throws Exception {
+ ReceiverComponent r1 = activateReceiver("recipient1");
+ ReceiverComponent r2 = activateReceiver("recipient2");
+ ReceiverComponent r3 = activateReceiver("recipient3");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("recipientList"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ r1.getMessageList().assertMessagesReceived(1);
+ r2.getMessageList().assertMessagesReceived(1);
+ r3.getMessageList().assertMessagesReceived(1);
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRoutingSlipTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRoutingSlipTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRoutingSlipTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/StaticRoutingSlipTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOptionalOut;
+import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.RobustInOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.StaticRoutingSlip;
+import org.apache.servicemix.eip.support.ExchangeTarget;
+import org.apache.servicemix.store.memory.MemoryStore;
+
+
+public class StaticRoutingSlipTest extends AbstractEIPTest {
+
+ protected StaticRoutingSlip routingSlip;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ routingSlip = new StaticRoutingSlip();
+ routingSlip.setTargets(
+ new ExchangeTarget[] {
+ createServiceExchangeTarget(new QName("target1")),
+ createServiceExchangeTarget(new QName("target2")),
+ createServiceExchangeTarget(new QName("target3"))
+ });
+ configureRoutingSlip();
+ activateComponent(routingSlip, "routingSlip");
+ }
+
+ protected void configureRoutingSlip() {
+ routingSlip.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOnly() throws Exception {
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ assertNotNull(me.getError());
+ assertEquals("Use an InOut MEP", me.getError().getMessage());
+ }
+
+ public void testRobustInOnly() throws Exception {
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ assertNotNull(me.getError());
+ assertEquals("Use an InOut MEP", me.getError().getMessage());
+ }
+
+ public void testInOptionalOut() throws Exception {
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ assertNotNull(me.getError());
+ assertEquals("Use an InOut MEP", me.getError().getMessage());
+ }
+
+ public void testDone() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target1");
+ activateComponent(new ReturnOutComponent(), "target2");
+ activateComponent(new ReturnOutComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ client.done(me);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testFaultOnFirst() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target1");
+ activateComponent(new ReturnOutComponent(), "target2");
+ activateComponent(new ReturnOutComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testErrorOnFirst() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "target1");
+ activateComponent(new ReturnOutComponent(), "target2");
+ activateComponent(new ReturnOutComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testFaultOnSecond() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target1");
+ activateComponent(new ReturnFaultComponent(), "target2");
+ activateComponent(new ReturnOutComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testErrorOnSecond() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target1");
+ activateComponent(new ReturnErrorComponent(), "target2");
+ activateComponent(new ReturnOutComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testFaultOnThird() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target1");
+ activateComponent(new ReturnOutComponent(), "target2");
+ activateComponent(new ReturnFaultComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testErrorOnThird() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target1");
+ activateComponent(new ReturnOutComponent(), "target2");
+ activateComponent(new ReturnErrorComponent(), "target3");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("routingSlip"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ listener.assertExchangeCompleted();
+ }
+
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/VMEIPTests.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/VMEIPTests.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/VMEIPTests.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/VMEIPTests.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,21 @@
+package org.apache.servicemix.eip;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class VMEIPTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Test for org.apache.servicemix.eip");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(XPathSplitterTest.class);
+ suite.addTestSuite(PipelineTest.class);
+ suite.addTestSuite(StaticRoutingSlipTest.class);
+ suite.addTestSuite(ContentBasedRouterTest.class);
+ suite.addTestSuite(WireTapTest.class);
+ suite.addTestSuite(StaticRecipientListTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapJmsFlowTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapJmsFlowTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapJmsFlowTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapJmsFlowTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.store.memory.MemoryStore;
+
+
+public class WireTapJmsFlowTest extends WireTapTest {
+
+ protected BrokerService broker;
+
+ protected void setUp() throws Exception {
+ broker = new BrokerService();
+ broker.setPersistent(false);
+ broker.addConnector("tcp://localhost:61616");
+ broker.start();
+
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ broker.stop();
+ }
+
+ protected void configureWireTap() throws Exception {
+ wireTap.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ protected void configureContainer() throws Exception {
+ jbi.setFlowName("jms?jmsURL=tcp://localhost:61616");
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/WireTapTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,406 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.Fault;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOptionalOut;
+import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.RobustInOnly;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.WireTap;
+import org.apache.servicemix.store.memory.MemoryStore;
+import org.apache.servicemix.tck.ReceiverComponent;
+
+public class WireTapTest extends AbstractEIPTest {
+
+ protected ReceiverComponent inReceiver;
+ protected ReceiverComponent outReceiver;
+ protected ReceiverComponent faultReceiver;
+ protected WireTap wireTap;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ inReceiver = activateReceiver("in");
+ outReceiver = activateReceiver("out");
+ faultReceiver = activateReceiver("fault");
+ wireTap = new WireTap();
+ wireTap.setInListener(createServiceExchangeTarget(new QName("in")));
+ wireTap.setOutListener(createServiceExchangeTarget(new QName("out")));
+ wireTap.setFaultListener(createServiceExchangeTarget(new QName("fault")));
+ wireTap.setTarget(createServiceExchangeTarget(new QName("target")));
+ configureWireTap();
+ activateComponent(wireTap, "wireTap");
+ }
+
+ protected void configureWireTap() throws Exception {
+ wireTap.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOnly() throws Exception {
+ ReceiverComponent target = activateReceiver("target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(1);
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOnlyWithError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnly() throws Exception {
+ ReceiverComponent target = activateReceiver("target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ target.getMessageList().assertMessagesReceived(1);
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithFault() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testRobustInOnlyWithFaultAndError() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ RobustInOnly me = client.createRobustInOnlyExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.fail(me, new Exception("I do not like faults"));
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOut() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ client.done(me);
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOutWithError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOutWithFault() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOutAnswerAndError() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ client.fail(me, new Exception("I do not like your answer"));
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOutFaultAndError() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.fail(me, new Exception("I do not like your fault"));
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutNoAnswer() throws Exception {
+ activateComponent(new ReceiverComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithAnswer() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ client.done(me);
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithFault() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.done(me);
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithError() throws Exception {
+ activateComponent(new ReturnErrorComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithFaultAndError() throws Exception {
+ activateComponent(new ReturnFaultComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getFault());
+ client.fail(me, new Exception("I do not like faults"));
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(0);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithAnswerAndFault() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ Fault fault = me.createFault();
+ fault.setContent(createSource("<fault/>"));
+ me.setFault(fault);
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithAnswerAndError() throws Exception {
+ activateComponent(new ReturnOutComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ client.fail(me, new Exception("Dummy error"));
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(0);
+
+ listener.assertExchangeCompleted();
+ }
+
+ public void testInOptionalOutWithAnswerAndFaultAndError() throws Exception {
+ activateComponent(new ReturnOutAndErrorComponent(), "target");
+
+ InOptionalOut me = client.createInOptionalOutExchange();
+ me.setService(new QName("wireTap"));
+ me.getInMessage().setContent(createSource("<hello/>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ACTIVE, me.getStatus());
+ assertNotNull(me.getOutMessage());
+ Fault fault = me.createFault();
+ fault.setContent(createSource("<fault/>"));
+ me.setFault(fault);
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+
+ inReceiver.getMessageList().assertMessagesReceived(1);
+ outReceiver.getMessageList().assertMessagesReceived(1);
+ faultReceiver.getMessageList().assertMessagesReceived(1);
+
+ listener.assertExchangeCompleted();
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/XPathSplitterTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/XPathSplitterTest.java?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/XPathSplitterTest.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/java/org/apache/servicemix/eip/XPathSplitterTest.java Fri Apr 14 16:38:22 2006
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.servicemix.eip;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.InOut;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.eip.patterns.XPathSplitter;
+import org.apache.servicemix.store.memory.MemoryStore;
+import org.apache.servicemix.tck.ReceiverComponent;
+
+public class XPathSplitterTest extends AbstractEIPTest {
+
+ private XPathSplitter splitter;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ splitter = new XPathSplitter();
+ splitter.setTarget(createServiceExchangeTarget(new QName("target")));
+ splitter.setXPath("/hello/*");
+ configureSplitter();
+ activateComponent(splitter, "splitter");
+ }
+
+ protected void configureSplitter() throws Exception {
+ splitter.setStore(new MemoryStore(new IdGenerator()) {
+ public void store(String id, Object exchange) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(exchange);
+ super.store(id, exchange);
+ }
+ });
+ }
+
+ public void testInOnly() throws Exception {
+ ReceiverComponent rec = activateReceiver("target");
+
+ InOnly me = client.createInOnlyExchange();
+ me.setService(new QName("splitter"));
+ me.getInMessage().setContent(createSource("<hello><one/><two/><three/></hello>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.DONE, me.getStatus());
+
+ rec.getMessageList().assertMessagesReceived(3);
+ }
+
+ public void testInOut() throws Exception {
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("splitter"));
+ me.getInMessage().setContent(createSource("<hello><one/><two/><three/></hello>"));
+ client.sendSync(me);
+ assertEquals(ExchangeStatus.ERROR, me.getStatus());
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j-tests.properties
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j-tests.properties?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j-tests.properties (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j-tests.properties Fri Apr 14 16:38:22 2006
@@ -0,0 +1,21 @@
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=DEBUG, out
+
+log4j.logger.org.apache.activemq=INFO
+log4j.logger.org.apache.activemq.spring=WARN
+log4j.logger.org.apache.activemq.store.journal=INFO
+log4j.logger.org.activeio.journal=INFO
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/servicemix-test.log
+log4j.appender.out.append=true
Added: incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j.properties?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j.properties (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/resources/log4j.properties Fri Apr 14 16:38:22 2006
@@ -0,0 +1,21 @@
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=DEBUG, stdout
+
+log4j.logger.org.apache.activemq=INFO
+log4j.logger.org.apache.activemq.spring=WARN
+log4j.logger.org.apache.activemq.store.journal=INFO
+log4j.logger.org.activeio.journal=INFO
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/servicemix-test.log
+log4j.appender.out.append=true
Added: incubator/servicemix/trunk/servicemix-eip/src/test/resources/org/apache/servicemix/eip/spring.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-eip/src/test/resources/org/apache/servicemix/eip/spring.xml?rev=394227&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/test/resources/org/apache/servicemix/eip/spring.xml (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/test/resources/org/apache/servicemix/eip/spring.xml Fri Apr 14 16:38:22 2006
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+ xmlns:eip="http://servicemix.apache.org/eip/1.0" xmlns:test="http://test">
+
+ <!-- the JBI container -->
+ <sm:container id="jbi" embedded="true">
+ <sm:activationSpecs>
+
+ <!-- output using a POJO -->
+ <sm:activationSpec>
+ <sm:component>
+ <eip:component>
+ <eip:endpoints>
+
+ <eip:wire-tap service="test:wireTap" endpoint="myConsumer">
+ <eip:target>
+ <eip:exchange-target service="test:xpathSplitter" />
+ </eip:target>
+ <eip:inListener>
+ <eip:exchange-target service="test:trace1" />
+ </eip:inListener>
+ </eip:wire-tap>
+
+ <eip:xpath-splitter service="test:xpathSplitter" endpoint="myConsumer" xpath="/*/*">
+ <eip:target>
+ <eip:exchange-target service="test:router" />
+ </eip:target>
+ </eip:xpath-splitter>
+
+ <eip:content-based-router service="test:router" endpoint="myConsumer">
+ <eip:rules>
+ <eip:routing-rule>
+ <eip:predicate>
+ <eip:xpath-predicate xpath="count(/echo) = 1" />
+ </eip:predicate>
+ <eip:target>
+ <eip:exchange-target service="test:trace2" />
+ </eip:target>
+ </eip:routing-rule>
+ <eip:routing-rule>
+ <eip:target>
+ <eip:exchange-target service="test:trace3" />
+ </eip:target>
+ </eip:routing-rule>
+ </eip:rules>
+ </eip:content-based-router>
+
+ </eip:endpoints>
+ </eip:component>
+ </sm:component>
+ </sm:activationSpec>
+
+ <sm:activationSpec id="trace1" service="test:trace1">
+ <sm:component>
+ <bean class="org.apache.servicemix.tck.ReceiverComponent" />
+ </sm:component>
+ </sm:activationSpec>
+ <sm:activationSpec id="trace2" service="test:trace2">
+ <sm:component>
+ <bean class="org.apache.servicemix.tck.ReceiverComponent" />
+ </sm:component>
+ </sm:activationSpec>
+ <sm:activationSpec id="trace3" service="test:trace3">
+ <sm:component>
+ <bean class="org.apache.servicemix.tck.ReceiverComponent" />
+ </sm:component>
+ </sm:activationSpec>
+
+ </sm:activationSpecs>
+ </sm:container>
+
+</beans>