@Test public void testPathology() throws InterruptedException { ScheduledExecutorService ses = Executors.newScheduledThreadPool(1); JavaUtilActionSequenceExecutor x = new JavaUtilActionSequenceExecutor(ses); assertSame(ses, x.getService()); assertNull(found); Monitor m = new Monitor() { @Override public void failed(ActionSequence seq, Runnable action, Throwable e, long elpasedMillis) { found = e; } @Override public void completed(ActionSequence seq, Runnable action, long elapsedMillis) { completedCount++; } @Override public void slept(ActionSequence seq, long intendedAmount, long actualAmount) { sleptCount++; } }; x.setMonitor(m); assertSame(m, x.getMonitor()); PathologicalTestActionSequenceFactory pfac = new PathologicalTestActionSequenceFactory(); pfac.setDelayTime(10); pfac.setDelayDeviation(2); x.addActionSequence(pfac.create()); Thread.sleep(20); assertNotNull(found); x.shutdown(); Thread.sleep(20); assertTrue(x.isShutdown()); ActionSequenceExecutor stupid = new ActionSequenceExecutor() { @Override protected void schedule(Runnable r, long delay, TimeUnit unit) {} }; // unimplemented stupid.shutdown(); assertFalse(stupid.isShutdown()); }
@Test public void testTwentySlower() throws Exception { factory.setDelayTime(50); factory.setDelayDeviation(5); for (int i = 0; i < 20; i++) { TestActionSequence seq = factory.create(); exec.addActionSequence(seq); Thread.sleep(3); } Thread.sleep(8000); for (TestActionSequence t : factory.getSequences()) { assertEquals(10, t.getTimesRun().size()); assertAllInRange( "requestedDelays", t.getRequestedDelays(), factory.getDelayTime(), factory.getDelayDeviation()); assertAllInRange("diffs", t.getDelayDiffs().subList(1, t.getDelayDiffs().size() - 2), 0, 5); } }
@Test public void testOne() throws Exception { TestActionSequence seq = factory.create(); exec.addActionSequence(seq); Thread.sleep(350); ArrayList<Long> rd = new ArrayList<Long>(seq.getRequestedDelays()); assertAllInRange("", rd, factory.getDelayTime(), factory.getDelayDeviation()); ArrayList<Long> md = new ArrayList<Long>(seq.getMeasuredDelays()); assertAllInRange("", rd, factory.getDelayTime(), 5); System.out.println(rd); System.out.println(md); Collections.sort(md); System.out.println(md); assertEquals(factory.getDelayTime(), md.get(0), 4); assertEquals(factory.getDelayTime(), md.get(rd.size() - 1), 4); assertEquals(factory.getDelayTime(), rd.get(0), 5); assertEquals(factory.getDelayTime(), rd.get(rd.size() - 1), 5); assertEquals(10, seq.getTimesRun().size()); assertEquals(1, factory.getSequences().size()); assertSame(seq, factory.getSequences().get(0)); }