Author: mriou
Date: Tue Apr  3 10:48:09 2007
New Revision: 525220

URL: http://svn.apache.org/viewvc?view=rev&rev=525220
Log:
Have to change the way the mex invocation works to allow blocking / non 
blocking scenarios to work.

Modified:
    
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java

Modified: 
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java?view=diff&rev=525220&r1=525219&r2=525220
==============================================================================
--- 
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
 (original)
+++ 
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
 Tue Apr  3 10:48:09 2007
@@ -190,16 +190,55 @@
             // Running tests in separate threads to allow concurrent invocation
             // (otherwise the first receive/reply invocation is going to block
             // everybody).
-            Thread testRun = new Thread(new Runnable() {
-                public void run() {
-                    doInvoke(testProps, serviceId, operation);
+            for (int i = 1; testProps.getProperty("request" + i) != null; i++) 
{
+                MyRoleMessageExchange mex = null;
+                Future running = null;
+                String responsePattern = null;
+                try {
+                    scheduler.begin();
+
+                    mex = server.getEngine().createMessageExchange(new 
GUID().toString(), serviceId, operation);
+
+                    String in = testProps.getProperty("request" + i);
+                    responsePattern = testProps.getProperty("response" + i);
+
+                    mexContext.clearCurrentResponse();
+
+                    Message request = mex.createMessage(null);
+
+                    Element elem = DOMUtils.stringToDOM(in);
+                    request.setMessage(elem);
+
+
+                    running = mex.invoke(request);
+                    scheduler.commit();
+                } catch ( Throwable e ) {
+                    e.printStackTrace();
+                    scheduler.rollback();
+                    fail();
                 }
-            });
-            
-            testThreads.add(testRun);
-            testRun.start();
 
-            Thread.sleep(200);
+                Thread testRun = null;
+                if (!responsePattern.equals("ASYNC")) {
+                    final Future frunning = running;
+                    final MyRoleMessageExchange fmex = mex;
+                    final String fpattern = responsePattern;
+                    final String frequestName = "request" + i;
+                    testRun = new Thread(new Runnable() {
+                        public void run() {
+                            processReply(frunning, fmex, fpattern, 
frequestName);
+                        }
+                    });
+                }
+
+                if (testRun != null) {
+                    testThreads.add(testRun);
+                    testRun.start();
+                    Thread.sleep(100);
+                }
+
+            }
+
             propsFileCnt++;
             testPropsFile = new File(deployDir + "/test" + propsFileCnt
                     + ".properties");
@@ -248,94 +287,63 @@
      * responseN=ASYNC responseN=ONE_WAY responseN=COMPLETED_OK
      *
      */
-    private void doInvoke(Properties testProps, QName serviceId, String 
operation) {
-        for (int i = 1; testProps.getProperty("request" + i) != null; i++) {
-            MyRoleMessageExchange mex = null;
-            Future running = null;
-            String responsePattern = null;
+    private void processReply(Future running, MyRoleMessageExchange mex, 
String responsePattern, String requestName) {
             try {
-                scheduler.begin();
-
-                mex = server.getEngine().createMessageExchange(new 
GUID().toString(), serviceId, operation);
-
-                String in = testProps.getProperty("request" + i);
-                responsePattern = testProps.getProperty("response" + i);
-
-                mexContext.clearCurrentResponse();
-
-                Message request = mex.createMessage(null);
-
-                Element elem = DOMUtils.stringToDOM(in);
-                request.setMessage(elem);
-
-
-                running = mex.invoke(request);
-                scheduler.commit();
-            } catch ( Throwable e ) {
-                e.printStackTrace();
-                scheduler.rollback();
+                running.get(200000, TimeUnit.MILLISECONDS);
+            } catch (Exception e) {
+                System.out.println("TIMEOUT!");
                 fail();
             }
 
-            if (!responsePattern.equals("ASYNC")) {
-                try {
-                    running.get(200000, TimeUnit.MILLISECONDS);
-                } catch (Exception e) {
-                    System.out.println("TIMEOUT!");
-                    fail();
-                }
-
-                switch (mex.getStatus()) {
-                    case RESPONSE:
-                        testResponsePattern("request" + i, mex.getResponse(), 
responsePattern);
-                        // TODO: test for response fault
-                        break;
-                    case ASYNC:
-
-                        switch (mex.getMessageExchangePattern()) {
-                            case REQUEST_ONLY:
-                                if (!responsePattern.equals("ASYNC"))
-                                    fail();
-                                break;
-                            case REQUEST_RESPONSE:
-                                testResponsePattern("request" + i, 
mexContext.getCurrentResponse(),
-                                        responsePattern);
-                            default:
-                                break;
-                        }
-
-                        break;
-                    case COMPLETED_OK:
-                        if (!responsePattern.equals("COMPLETED_OK"))
-                            testResponsePattern("request" + i, 
mexContext.getCurrentResponse(),
+            switch (mex.getStatus()) {
+                case RESPONSE:
+                    testResponsePattern(requestName, mex.getResponse(), 
responsePattern);
+                    // TODO: test for response fault
+                    break;
+                case ASYNC:
+
+                    switch (mex.getMessageExchangePattern()) {
+                        case REQUEST_ONLY:
+                            if (!responsePattern.equals("ASYNC"))
+                                fail();
+                            break;
+                        case REQUEST_RESPONSE:
+                            testResponsePattern(requestName, 
mexContext.getCurrentResponse(),
                                     responsePattern);
-                        break;
-                    case FAULT:
-                        // TODO: handle Fault
-                        System.out.println("=> " + mex.getFault() + " " + 
mex.getFaultExplanation());
-                        fail();
-                        break;
-                    case COMPLETED_FAILURE:
-                        // TODO: handle Failure
-                        System.out.println("=> " + mex.getFaultExplanation());
-                        fail();
-                        break;
-                    case COMPLETED_FAULT:
-                        // TODO: handle Failure
-                        System.out.println("=> " + mex.getFaultExplanation());
-                        fail();
-                        break;
-                    case FAILURE:
-                        // TODO: handle Faulure
-                        System.out.println("=> " + mex.getFaultExplanation());
-                        fail();
-                        break;
-                    default:
-                        fail();
-                        break;
-                }
+                        default:
+                            break;
+                    }
+
+                    break;
+                case COMPLETED_OK:
+                    if (!responsePattern.equals("COMPLETED_OK"))
+                        testResponsePattern(requestName, 
mexContext.getCurrentResponse(),
+                                responsePattern);
+                    break;
+                case FAULT:
+                    // TODO: handle Fault
+                    System.out.println("=> " + mex.getFault() + " " + 
mex.getFaultExplanation());
+                    fail();
+                    break;
+                case COMPLETED_FAILURE:
+                    // TODO: handle Failure
+                    System.out.println("=> " + mex.getFaultExplanation());
+                    fail();
+                    break;
+                case COMPLETED_FAULT:
+                    // TODO: handle Failure
+                    System.out.println("=> " + mex.getFaultExplanation());
+                    fail();
+                    break;
+                case FAILURE:
+                    // TODO: handle Faulure
+                    System.out.println("=> " + mex.getFaultExplanation());
+                    fail();
+                    break;
+                default:
+                    fail();
+                    break;
             }
-        }
     }
 
     protected static class Failure {


Reply via email to