@Override public void stop() { scheduledComponent.stop(); }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
@Override public void stop() { scheduledComponent.stop(); }
@Override public void stop() { scheduledComponent.stop(); }
@Override public void stop() { scheduledComponent.stop(); }
@Override public void stop() { scheduledComponent.stop(); }
@Override public void stop() { scheduledComponent.stop(); }
@Override public void stop() { scheduledComponent.stop(); }
@Override public synchronized void stop() { if (!isStarted()) { return; } super.stop(); }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
private void restartIfNeeded() { if (isStarted()) { stop(); start(); } }
@Override public synchronized void stop() throws Exception { if (!started) { return; } started = false; if (scheduledComponent != null) { this.scheduledComponent.stop(); this.scheduledComponent = null; } lock(); try { for (PagingStore store : stores.values()) { store.stop(); } pagingStoreFactory.stop(); } finally { unlock(); } }
@Test public void testAccumulationOwnPool() throws Exception { final AtomicInteger count = new AtomicInteger(0); final ActiveMQScheduledComponent local = new ActiveMQScheduledComponent(100, TimeUnit.MILLISECONDS, false) { @Override public void run() { if (count.get() == 0) { try { Thread.sleep(500); } catch (Exception e) { } } count.incrementAndGet(); } }; local.start(); Thread.sleep(1000); local.stop(); Assert.assertTrue("just because one took a lot of time, it doesn't mean we can accumulate many, we got " + count + " executions", count.get() <= 5 && count.get() > 0); }
@Test public void testUsingOwnExecutors() throws Exception { final CountDownLatch latch = new CountDownLatch(1); final ActiveMQScheduledComponent local = new ActiveMQScheduledComponent(10, TimeUnit.MILLISECONDS, false) { @Override public void run() { latch.countDown(); } }; local.start(); local.start(); // should be ok to call start again try { Assert.assertTrue(latch.await(10, TimeUnit.SECONDS)); // re-scheduling the executor at a big interval.. // just to make sure it won't hung local.setTimeUnit(TimeUnit.HOURS); local.setPeriod(1); } finally { local.stop(); local.stop(); // should be ok to call stop again } }
@Test public void testUsingCustomInitialDelay() throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1); final long initialDelayMillis = 100; final long checkPeriodMillis = 100 * initialDelayMillis; final ActiveMQScheduledComponent local = new ActiveMQScheduledComponent(scheduledExecutorService, executorService, initialDelayMillis, checkPeriodMillis, TimeUnit.MILLISECONDS, false) { @Override public void run() { latch.countDown(); } }; final long start = System.nanoTime(); local.start(); try { final boolean triggeredBeforePeriod = latch.await(local.getPeriod(), local.getTimeUnit()); final long timeToFirstTrigger = TimeUnit.NANOSECONDS.convert(System.nanoTime() - start, local.getTimeUnit()); Assert.assertTrue("Takes too long to start", triggeredBeforePeriod); Assert.assertTrue("Started too early", timeToFirstTrigger >= local.getInitialDelay()); } finally { local.stop(); } } }
@Test public void testVerifyInitialDelayChanged() { final long initialDelay = 10; final long period = 100; final ActiveMQScheduledComponent local = new ActiveMQScheduledComponent(scheduledExecutorService, executorService, initialDelay, period, TimeUnit.MILLISECONDS, false) { @Override public void run() { } }; local.start(); final long newInitialDelay = 1000; //the parameters are valid? assert initialDelay != newInitialDelay && newInitialDelay != period; local.setInitialDelay(newInitialDelay); local.stop(); Assert.assertEquals("the initial dalay can't change", newInitialDelay, local.getInitialDelay()); }