You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by an...@apache.org on 2006/11/27 12:43:31 UTC

svn commit: r479596 - in /incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm: GreeterImpl.java SequenceTest.java twoway-message-loss.xml

Author: andreasmyth
Date: Mon Nov 27 03:43:30 2006
New Revision: 479596

URL: http://svn.apache.org/viewvc?view=rev&rev=479596
Log:
[JIRA CXF-140] Test message loss in twoway scenario.

Modified:
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/GreeterImpl.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/twoway-message-loss.xml

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/GreeterImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/GreeterImpl.java?view=diff&rev=479596&r1=479595&r2=479596
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/GreeterImpl.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/GreeterImpl.java Mon Nov 27 03:43:30 2006
@@ -43,10 +43,26 @@
 public class GreeterImpl implements Greeter {
 
     private static final Logger LOG = Logger.getLogger(GreeterImpl.class.getName());
-    
+    private long delay;
+     
+    public long getDelay() {
+        return delay;
+    }
+
+    public void setDelay(long d) {
+        delay = d;
+    }
+
     public String greetMe(String arg0) {
         LOG.fine("Executing operation greetMe with parameter: " + arg0);
         String result = arg0.toUpperCase();
+        if (delay > 0) {
+            try {
+                Thread.sleep(delay);
+            } catch (InterruptedException ex) {
+                // ignore
+            }
+        }
         LOG.fine("returning: " + result);
         return result;
     }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java?view=diff&rev=479596&r1=479595&r2=479596
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java Mon Nov 27 03:43:30 2006
@@ -63,7 +63,7 @@
     private OutMessageRecorder outRecorder;
     private InMessageRecorder inRecorder;
 
-    private boolean testAll;
+    private boolean testAll = true;
     private boolean doTestOnewayAnonymousAcks = testAll;
     private boolean doTestOnewayDeferredAnonymousAcks = testAll;
     private boolean doTestOnewayDeferredNonAnonymousAcks = testAll;
@@ -72,7 +72,8 @@
     private boolean doTestTwowayNonAnonymous = testAll;
     private boolean doTestTwowayNonAnonymousDeferred = testAll;
     private boolean doTestTwowayNonAnonymousMaximumSequenceLength2 = testAll;
-    private boolean doTestOnewayMessageLoss = true;
+    private boolean doTestOnewayMessageLoss = testAll;
+    private boolean doTestTwowayMessageLoss = testAll;
 
     public static void main(String[] args) {
         junit.textui.TestRunner.run(SequenceTest.class);
@@ -524,7 +525,7 @@
         // Expected outbound:
         // CreateSequence 
         // + 4 greetMe messages
-        // + at least 2 resends (message maye be resend multiple times depending
+        // + at least 2 resends (message may be resent multiple times depending
         // on the timing of the ACKs)
        
         String[] expectedActions = new String[7];
@@ -547,6 +548,62 @@
                                         null, null, null, null};
         mf.verifyActions(expectedActions, false);
         mf.verifyMessageNumbers(new String[] {null, null, null, null, null}, false);
+        mf.verifyAcknowledgements(new boolean[] {false, true, true, true, true}, false);
+  
+    }
+    
+    public void testTwowayMessageLoss() throws Exception {
+        if (!doTestTwowayMessageLoss) {
+            return;
+        }
+        setupGreeter("org/apache/cxf/systest/ws/rm/twoway-message-loss.xml");
+        
+        greeterBus.getOutInterceptors().add(new MessageLossSimulator());
+        RMManager manager = greeterBus.getExtension(RMManager.class);
+        manager.getRMAssertion().getBaseRetransmissionInterval().setMilliseconds(new BigInteger("2000"));
+
+        greeter.greetMeAsync("one");
+        greeter.greetMeAsync("two");
+        greeter.greetMeAsync("three");
+        greeter.greetMeAsync("four");
+        
+        awaitMessages(7, 10, 10000);
+        
+        MessageFlow mf = new MessageFlow(outRecorder.getOutboundMessages(), inRecorder.getInboundMessages());
+
+        // Expected outbound:
+        // CreateSequence 
+        // + 4 greetMe messages
+        // + 2 resends
+       
+        String[] expectedActions = new String[7];
+        expectedActions[0] = RMConstants.getCreateSequenceAction();        
+        for (int i = 1; i < expectedActions.length; i++) {
+            expectedActions[i] = GREETME_ACTION;
+        }
+        mf.verifyActions(expectedActions, true);
+        mf.verifyMessageNumbers(new String[] {null, "1", "2", "2", "3", "4", "4"}, true);
+        mf.verifyLastMessage(new boolean[7], true);
+        boolean[] expectedAcks = new boolean[7];
+        for (int i = 2; i < expectedAcks.length; i++) {
+            expectedAcks[i] = true;
+        }
+        mf.verifyAcknowledgements(expectedAcks , true);
+ 
+        // Expected inbound:
+        // createSequenceResponse 
+        // + 4 greetMeResponse actions (to original or resent) 
+        // + 5 partial responses (to CSR & each of the initial greetMe messages)
+        // + at least 2 further partial response (for each of the resends)
+        
+        mf.verifyPartialResponses(5);
+        mf.purgePartialResponses();
+        
+        expectedActions = new String[] {RMConstants.getCreateSequenceResponseAction(),
+                                        GREETME_RESPONSE_ACTION, GREETME_RESPONSE_ACTION,
+                                        GREETME_RESPONSE_ACTION, GREETME_RESPONSE_ACTION};
+        mf.verifyActions(expectedActions, false);
+        mf.verifyMessageNumbers(new String[] {null, "1", "2", "3", "4"}, false);
         mf.verifyAcknowledgements(new boolean[] {false, true, true, true, true}, false);
   
     }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/twoway-message-loss.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/twoway-message-loss.xml?view=diff&rev=479596&r1=479595&r2=479596
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/twoway-message-loss.xml (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/twoway-message-loss.xml Mon Nov 27 03:43:30 2006
@@ -25,7 +25,6 @@
        xsi:schemaLocation="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     
-    <!--
     <bean name="{http://cxf.apache.org/greeter_control}GreeterPort.http-conduit" abstract="true">
         <property name="client">
             <value>
@@ -33,7 +32,6 @@
             </value>
         </property>
     </bean>
-    -->
     
     <bean id="org.apache.cxf.ws.rm.RMManager" class="org.apache.cxf.ws.rm.RMManager">
         <property name="bus" ref="cxf"/>