KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > ws > rm > RMSourceTest


1 package org.objectweb.celtix.bus.ws.rm;
2
3 import java.io.IOException JavaDoc;
4 import java.math.BigInteger JavaDoc;
5 import java.util.ArrayList JavaDoc;
6 import java.util.Collection JavaDoc;
7
8
9 import junit.framework.TestCase;
10
11 import org.easymock.classextension.EasyMock;
12 import org.easymock.classextension.IMocksControl;
13 import org.objectweb.celtix.Bus;
14 import org.objectweb.celtix.bindings.AbstractClientBinding;
15 import org.objectweb.celtix.bus.configuration.wsrm.SourcePolicyType;
16 import org.objectweb.celtix.bus.ws.addressing.AddressingPropertiesImpl;
17 import org.objectweb.celtix.buslifecycle.BusLifeCycleManager;
18 import org.objectweb.celtix.configuration.Configuration;
19 import org.objectweb.celtix.context.ObjectMessageContext;
20 import org.objectweb.celtix.context.ObjectMessageContextImpl;
21 import org.objectweb.celtix.ws.addressing.AddressingProperties;
22 import org.objectweb.celtix.ws.rm.Identifier;
23 import org.objectweb.celtix.ws.rm.SequenceAcknowledgement;
24 import org.objectweb.celtix.ws.rm.SequenceAcknowledgement.AcknowledgementRange;
25 import org.objectweb.celtix.ws.rm.SequenceType;
26 import org.objectweb.celtix.ws.rm.persistence.RMMessage;
27 import org.objectweb.celtix.ws.rm.persistence.RMSourceSequence;
28 import org.objectweb.celtix.ws.rm.persistence.RMStore;
29 import org.objectweb.celtix.ws.rm.policy.RMAssertionType;
30 import org.objectweb.celtix.ws.rm.wsdl.SequenceFault;
31
32 import static org.easymock.classextension.EasyMock.expect;
33 import static org.easymock.classextension.EasyMock.expectLastCall;
34 import static org.objectweb.celtix.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_OUTBOUND;
35
36 public class RMSourceTest extends TestCase {
37     
38     private Bus bus;
39     private BusLifeCycleManager lcm;
40     private RMHandler handler;
41     private RMSource s;
42     private Configuration cfg;
43     private IMocksControl control;
44     
45     public void setUp() {
46         control = EasyMock.createNiceControl();
47         handler = control.createMock(RMHandler.class);
48         s = createSource(handler);
49     }
50     
51     public void testRMSourceConstructor() {
52         assertNotNull(s.getRetransmissionQueue());
53         assertNull(s.getCurrent());
54     }
55     
56     public void testGetSourcePolicies() {
57         SourcePolicyType sp = null;
58         handler.getConfiguration();
59         expectLastCall().andReturn(cfg);
60         cfg.getObject(SourcePolicyType.class, "sourcePolicies");
61         expectLastCall().andReturn(sp);
62         
63         control.replay();
64         assertNotNull(s.getSourcePolicies());
65         control.verify();
66         
67         control.reset();
68         sp = control.createMock(SourcePolicyType.class);
69         handler.getConfiguration();
70         expectLastCall().andReturn(cfg);
71         cfg.getObject(SourcePolicyType.class, "sourcePolicies");
72         expectLastCall().andReturn(sp);
73         control.replay();
74         assertNotNull(s.getSourcePolicies());
75         control.verify();
76     }
77     
78     public void testGetSequenceTerminationPolicies() {
79         SourcePolicyType sp = null;
80         handler.getConfiguration();
81         expectLastCall().andReturn(cfg);
82         cfg.getObject(SourcePolicyType.class, "sourcePolicies");
83         expectLastCall().andReturn(sp);
84         
85         control.replay();
86         assertNotNull(s.getSequenceTerminationPolicy());
87         control.verify();
88     }
89     
90     public void testSequenceAccess() throws IOException JavaDoc, SequenceFault {
91         RMStore store = control.createMock(RMStore.class);
92         expect(handler.getStore()).andReturn(store).times(3);
93         store.createSourceSequence(EasyMock.isA(SourceSequence.class));
94         expectLastCall().times(2);
95         store.removeSourceSequence(EasyMock.isA(Identifier.class));
96
97         control.replay();
98         Identifier sid = s.generateSequenceIdentifier();
99         SourceSequence seq = new SourceSequence(sid);
100         assertNull(s.getCurrent());
101         s.addSequence(seq);
102         assertNotNull(s.getSequence(sid));
103         assertNull(s.getCurrent());
104         SourceSequence anotherSeq = new SourceSequence(s.generateSequenceIdentifier());
105         s.addSequence(anotherSeq);
106         assertNull(s.getCurrent());
107         assertEquals(2, s.getAllSequences().size());
108         s.removeSequence(seq);
109         assertEquals(1, s.getAllSequences().size());
110         assertNull(s.getSequence(sid));
111         control.verify();
112     }
113
114     public void testCurrent() {
115         Identifier sid = s.generateSequenceIdentifier();
116         SourceSequence seq = new SourceSequence(sid);
117         assertNull(s.getCurrent());
118         Identifier inSid = s.generateSequenceIdentifier();
119         assertNull(s.getCurrent(inSid));
120         s.setCurrent(seq);
121         assertNotNull(s.getCurrent());
122         assertSame(seq, s.getCurrent());
123         assertNull(s.getCurrent(inSid));
124         s.setCurrent(inSid, seq);
125         assertNotNull(s.getCurrent(inSid));
126         assertSame(seq, s.getCurrent(inSid));
127         assertNull(s.getCurrent(sid));
128     }
129     
130     public void testAddUnacknowledged() {
131         ObjectMessageContext ctx = new ObjectMessageContextImpl();
132         AddressingProperties maps = new AddressingPropertiesImpl();
133         ctx.put(CLIENT_ADDRESSING_PROPERTIES_OUTBOUND, maps);
134         RMPropertiesImpl rmps = new RMPropertiesImpl();
135         SequenceType seq = control.createMock(SequenceType.class);
136         Identifier sid = control.createMock(Identifier.class);
137         rmps.setSequence(seq);
138         RMContextUtils.storeRMProperties(ctx, rmps, true);
139         SourceSequence ss = control.createMock(SourceSequence.class);
140         RMMessage msg = control.createMock(RMMessage.class);
141         AbstractClientBinding binding = control.createMock(AbstractClientBinding.class);
142         handler.getBinding();
143         expectLastCall().andReturn(binding);
144         ObjectMessageContext clonedCtx = new ObjectMessageContextImpl();
145         binding.createObjectContext();
146         expectLastCall().andReturn(clonedCtx);
147         msg.getContext();
148         expectLastCall().andReturn(ctx);
149         seq.getIdentifier();
150         expectLastCall().andReturn(sid);
151         RMStore store = control.createMock(RMStore.class);
152         handler.getStore();
153         expectLastCall().andReturn(store);
154         store.persistOutgoing(ss, msg);
155         expectLastCall();
156         
157         control.replay();
158         s.addUnacknowledged(ss, msg);
159         control.verify();
160     }
161
162     
163     public void testSetAcknowledged() throws NoSuchMethodException JavaDoc, IOException JavaDoc {
164         RMStore store = control.createMock(RMStore.class);
165         expect(handler.getStore()).andReturn(store);
166         store.createSourceSequence(EasyMock.isA(SourceSequence.class));
167         expectLastCall();
168         
169         control.replay();
170         
171         Identifier sid1 = s.generateSequenceIdentifier();
172         Identifier sid2 = s.generateSequenceIdentifier();
173         SourceSequence seq = new SourceSequence(sid1, null, null, BigInteger.TEN, true);
174         seq.setSource(s);
175         s.addSequence(seq);
176                
177         SequenceAcknowledgement ack = RMUtils.getWSRMFactory().createSequenceAcknowledgement();
178         ack.setIdentifier(sid1);
179         s.setAcknowledged(ack);
180         assertSame(ack, seq.getAcknowledgement());
181         ack.setIdentifier(sid2);
182         s.setAcknowledged(ack);
183         
184         control.verify();
185         
186         control.reset();
187    
188         ack = RMUtils.getWSRMFactory().createSequenceAcknowledgement();
189         ack.setIdentifier(sid1);
190         AcknowledgementRange range =
191             RMUtils.getWSRMFactory().createSequenceAcknowledgementAcknowledgementRange();
192
193         range.setLower(BigInteger.ONE);
194         range.setUpper(BigInteger.TEN);
195         ack.getAcknowledgementRange().add(range);
196         
197         RMProxy proxy = control.createMock(RMProxy.class);
198         handler.getProxy();
199         expectLastCall().andReturn(proxy);
200         proxy.terminateSequence(seq);
201         expectLastCall();
202         
203         control.replay();
204         s.setAcknowledged(ack);
205         control.verify();
206
207         control.reset();
208         
209         handler.getProxy();
210         expectLastCall().andReturn(proxy);
211         proxy.terminateSequence(seq);
212         expectLastCall().andThrow(new IOException JavaDoc("can't terminate sequence"));
213         
214         control.replay();
215         s.setAcknowledged(ack);
216         control.verify();
217         
218     }
219     
220     public void testShutdown() {
221         s.shutdown();
222     }
223     
224     public void testRestore() {
225         RMStore store = control.createMock(RMStore.class);
226         EasyMock.expect(handler.getStore()).andReturn(store);
227         Configuration c = control.createMock(Configuration.class);
228         EasyMock.expect(handler.getConfiguration()).andReturn(c);
229         Configuration pc = control.createMock(Configuration.class);
230         EasyMock.expect(c.getParent()).andReturn(pc);
231         EasyMock.expect(pc.getId()).andReturn("endpoint");
232         Identifier id = RMUtils.getWSRMFactory().createIdentifier();
233         id.setValue("source1");
234         SourceSequence ss = new SourceSequence(id);
235         Collection JavaDoc<RMSourceSequence> sss = new ArrayList JavaDoc<RMSourceSequence>();
236         sss.add(ss);
237         EasyMock.expect(store.getSourceSequences("endpoint")).andReturn(sss);
238         EasyMock.expect(handler.getStore()).andReturn(store);
239         Collection JavaDoc<RMMessage> msgs = new ArrayList JavaDoc<RMMessage>();
240         EasyMock.expect(store.getMessages(id, true)).andReturn(msgs);
241         control.replay();
242         s.restore();
243         assertEquals(1, s.getAllSequences().size());
244         control.verify();
245     }
246     
247     private RMSource createSource(RMHandler h) {
248         bus = control.createMock(Bus.class);
249         h.getBus();
250         expectLastCall().andReturn(bus);
251         lcm = control.createMock(BusLifeCycleManager.class);
252         bus.getLifeCycleManager();
253         expectLastCall().andReturn(lcm);
254         cfg = control.createMock(Configuration.class);
255         h.getConfiguration();
256         expectLastCall().andReturn(cfg);
257         cfg.getObject(RMAssertionType.class, "rmAssertion");
258         expectLastCall().andReturn(null);
259    
260         control.replay();
261         
262         RMSource src = new RMSource(h);
263         control.verify();
264         control.reset();
265         return src;
266     }
267 }
268
Popular Tags