ODE-990: test case git-svn-id: https://svn.apache.org/repos/asf/ode/trunk@1437925 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SchedulerThreadTest.java b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SchedulerThreadTest.java index ca5e9cc..8ed0b2a 100644 --- a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SchedulerThreadTest.java +++ b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SchedulerThreadTest.java
@@ -107,6 +107,29 @@ } } + @Test + public void testTaskDequeueOrderWithSameExecTime() throws Exception { + final long startTime = System.currentTimeMillis(); + + // enqueue jobs with same execution time and incremental jobId + for (int i = 0; i < 300; i++) { + Job tsk = new Job(startTime, String.valueOf(i), true, null); + _st.enqueue(tsk); + } + + _st.start(); + Thread.sleep(300 + 300 * 5); + assertEquals(300, _tasks.size()); + + // jobs need to be dequeued in the same order of insertion. + for (int i = 0; i < 299; ++i) { + Job currJob = (Job) _tasks.get(i).task; + Job nextJob = (Job) _tasks.get(i + 1).task; + assertTrue(Integer.parseInt(currJob.jobId) < Integer.parseInt(nextJob.jobId)); + } + _st.stop(); + } + public void runTask(Task task) { synchronized(_tasks) { _tasks.add(new TR(System.currentTimeMillis(),task));