@Test public void testSequenceWithDependencies() throws Exception { List<String> sequence = new Vector<String>(); Task task1 = createTask(appender(sequence, "task1")); Task task2 = createTask(appender(sequence, "task2")); SequenceTask seq = createSequence(); seq.add(appender(sequence, "subtask1")); seq.add(appender(sequence, "subtask2")); seq.add(appender(sequence, "subtask3")); seq.addPrerequisite(task1); task2.addPrerequisite(seq); seq.schedule(); task1.schedule(); task2.schedule(); task2.waitFor(3500, TimeUnit.MILLISECONDS); assertArrayEquals( new String[] {"task1", "subtask1", "subtask2", "subtask3", "task2"}, sequence.toArray(new String[0])); }
@Test public void testSequenceTask() throws Exception { final List<String> sequence = new Vector<String>(); SequenceTask seq = createSequence(); seq.add(appender(sequence, "task1")); seq.add(appender(sequence, "task2")); seq.add(appender(sequence, "task3")); seq.schedule(); seq.waitFor(3500, TimeUnit.MILLISECONDS); assertArrayEquals(new String[] {"task1", "task2", "task3"}, sequence.toArray(new String[0])); }
@Test public void testLargeSequenceInProgress() throws Exception { long count = 10; long loops = 1000; long total = count * loops; AtomicLong result = new AtomicLong(0); SequenceTask task = createSequence(); task.add(scheduler(task, result, 1, count, loops - 1)); task.schedule(); task.waitFor(); assertEquals(total * (total + 1) / 2, result.get()); }
@Test public void testLargeSequence() throws Exception { long count = 500; AtomicLong result = new AtomicLong(0); SequenceTask task = createSequence(); for (long i = 1; i <= count; i++) { task.add(addr(result, i)); } task.schedule(); task.waitFor(); assertEquals(count * (count + 1) / 2, result.get()); }