private void runTasks(GrizzlyExecutorService r, int tasks) throws Exception{ while(tasks-->0){ r.execute(new Runnable() { @Override public void run() { try { Thread.sleep(50); } catch (Exception ignore) { } } }); } }
private void doTest(GrizzlyExecutorService r, int tasks) throws Exception{ final CountDownLatch cl = new CountDownLatch(tasks); while(tasks-->0){ r.execute(new Runnable() { @Override public void run() { cl.countDown(); } }); } assertTrue("latch timed out",cl.await(30, TimeUnit.SECONDS)); }
public void testTransactionTimeout() throws Exception { final ExecutorService threadPool = Executors.newSingleThreadExecutor(); try { final DelayedExecutor delayedExecutor = new DelayedExecutor(threadPool); final int tasksNum = 10; final long transactionTimeoutMillis = 5000; final CountDownLatch cdl = new CountDownLatch(tasksNum); final ThreadPoolConfig tpc = ThreadPoolConfig.defaultConfig().copy() .setTransactionTimeout(delayedExecutor, transactionTimeoutMillis, TimeUnit.MILLISECONDS) .setCorePoolSize(tasksNum / 2).setMaxPoolSize(tasksNum / 2); final GrizzlyExecutorService ges = GrizzlyExecutorService.createInstance(tpc); for (int i = 0; i < tasksNum; i++) { ges.execute(new Runnable() { @Override public void run() { try { Thread.sleep(transactionTimeoutMillis); } catch (InterruptedException e) { cdl.countDown(); } } }); } cdl.await(transactionTimeoutMillis * 3 / 2, TimeUnit.MILLISECONDS); } finally { threadPool.shutdownNow(); } }