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));