Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java (original) +++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java Tue Nov 7 17:54:31 2006 @@ -32,7 +32,7 @@ import org.apache.ode.bpel.iapi.MessageExchangeContext; import org.apache.ode.bpel.iapi.MyRoleMessageExchange; import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange; -import org.apache.ode.bpel.o.FailureHandling; +import org.apache.ode.bpel.o.OFailureHandling; import org.apache.ode.bpel.pmapi.BpelManagementFacade; import org.apache.ode.bpel.pmapi.TActivityInfo; import org.apache.ode.bpel.pmapi.TActivityStatus; @@ -52,6 +52,7 @@ static final String[] ACTIONS = new String[]{ "retry", "cancel", "fault" }; int _invoked; int _failFor; + boolean _responseSent; MockBpelServer _server; BpelManagementFacade _management; @@ -74,22 +75,22 @@ assertCompleted(true, 5, null); } - public void testCancelRecoveryAction() throws Exception { + public void testFaultRecoveryAction() throws Exception { execute("FailureToRecovery", 4); assertRecovery(3, ACTIONS); recover("retry"); assertRecovery(4, ACTIONS); - recover("cancel"); - assertCompleted(true, 4, null); + recover("fault"); + assertCompleted(false, 4, OFailureHandling.FAILURE_FAULT_NAME); } - public void testFaultRecoveryAction() throws Exception { - execute("FailureToRecovery", 4); + public void testCancelRecoveryAction() throws Exception { + execute("FailureToCancel", 4); assertRecovery(3, ACTIONS); recover("retry"); assertRecovery(4, ACTIONS); - recover("fault"); - assertCompleted(false, 4, FailureHandling.FAILURE_FAULT_NAME); + recover("cancel"); + assertCompleted(true, 4, null); } public void testImmediateFailure() throws Exception { @@ -99,7 +100,7 @@ public void testImmediateFault() throws Exception { execute("FailureToFault", 2); - assertCompleted(false, 1, FailureHandling.FAILURE_FAULT_NAME); + assertCompleted(false, 1, OFailureHandling.FAILURE_FAULT_NAME); } public void testInheritence() throws Exception { @@ -113,14 +114,20 @@ return new MessageExchangeContext() { public void invokePartner(final PartnerRoleMessageExchange mex) throws ContextException { - ++_invoked; - if (_invoked > _failFor) { - Message response = mex.createMessage(mex.getOperation().getOutput().getMessage().getQName()); - response.setMessage(DOMUtils.newDocument().createElementNS(NAMESPACE, "tns:ResponseElement")); - mex.reply(response); - } else - mex.replyWithFailure(MessageExchange.FailureType.COMMUNICATION_ERROR, "BangGoesInvoke", null); - //mex.replyWithFailure(FailureType, String, Element); +System.out.println("-- Invoke: " + mex.getOperation().getName()); + if (mex.getOperation().getName().equals("invoke")) { + // Failing invocation. + ++_invoked; + if (_invoked > _failFor) { + Message response = mex.createMessage(mex.getOperation().getOutput().getMessage().getQName()); + response.setMessage(DOMUtils.newDocument().createElementNS(NAMESPACE, "tns:ResponseElement")); + mex.reply(response); + } else { +System.out.println("-- Failed: " + _invoked); + mex.replyWithFailure(MessageExchange.FailureType.COMMUNICATION_ERROR, "BangGoesInvoke", null); + } + } else if (mex.getOperation().getName().equals("respond")) + _responseSent = true; } public void onAsyncReply(MyRoleMessageExchange myRoleMex) { } @@ -129,6 +136,7 @@ }; _server.deploy(new File(new URI(this.getClass().getResource("/recovery").toString()))); _management = _server.getBpelManagementFacade(); +System.out.println("-- Start test"); } protected void tearDown() throws Exception { @@ -158,11 +166,16 @@ TInstanceInfo instance = _management.listAllInstances().getInstanceInfoList().getInstanceInfoArray(0); TInstanceInfo.Failures failures = instance.getFailures(); assertTrue(failures == null || failures.getCount() == 0); +System.out.println("-- Status: " + instance.getStatus()); +System.out.println("-- Fault: " + instance.getFaultInfo()); if (successful) { assertTrue(instance.getStatus() == TInstanceStatus.COMPLETED); + assertTrue(_responseSent); } else if (faultName == null) { assertTrue(instance.getStatus() == TInstanceStatus.TERMINATED); + assertFalse(_responseSent); } else { + assertFalse(_responseSent); assertTrue(instance.getStatus() == TInstanceStatus.FAILED); TFaultInfo faultInfo = instance.getFaultInfo(); assertTrue(faultInfo != null && faultInfo.getName().equals(faultName)); @@ -175,8 +188,11 @@ protected void assertRecovery(int invoked, String[] actions) { // Test in aggregate to see how many activities we have in this state. TInstanceInfo instance = _management.listAllInstances().getInstanceInfoList().getInstanceInfoArray(0); + assertTrue(instance.getStatus() == TInstanceStatus.ACTIVE); + assertFalse(_responseSent); TInstanceInfo.Failures failures = instance.getFailures(); assertTrue(failures != null && failures.getCount() == 1); +System.out.println("-- Failures count: " + failures.getCount()); // Look for individual activities inside the process instance. @SuppressWarnings("unused") TScopeInfo rootScope = _management.getScopeInfoWithActivity(instance.getRootScope().getSiid(), true).getScopeInfo();
Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original) +++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Tue Nov 7 17:54:31 2006 @@ -76,17 +76,18 @@ createDataSource(); createDAOConnection(); createScheduler(); - _store = new ProcessStoreImpl(new File("."), null, null); - if (_daoCF == null) throw new RuntimeException("No DAO"); _server.setDaoConnectionFactory(_daoCF); if (_scheduler == null) throw new RuntimeException("No scheduler"); + //_store = new ProcessStoreImpl(new File("."), _dataSource, _txManager); + _store = new ProcessStoreImpl(new File("."), null, null); _server.setScheduler(_scheduler); _server.setEndpointReferenceContext(createEndpointReferenceContext()); _server.setMessageExchangeContext(createMessageExchangeContext()); _server.setBindingContext(createBindingContext()); + _server.setProcessStore(_store); _server.init(); _server.start(); } catch (Exception except) { Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/deploy.xml URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/deploy.xml?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/deploy.xml (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/deploy.xml Tue Nov 7 17:54:31 2006 @@ -11,6 +11,9 @@ <invoke partnerLink="failingPartnerLink"> <service name="wns:FailingService" port="soap"/> </invoke> + <invoke partnerLink="instantiatingPartnerLink"> + <service name="wns:ResponseService" port="soap"/> + </invoke> </process> <process name="pns:FailureToFault"> @@ -21,6 +24,9 @@ <invoke partnerLink="failingPartnerLink"> <service name="wns:FailingService" port="soap"/> </invoke> + <invoke partnerLink="instantiatingPartnerLink"> + <service name="wns:ResponseService" port="soap"/> + </invoke> </process> <process name="pns:FailureNoRetry"> @@ -31,6 +37,22 @@ <invoke partnerLink="failingPartnerLink"> <service name="wns:FailingService" port="soap"/> </invoke> + <invoke partnerLink="instantiatingPartnerLink"> + <service name="wns:ResponseService" port="soap"/> + </invoke> + </process> + + <process name="pns:FailureToCancel"> + <active>true</active> + <provide partnerLink="instantiatingPartnerLink"> + <service name="wns:FailureToCancel" port="soap"/> + </provide> + <invoke partnerLink="failingPartnerLink"> + <service name="wns:FailingService" port="soap"/> + </invoke> + <invoke partnerLink="instantiatingPartnerLink"> + <service name="wns:ResponseService" port="soap"/> + </invoke> </process> <process name="pns:FailureInheritence"> @@ -40,6 +62,9 @@ </provide> <invoke partnerLink="failingPartnerLink"> <service name="wns:FailingService" port="soap"/> + </invoke> + <invoke partnerLink="instantiatingPartnerLink"> + <service name="wns:ResponseService" port="soap"/> </invoke> </process> </deploy> Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-inheritence.bpel URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-inheritence.bpel?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-inheritence.bpel (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-inheritence.bpel Tue Nov 7 17:54:31 2006 @@ -6,10 +6,11 @@ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ext="http://ode.apache.org/activityRecovery"> - <ext:failureHandling> - <ext:retryFor>2</ext:retryFor> - <ext:retryDelay>0</ext:retryDelay> - </ext:failureHandling> + <ext:failureHandling> + <ext:retryFor>2</ext:retryFor> + <ext:retryDelay>0</ext:retryDelay> + </ext:failureHandling> + <import location="services.wsdl" namespace="http://ode.apache.org/bpel/unit-test" importType="http://schemas.xmlsoap.org/wsdl/"/> @@ -17,7 +18,7 @@ <partnerLinks> <partnerLink name="instantiatingPartnerLink" partnerLinkType="tns:InstantiatingPartnerLinkType" - myRole="me"/> + myRole="me" partnerRole="partner" initializePartnerRole="yes"/> <partnerLink name="failingPartnerLink" partnerLinkType="tns:FailingPartnerLinkType" partnerRole="partner" initializePartnerRole="yes"/> @@ -35,12 +36,30 @@ operation="instantiate" variable="request" createInstance="yes"/> - <invoke name="invoke" - partnerLink="failingPartnerLink" - portType="tns:FailingPortType" - operation="invoke" - inputVariable="request" - outputVariable="response"/> + <flow> + <links> + <link name="successfulInvoke"/> + </links> + <invoke name="invoke" + partnerLink="failingPartnerLink" + portType="tns:FailingPortType" + operation="invoke" + inputVariable="request" + outputVariable="response"> + <sources> + <source linkName="successfulInvoke"/> + </sources> + </invoke> + <invoke name="response" + partnerLink="instantiatingPartnerLink" + portType="tns:ResponsePortType" + operation="respond" + inputVariable="response"> + <targets> + <target linkName="successfulInvoke"/> + </targets> + </invoke> + </flow> </sequence> </process> Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-no-retry.bpel URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-no-retry.bpel?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-no-retry.bpel (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-no-retry.bpel Tue Nov 7 17:54:31 2006 @@ -13,7 +13,7 @@ <partnerLinks> <partnerLink name="instantiatingPartnerLink" partnerLinkType="tns:InstantiatingPartnerLinkType" - myRole="me"/> + myRole="me" partnerRole="partner" initializePartnerRole="yes"/> <partnerLink name="failingPartnerLink" partnerLinkType="tns:FailingPartnerLinkType" partnerRole="partner" initializePartnerRole="yes"/> @@ -31,12 +31,30 @@ operation="instantiate" variable="request" createInstance="yes"/> - <invoke name="invoke" - partnerLink="failingPartnerLink" - portType="tns:FailingPortType" - operation="invoke" - inputVariable="request" - outputVariable="response"/> + <flow> + <links> + <link name="successfulInvoke"/> + </links> + <invoke name="invoke" + partnerLink="failingPartnerLink" + portType="tns:FailingPortType" + operation="invoke" + inputVariable="request" + outputVariable="response"> + <sources> + <source linkName="successfulInvoke"/> + </sources> + </invoke> + <invoke name="response" + partnerLink="instantiatingPartnerLink" + portType="tns:ResponsePortType" + operation="respond" + inputVariable="response"> + <targets> + <target linkName="successfulInvoke"/> + </targets> + </invoke> + </flow> </sequence> </process> Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel Tue Nov 7 17:54:31 2006 @@ -13,7 +13,7 @@ <partnerLinks> <partnerLink name="instantiatingPartnerLink" partnerLinkType="tns:InstantiatingPartnerLinkType" - myRole="me"/> + myRole="me" partnerRole="partner" initializePartnerRole="yes"/> <partnerLink name="failingPartnerLink" partnerLinkType="tns:FailingPartnerLinkType" partnerRole="partner" initializePartnerRole="yes"/> @@ -31,16 +31,33 @@ operation="instantiate" variable="request" createInstance="yes"/> - <invoke name="invoke" - partnerLink="failingPartnerLink" - portType="tns:FailingPortType" - operation="invoke" - inputVariable="request" - outputVariable="response"> - <ext:failureHandling> - <ext:faultOnFailure>true</ext:faultOnFailure> - </ext:failureHandling> - </invoke> + <flow> + <links> + <link name="successfulInvoke"/> + </links> + <invoke name="invoke" + partnerLink="failingPartnerLink" + portType="tns:FailingPortType" + operation="invoke" + inputVariable="request" + outputVariable="response"> + <sources> + <source linkName="successfulInvoke"/> + </sources> + <ext:failureHandling> + <ext:faultOnFailure>true</ext:faultOnFailure> + </ext:failureHandling> + </invoke> + <invoke name="response" + partnerLink="instantiatingPartnerLink" + portType="tns:ResponsePortType" + operation="respond" + inputVariable="response"> + <targets> + <target linkName="successfulInvoke"/> + </targets> + </invoke> + </flow> </sequence> </process> Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-recovery.bpel URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-recovery.bpel?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-recovery.bpel (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/failure-to-recovery.bpel Tue Nov 7 17:54:31 2006 @@ -13,7 +13,7 @@ <partnerLinks> <partnerLink name="instantiatingPartnerLink" partnerLinkType="tns:InstantiatingPartnerLinkType" - myRole="me"/> + myRole="me" partnerRole="partner" initializePartnerRole="yes"/> <partnerLink name="failingPartnerLink" partnerLinkType="tns:FailingPartnerLinkType" partnerRole="partner" initializePartnerRole="yes"/> @@ -31,17 +31,34 @@ operation="instantiate" variable="request" createInstance="yes"/> - <invoke name="invoke" - partnerLink="failingPartnerLink" - portType="tns:FailingPortType" - operation="invoke" - inputVariable="request" - outputVariable="response"> - <ext:failureHandling> - <ext:retryFor>2</ext:retryFor> - <ext:retryDelay>0</ext:retryDelay> - </ext:failureHandling> - </invoke> + <flow> + <links> + <link name="successfulInvoke"/> + </links> + <invoke name="invoke" + partnerLink="failingPartnerLink" + portType="tns:FailingPortType" + operation="invoke" + inputVariable="request" + outputVariable="response"> + <sources> + <source linkName="successfulInvoke"/> + </sources> + <ext:failureHandling> + <ext:retryFor>2</ext:retryFor> + <ext:retryDelay>0</ext:retryDelay> + </ext:failureHandling> + </invoke> + <invoke name="response" + partnerLink="instantiatingPartnerLink" + portType="tns:ResponsePortType" + operation="respond" + inputVariable="response"> + <targets> + <target linkName="successfulInvoke"/> + </targets> + </invoke> + </flow> </sequence> </process> Modified: incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/services.wsdl URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/services.wsdl?view=diff&rev=472363&r1=472362&r2=472363 ============================================================================== --- incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/services.wsdl (original) +++ incubator/ode/trunk/bpel-runtime/src/test/resources/recovery/services.wsdl Tue Nov 7 17:54:31 2006 @@ -31,6 +31,11 @@ <output message="tns:Response"/> </operation> </portType> + <portType name="ResponsePortType"> + <operation name="respond"> + <input message="tns:Response"/> + </operation> + </portType> <binding name="InstantiatingBinding" type="tns:InstantiatingPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> @@ -55,6 +60,16 @@ </operation> </binding> + <binding name="ResponseBinding" type="tns:ResponsePortType"> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <operation name="respond"> + <soap:operation/> + <input> + <soap:body use="literal"/> + </input> + </operation> + </binding> + <service name="FailingService"> <port name="soap" binding="tns:FailingBinding"> <soap:address location="http://localhost/FailingEndpoint"/> @@ -67,6 +82,12 @@ </port> </service> + <service name="FailureToCancel"> + <port name="soap" binding="tns:InstantiatingBinding"> + <soap:address location="http://localhost/pxe/soap/FailureToCancel"/> + </port> + </service> + <service name="FailureToFault"> <port name="soap" binding="tns:InstantiatingBinding"> <soap:address location="http://localhost/pxe/soap/FailureToFault"/> @@ -79,12 +100,19 @@ </port> </service> + <service name="ResponseService"> + <port name="soap" binding="tns:ResponseBinding"> + <soap:address location="http://localhost/ResponseEndpoint"/> + </port> + </service> + <plnk:partnerLinkType name="FailingPartnerLinkType"> <plnk:role name="partner" portType="tns:FailingPortType"/> </plnk:partnerLinkType> <plnk:partnerLinkType name="InstantiatingPartnerLinkType"> <plnk:role name="me" portType="tns:InstantiatingPortType"/> + <plnk:role name="partner" portType="tns:ResponsePortType"/> </plnk:partnerLinkType> </definitions>
