chamikara 2005/05/24 11:03:14
Modified: sandesha/test/org/apache/sandesha/storage
TCClientStorageManager.java
Log:
A test case for ClientStorageManager
Revision Changes Path
1.4 +219 -178
ws-fx/sandesha/test/org/apache/sandesha/storage/TCClientStorageManager.java
Index: TCClientStorageManager.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/test/org/apache/sandesha/storage/TCClientStorageManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TCClientStorageManager.java 11 May 2005 13:04:27 -0000 1.3
+++ TCClientStorageManager.java 24 May 2005 18:03:14 -0000 1.4
@@ -32,22 +32,227 @@
*/
public class TCClientStorageManager extends TestCase {
- //tests functions related to outgoing messages.
- public void testOutGoingMessages() throws QueueException {
+ //For testing weather messages are re-transmitted correctly
+ public void testRetransmission(){
+
+ SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
+ ClientStorageManager csm = new ClientStorageManager();
+ RMMessageContext msg1;
+
+ //approving the out sequence
+ csm.setTemporaryOutSequence("seqid1","uuid:aaaa-bbbb-cccc");
+ csm.setApprovedOutSequence("uuid:aaaa-bbbb-cccc", "approved1");
+
+ //messages should be returned (since the out sequence is approved)
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //Waiting for little more than re-transmission interval
+ try{
+ Thread.sleep(Constants.RETRANSMISSION_INTERVAL + 100);
+ }catch(InterruptedException e){
+ e.printStackTrace();
+ }
+
+
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //Again waiting for little more than re-transmission interval :)
+ try{
+ Thread.sleep(Constants.RETRANSMISSION_INTERVAL + 100);
+ }catch(InterruptedException e){
+ e.printStackTrace();
+ }
+
+ //Messages should be returned once again
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ }
+
+ //Testing weather the tr-transmission stops after a acknowledgement
+ public void testAcknowledgement(){
+ SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
+ ClientStorageManager csm = new ClientStorageManager();
+
+ csm.setTemporaryOutSequence("seqid1","uuid:aaaa-bbbb-cccc");
+ csm.setApprovedOutSequence("uuid:aaaa-bbbb-cccc", "approved1");
+
+ RMMessageContext msg1;
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //Acknowledging messages 1,2 and 4 (without 3)
+ csm.setAcknowledged("approved1", 1);
+ csm.setAcknowledged("approved1", 2);
+ csm.setAcknowledged("approved1", 4);
+
+ //Waiting for little more than re-transmission interval
+ try{
+ Thread.sleep(Constants.RETRANSMISSION_INTERVAL + 100);
+ }catch(InterruptedException e){
+ e.printStackTrace();
+ }
+
+ //Only message no. 3 should be re-transmitted
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ assertEquals(msg1.getMessageID(), "rmsg3");
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+ }
+
+ //For testing weather getNextMsgToSend method works correctly
+ public void testNextMsgToSend(){
+ SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
+ ClientStorageManager csm = new ClientStorageManager();
+ RMMessageContext msg1;
+
+ //Next message to sent should be null (before approving outsequence)
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //approving the out sequence
+ csm.setTemporaryOutSequence("seqid1","uuid:aaaa-bbbb-cccc");
+ csm.setApprovedOutSequence("uuid:aaaa-bbbb-cccc", "approved1");
+
+ //messages should be returned (since the out sequence is approved)
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+ }
+
+ //Testing weather the out-sequence concept works correctly.
+ //Outgoing messages should be sent only when the out sequence is
approved.
+ public void testOutSequence(){
+ SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
+ ClientStorageManager csm = new ClientStorageManager();
+
+ //setting temporary out sequence
+ csm.setTemporaryOutSequence("seqid1","uuid:aaaa-bbbb-cccc");
+
+ RMMessageContext msg1;
+
+ //the message should be null since the out sequence has not been
approved
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //still the message should be null since the out sequence has not
been approved
+ msg1 = csm.getNextMessageToSend();
+ assertNull(msg1);
+
+ //approving the out sequence
+ csm.setApprovedOutSequence("uuid:aaaa-bbbb-cccc", "approved1");
+
+ //not the message should not be null (since out sequence was
approved)
+ msg1 = csm.getNextMessageToSend();
+ assertNotNull(msg1);
+ }
+
+ //Testing weather priority messages are sent correctly.
+ //They should be sent before application messages and should be sent
+ //even before the out-sequence get set.
+ public void testPriorityQueue(){
SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
ClientStorageManager csm = new ClientStorageManager();
- //setup and add 4 messages
+ //Addign a create sequence request message (this will be added to
the priority
+ //area of the storage)
+ RMMessageContext createSeqReq1 = new RMMessageContext();
+
createSeqReq1.setMessageType(Constants.MSG_TYPE_CREATE_SEQUENCE_REQUEST);
+ createSeqReq1.setMessageID("temp1");
+
+ csm.addCreateSequenceRequest(createSeqReq1);
+
+ RMMessageContext msg1;
+ ClientStorageManager csm1 = new ClientStorageManager();
+
+ //create sequence message should be returned
+ msg1 = csm1.getNextMessageToSend();
+ assertNotNull(msg1);
+
+ //other messages should not be returned since the out sequence has
not been approved.
+ msg1 = csm1.getNextMessageToSend();
+ assertNull(msg1);
+
+ //Addign a acknowledgement message (this will be added to the
priority
+ //area of the storage)
+ RMMessageContext ack1 = new RMMessageContext();
+ ack1.setMessageID("msgack1");
+ csm.addAcknowledgement(ack1);
+
+ //ack message should be returned
+ msg1 = csm1.getNextMessageToSend();
+ assertNotNull(msg1);
+
+ //other messages should not be returned since the out sequence has
not been approved.
+ msg1 = csm1.getNextMessageToSend();
+ assertNull(msg1);
+ }
+
+
+ public void setUp() throws QueueException{
+
+ SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
+ ClientStorageManager csm = new ClientStorageManager ();
+ RMMessageContext msg = new RMMessageContext();
+
+ //Creating a new outgoing sequence.
+ sq.createNewOutgoingSequence("seqid1");
+
+ //Adding messages to the outgoing sequence.
+
+ //Adding message 1
long nextMsgNo = csm.getNextMessageNumber("seqid1");
assertEquals(nextMsgNo, 1);
- RMMessageContext msg = new RMMessageContext();
msg.setMessageID("rmsg1");
msg.setSequenceID("seqid1");
msg.setMsgNumber(nextMsgNo);
-
- sq.createNewOutgoingSequence("seqid1");
sq.addMessageToOutgoingSequence("seqid1",msg);
+ //Adding message 2
nextMsgNo = csm.getNextMessageNumber("seqid1");
assertEquals(nextMsgNo, 2);
msg = new RMMessageContext();
@@ -56,196 +261,32 @@
msg.setMsgNumber(nextMsgNo);
sq.addMessageToOutgoingSequence("seqid1",msg);
+ //Adding message 3
nextMsgNo = csm.getNextMessageNumber("seqid1");
assertEquals(nextMsgNo, 3);
-
msg = new RMMessageContext();
msg.setMessageID("rmsg3");
msg.setSequenceID("seqid1");
msg.setMsgNumber(nextMsgNo);
+ //Adding message 4
sq.addMessageToOutgoingSequence("seqid1",msg);
nextMsgNo = csm.getNextMessageNumber("seqid1");
assertEquals(nextMsgNo, 4);
-
msg = new RMMessageContext();
msg.setMessageID("rmsg4");
msg.setSequenceID("seqid1");
msg.setMsgNumber(nextMsgNo);
sq.addMessageToOutgoingSequence("seqid1",msg);
- csm.setTemporaryOutSequence("seqid1","temp1");
-
- RMMessageContext createSeqReq1 = new RMMessageContext();
-
createSeqReq1.setMessageType(Constants.MSG_TYPE_CREATE_SEQUENCE_REQUEST);
- createSeqReq1.setMessageID("temp1");
- csm.addCreateSequenceRequest(createSeqReq1);
-
- RMMessageContext msg1;
- ClientStorageManager csm1 = new ClientStorageManager();
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getMessageID(), "temp1");
-
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
-
- RMMessageContext ack1 = new RMMessageContext();
- ack1.setMessageID("msgack1");
- csm.addAcknowledgement(ack1);
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getMessageID(), "msgack1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
-
- RMMessageContext createSeq = new RMMessageContext();
- createSeq.setMessageID("createSeqid1");
-
- csm.addCreateSequenceResponse(createSeq);
-
- sq.displayPriorityQueue();
- csm.setApprovedOutSequence("temp1", "approved1");
- sq.displayPriorityQueue();
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getMessageID(), "createSeqid1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
-
- Date d1 = new Date();
- long l1 = d1.getTime();
-
- try{
- Thread.sleep(5000);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
-
- Date d2 = new Date();
- long l2 = d2.getTime();
-
- if ((l2 - l1) < 4000) {
- System.out.println("Error: Wait time was not enough");
- return;
- }
-
- sq.displayPriorityQueue();
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
-
-
- d1 = new Date();
- l1 = d1.getTime();
-
- try{
- Thread.sleep(5000);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
-
- d2 = new Date();
- l2 = d2.getTime();
-
- if ((l2 - l1) < 4000) {
- System.out.println("Error: Wait time was not enough");
- return;
- }
-
- //Old messages must come again
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
-
- csm1.setAcknowledged("approved1", 1);
- csm1.setAcknowledged("approved1", 2);
- csm1.setAcknowledged("approved1", 4);
-
-
- d1 = new Date();
- l1 = d1.getTime();
-
- try{
- Thread.sleep(5000);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
-
- d2 = new Date();
- l2 = d2.getTime();
-
- if ((l2 - l1) < 4000) {
- System.out.println("Error: Wait time was not enough");
- return;
- }
+ }
+
+ public void tearDown(){
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1.getSequenceID(), "approved1");
- assertEquals(msg1.getMessageID(), "rmsg3");
+ //clearing the storage
+ ClientStorageManager csm = new ClientStorageManager ();
+ csm.clearStorage();
- msg1 = csm1.getNextMessageToSend();
- assertEquals(msg1, null);
}
- protected void setUp() throws Exception {
- super.setUp();
-
- SandeshaQueue sq = SandeshaQueue.getInstance(Constants.CLIENT);
-
- sq.clear(true);
-
- sq.createNewIncomingSequence("test");
-
- RMMessageContext msg1 = new RMMessageContext();
- msg1.setMessageID("msgid1"); msg1.setSequenceID("test");
-
- RMMessageContext msg2 = new RMMessageContext();
- msg2.setMessageID("msgid2"); msg2.setSequenceID("test");
-
- RMMessageContext msg3 = new RMMessageContext();
- msg3.setMessageID("msgid3"); msg3.setSequenceID("test");
-
- RMMessageContext msg4 = new RMMessageContext();
- msg4.setMessageID("msgid4"); msg4.setSequenceID("test");
-
- sq.addMessageToIncomingSequence("test", new Long(1), msg1);
- sq.addMessageToIncomingSequence("test", new Long(2), msg2);
- sq.addMessageToIncomingSequence("test", new Long(3), msg3);
- sq.addMessageToIncomingSequence("test", new Long(4), msg4);
-
- }
}
\ No newline at end of file