001: package org.objectweb.celtix.bus.ws.rm;
002:
003: import java.io.IOException;
004: import java.util.ArrayList;
005: import java.util.Collection;
006:
007: import junit.framework.TestCase;
008:
009: import org.easymock.classextension.EasyMock;
010: import org.easymock.classextension.IMocksControl;
011: import org.objectweb.celtix.bus.configuration.wsrm.SequenceTerminationPolicyType;
012:
013: import static org.easymock.EasyMock.expectLastCall;
014:
015: public class RMBusLifeCycleListenerTest extends TestCase {
016:
017: private IMocksControl control;
018: private RMSource source;
019: private SequenceTerminationPolicyType stp;
020:
021: public void setUp() {
022: control = EasyMock.createNiceControl();
023: source = control.createMock(RMSource.class);
024: stp = control.createMock(SequenceTerminationPolicyType.class);
025: }
026:
027: public void testNoAction() {
028: source.getSequenceTerminationPolicy();
029: expectLastCall().andReturn(stp);
030: stp.isTerminateOnShutdown();
031: expectLastCall().andReturn(false);
032: control.replay();
033:
034: RMBusLifeCycleListener listener = new RMBusLifeCycleListener(
035: source);
036: listener.initComplete();
037: listener.preShutdown();
038: listener.postShutdown();
039:
040: control.verify();
041: }
042:
043: public void testTerminateClosedSequenceFailRequestAcknowledgement()
044: throws IOException {
045:
046: Collection<SourceSequence> seqs = new ArrayList<SourceSequence>();
047: SourceSequence seq = control.createMock(SourceSequence.class);
048: seqs.add(seq);
049: RMHandler handler = control.createMock(RMHandler.class);
050: RMProxy proxy = control.createMock(RMProxy.class);
051:
052: source.getSequenceTerminationPolicy();
053: expectLastCall().andReturn(stp);
054: stp.isTerminateOnShutdown();
055: expectLastCall().andReturn(true);
056: source.getAllUnacknowledgedSequences();
057: expectLastCall().andReturn(seqs);
058: seq.isLastMessage();
059: expectLastCall().andReturn(true);
060: source.getHandler();
061: expectLastCall().andReturn(handler);
062: handler.getProxy();
063: expectLastCall().andReturn(proxy);
064: proxy.requestAcknowledgment(seqs);
065: expectLastCall().andThrow(new IOException());
066:
067: control.replay();
068:
069: RMBusLifeCycleListener listener = new RMBusLifeCycleListener(
070: source);
071: listener.initComplete();
072: listener.preShutdown();
073: listener.postShutdown();
074:
075: control.verify();
076: }
077:
078: public void testTerminateOpenSequenceFailLastMessage()
079: throws IOException {
080:
081: Collection<SourceSequence> seqs = new ArrayList<SourceSequence>();
082: SourceSequence seq = control.createMock(SourceSequence.class);
083: seqs.add(seq);
084: RMHandler handler = control.createMock(RMHandler.class);
085: RMProxy proxy = control.createMock(RMProxy.class);
086:
087: source.getSequenceTerminationPolicy();
088: expectLastCall().andReturn(stp);
089: stp.isTerminateOnShutdown();
090: expectLastCall().andReturn(true);
091: source.getAllUnacknowledgedSequences();
092: expectLastCall().andReturn(seqs);
093: seq.isLastMessage();
094: expectLastCall().andReturn(false);
095: source.getHandler();
096: expectLastCall().andReturn(handler);
097: handler.getProxy();
098: expectLastCall().andReturn(proxy);
099: proxy.lastMessage(seq);
100: expectLastCall().andThrow(new IOException());
101:
102: control.replay();
103:
104: RMBusLifeCycleListener listener = new RMBusLifeCycleListener(
105: source);
106: listener.initComplete();
107: listener.preShutdown();
108: listener.postShutdown();
109:
110: control.verify();
111: }
112:
113: public void testTerminateClosedSequence() throws IOException {
114:
115: Collection<SourceSequence> seqs = new ArrayList<SourceSequence>();
116: SourceSequence seq = control.createMock(SourceSequence.class);
117: seqs.add(seq);
118: RMHandler handler = control.createMock(RMHandler.class);
119: RMProxy proxy = control.createMock(RMProxy.class);
120:
121: source.getSequenceTerminationPolicy();
122: expectLastCall().andReturn(stp);
123: stp.isTerminateOnShutdown();
124: expectLastCall().andReturn(true);
125: source.getAllUnacknowledgedSequences();
126: expectLastCall().andReturn(seqs);
127: seq.isLastMessage();
128: expectLastCall().andReturn(true);
129: source.getHandler();
130: expectLastCall().andReturn(handler);
131: handler.getProxy();
132: expectLastCall().andReturn(proxy);
133: proxy.requestAcknowledgment(seqs);
134: expectLastCall();
135:
136: control.replay();
137:
138: RMBusLifeCycleListener listener = new RMBusLifeCycleListener(
139: source);
140: listener.initComplete();
141: listener.preShutdown();
142: listener.postShutdown();
143:
144: control.verify();
145: }
146:
147: public void testTerminateOpenSequence() throws IOException {
148:
149: Collection<SourceSequence> seqs = new ArrayList<SourceSequence>();
150: SourceSequence seq = control.createMock(SourceSequence.class);
151: seqs.add(seq);
152: RMHandler handler = control.createMock(RMHandler.class);
153: RMProxy proxy = control.createMock(RMProxy.class);
154:
155: source.getSequenceTerminationPolicy();
156: expectLastCall().andReturn(stp);
157: stp.isTerminateOnShutdown();
158: expectLastCall().andReturn(true);
159: source.getAllUnacknowledgedSequences();
160: expectLastCall().andReturn(seqs);
161: seq.isLastMessage();
162: expectLastCall().andReturn(false);
163: source.getHandler();
164: expectLastCall().andReturn(handler);
165: handler.getProxy();
166: expectLastCall().andReturn(proxy);
167: proxy.lastMessage(seq);
168: expectLastCall();
169:
170: control.replay();
171:
172: RMBusLifeCycleListener listener = new RMBusLifeCycleListener(
173: source);
174: listener.initComplete();
175: listener.preShutdown();
176: listener.postShutdown();
177:
178: control.verify();
179: }
180: }
|