01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.servicemix.jbi.nmr.flow;
18:
19: import junit.framework.TestCase;
20:
21: import org.apache.servicemix.jbi.container.SpringJBIContainer;
22: import org.apache.servicemix.tck.Receiver;
23: import org.apache.servicemix.tck.Sender;
24: import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
25: import org.springframework.context.support.AbstractXmlApplicationContext;
26:
27: public class MultipleFlowsTest extends TestCase {
28:
29: private SpringJBIContainer localContainer;
30: private SpringJBIContainer remoteContainer;
31:
32: private Sender localSender;
33: private Sender remoteSender;
34: private Sender clusteredSender;
35:
36: private Receiver localReceiver;
37: private Receiver remoteReceiver;
38: private Receiver clusteredReceiver1;
39: private Receiver clusteredReceiver2;
40:
41: private AbstractXmlApplicationContext context;
42:
43: private int messageCount = 100;
44:
45: protected void setUp() throws Exception {
46: context = new ClassPathXmlApplicationContext(
47: "org/apache/servicemix/jbi/nmr/flow/multiple-flows.xml");
48: localContainer = (SpringJBIContainer) context.getBean("local");
49: remoteContainer = (SpringJBIContainer) context
50: .getBean("remote");
51: localSender = (Sender) localContainer.getBean("localSender");
52: remoteSender = (Sender) localContainer.getBean("remoteSender");
53: clusteredSender = (Sender) localContainer
54: .getBean("clusteredSender");
55: localReceiver = (Receiver) localContainer
56: .getBean("localReceiver");
57: remoteReceiver = (Receiver) remoteContainer
58: .getBean("remoteReceiver");
59: clusteredReceiver1 = (Receiver) localContainer
60: .getBean("clusteredReceiver");
61: clusteredReceiver2 = (Receiver) remoteContainer
62: .getBean("clusteredReceiver");
63: Thread.sleep(5000);
64: }
65:
66: protected void tearDown() throws Exception {
67: context.close();
68: }
69:
70: public void test() throws Exception {
71: // Local
72: localSender.sendMessages(messageCount);
73: localReceiver.getMessageList().assertMessagesReceived(
74: messageCount);
75:
76: // Remote
77: remoteSender.sendMessages(messageCount);
78: remoteReceiver.getMessageList().assertMessagesReceived(
79: messageCount);
80:
81: // Clustered
82: clusteredSender.sendMessages(messageCount);
83: long t0 = System.currentTimeMillis();
84: int n1 = 0;
85: int n2 = 0;
86: while (System.currentTimeMillis() - t0 < 10000) {
87: n1 = clusteredReceiver1.getMessageList().getMessageCount();
88: n2 = clusteredReceiver2.getMessageList().getMessageCount();
89: if (n1 + n2 == messageCount) {
90: break;
91: }
92: }
93: assertEquals(messageCount, n1 + n2);
94: assertTrue(n1 > 0);
95: assertTrue(n2 > 0);
96: }
97:
98: }
|