@Test
public void testEagerThreadPool() throws Exception {

    String name = "eager-tf";
    int queues = 5;
    int cores = 5;
    int threads = 10;
    // alive 1 second
    long alive = 1000;
    //init queue and executor
    TaskQueue<Runnable> taskQueue = new TaskQueue<Runnable>(queues);
    final EagerThreadPoolExecutor executor = new EagerThreadPoolExecutor(cores,
            threads,
            alive,
            TimeUnit.MILLISECONDS,
            taskQueue,
            new NamedThreadFactory(name, true),
            new AbortPolicyWithReport(name, URL));
    taskQueue.setExecutor(executor);
    for (int i = 0; i < 15; i++) {
        Thread.sleep(50);
        executor.execute(new Runnable() {
            @Override
            public void run() {
                System.out.println("thread number in current pool：" + executor.getPoolSize() + ",  task number in task queue：" + executor.getQueue()
                        .size() + " executor size: " + executor.getPoolSize());
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
    }
    Thread.sleep(5000);
    // cores theads are all alive.
    Assert.assertTrue("more than cores threads alive!", executor.getPoolSize() == cores);
}