ODE-1066: Testcase

Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/3734f4b8
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/3734f4b8
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/3734f4b8

Branch: refs/heads/master
Commit: 3734f4b878f3f83021b13e60f2da66398227fec6
Parents: 760b379
Author: sathwik <[email protected]>
Authored: Sun Jul 16 22:36:17 2017 +0530
Committer: sathwik <[email protected]>
Committed: Sun Jul 16 22:36:17 2017 +0530

----------------------------------------------------------------------
 .../CompensationHandlerComparableTest.java      | 195 +++++++++++++++++++
 1 file changed, 195 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/3734f4b8/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CompensationHandlerComparableTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CompensationHandlerComparableTest.java
 
b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CompensationHandlerComparableTest.java
new file mode 100644
index 0000000..aeb6fa9
--- /dev/null
+++ 
b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CompensationHandlerComparableTest.java
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ode.bpel.runtime;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeSet;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+import junit.framework.TestCase;
+
+/**
+ * ODE-1066: Tests the Comparable implementation of CompensationHandler.
+ *
+ */
+public class CompensationHandlerComparableTest extends TestCase {
+    DateFormat format;
+    long startTime;
+    long endTime;
+
+    protected void setUp() throws Exception {
+        format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
+        startTime=0;
+        endTime=0;
+    }
+
+    public void testCompensationNestedScopes() {
+
+        try {
+            // parent scope encloses outerScope and outerScope encloses 
innerScope
+            //  ____________________
+            // | Parent             |
+            // |   _______________  |
+            // |  |Outer          | |
+            // |  |   __________  | |
+            // |  |  |Inner     | | |
+            // |  |  |__________| | |
+            // |  |_______________| |
+            // |____________________|
+            //
+            // Expected CH execution order parent, outerScope, innerScope
+
+            startTime = 
format.parse("2017-05-28T15:15:11.013+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler parent = new CompensationHandler(null, null, 
startTime, endTime);        
+
+            startTime = 
format.parse("2017-05-28T15:15:11.016+05:30").getTime();     
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler outerScope = new CompensationHandler(null, 
null, startTime, endTime);
+
+
+            startTime = 
format.parse("2017-05-28T15:15:11.030+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.090+05:30").getTime();
+            CompensationHandler innerScope = new CompensationHandler(null, 
null, startTime, endTime);
+
+            List<CompensationHandler> chHandlers = new 
ArrayList<CompensationHandler>();
+            chHandlers.add(parent);
+            chHandlers.add(outerScope);
+            chHandlers.add(innerScope);
+
+            TreeSet<CompensationHandler> set = new 
TreeSet<CompensationHandler>();
+            set.addAll(chHandlers);
+            assertEquals(3, set.size());
+
+            CompensationHandler[] expectedOrder = 
{parent,outerScope,innerScope};
+            CompensationHandler[] actualOrder = new CompensationHandler[3];
+            set.toArray(actualOrder);
+            assertTrue(Arrays.equals(expectedOrder, actualOrder));
+        } catch (ParseException e) {
+            fail("Unparsable date format");
+        }
+
+    }
+
+    public void testCompensationPeerScopes() {
+
+        try {
+
+            //  ____________________
+            // | Parent             |
+            // |  _______           |
+            // | |Child1 |          |
+            // | |_______|  _______ | 
+            // |           |Child2 ||
+            // |           |_______||
+            // |                    |
+            // |____________________|
+            //
+            // child1 starts and completes, child2 starts and completes and 
then parent completes 
+            // Expected CH execution order parent, child2, child1
+
+            //parent
+            startTime = 
format.parse("2017-05-28T15:15:11.013+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler parent = new CompensationHandler(null, null, 
startTime, endTime);        
+
+            //child1
+            startTime = 
format.parse("2017-05-28T15:15:11.017+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.030+05:30").getTime();
+            CompensationHandler child1 = new CompensationHandler(null, null, 
startTime, endTime);
+
+            //child2
+            startTime = 
format.parse("2017-05-28T15:15:11.035+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.060+05:30").getTime();
+            CompensationHandler child2 = new CompensationHandler(null, null, 
startTime, endTime);
+
+            List<CompensationHandler> chHandlers = new 
ArrayList<CompensationHandler>();
+            chHandlers.add(child2);
+            chHandlers.add(child1);
+            chHandlers.add(parent);
+
+            TreeSet<CompensationHandler> set = new 
TreeSet<CompensationHandler>();
+            set.addAll(chHandlers);
+            assertEquals(3, set.size());
+
+            CompensationHandler[] expectedOrder = {parent,child2,child1};
+            CompensationHandler[] actualOrder = new CompensationHandler[3];
+            set.toArray(actualOrder);
+            assertTrue(Arrays.equals(expectedOrder, actualOrder));
+        } catch (ParseException e) {
+            fail("Unparsable date format");
+        }
+
+    }
+
+    public void testCompensationParallelScopes() {
+
+        try {
+
+            //  _______________
+            // | Parent        |
+            // |  ____________ |
+            // | |Child1      ||
+            // | |____________|| 
+            // |  |Child2     ||
+            // |  |___________||
+            // |               |
+            // |_______________|
+            //
+            // child1 & child2 run parallel with start time slightly different 
but with same end time.
+            // Expected CH execution order parent, child1, child2
+
+            //parent
+            startTime = 
format.parse("2017-05-28T15:15:11.013+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler parent = new CompensationHandler(null, null, 
startTime, endTime);        
+
+            //child1
+            startTime = 
format.parse("2017-05-28T15:15:11.016+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler child1 = new CompensationHandler(null, null, 
startTime, endTime);
+
+            //child2
+            startTime = 
format.parse("2017-05-28T15:15:11.017+05:30").getTime();
+            endTime = format.parse("2017-05-28T15:15:11.099+05:30").getTime();
+            CompensationHandler child2 = new CompensationHandler(null, null, 
startTime, endTime);
+
+            List<CompensationHandler> chHandlers = new 
ArrayList<CompensationHandler>();
+            chHandlers.add(child2);
+            chHandlers.add(child1);
+            chHandlers.add(parent);
+
+            TreeSet<CompensationHandler> set = new 
TreeSet<CompensationHandler>();
+            set.addAll(chHandlers);
+            assertEquals(3, set.size());
+
+            CompensationHandler[] expectedOrder = {parent,child1,child2};
+            CompensationHandler[] actualOrder = new CompensationHandler[3];
+            set.toArray(actualOrder);
+            assertTrue(Arrays.equals(expectedOrder, actualOrder));
+
+        } catch (ParseException e) {
+            fail("Unparsable date format");
+        }
+    }
+}

Reply via email to