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
  
  
  

Reply via email to