@Test
public void testCreateSequenceStoreOutboundMessage() throws SQLException, IOException {
Identifier sid1 = null;
try {
SourceSequence seq = control.createMock(SourceSequence.class);
sid1 = new Identifier();
sid1.setValue("sequence1");
EasyMock.expect(seq.getIdentifier()).andReturn(sid1);
EasyMock.expect(seq.getExpires()).andReturn(null);
EasyMock.expect(seq.getOfferingSequenceIdentifier()).andReturn(null);
EasyMock.expect(seq.getEndpointIdentifier()).andReturn(CLIENT_ENDPOINT_ID);
EasyMock.expect(seq.getProtocol()).andReturn(ProtocolVariation.RM10WSA200408);
control.replay();
store.createSourceSequence(seq);
control.reset();
Collection<SourceSequence> seqs = store.getSourceSequences(CLIENT_ENDPOINT_ID);
assertEquals(1, seqs.size());
SourceSequence rseq = seqs.iterator().next();
assertFalse(rseq.isLastMessage());
Collection<RMMessage> out = store.getMessages(sid1, true);
assertEquals(0, out.size());
// set the last message flag
EasyMock.expect(seq.getIdentifier()).andReturn(sid1).anyTimes();
EasyMock.expect(seq.isLastMessage()).andReturn(true);
setupOutboundMessage(seq, 1L, null);
out = store.getMessages(sid1, true);
assertEquals(1, out.size());
checkRecoveredMessages(out);
// verify the updated sequence
seqs = store.getSourceSequences(CLIENT_ENDPOINT_ID);
assertEquals(1, seqs.size());
rseq = seqs.iterator().next();
assertTrue(rseq.isLastMessage());
// set the last message flag
EasyMock.expect(seq.getIdentifier()).andReturn(sid1).anyTimes();
EasyMock.expect(seq.getCurrentMessageNr()).andReturn(2L);
EasyMock.expect(seq.isLastMessage()).andReturn(true);
control.replay();
store.persistOutgoing(seq, null);
control.reset();
seqs = store.getSourceSequences(CLIENT_ENDPOINT_ID);
assertEquals(1, seqs.size());
rseq = seqs.iterator().next();
assertEquals(2, rseq.getCurrentMessageNr());
} finally {
if (null != sid1) {
store.removeSourceSequence(sid1);
}
Collection<Long> msgNrs = new ArrayList<Long>();