package org.jboss.netty.channel.socket.nio; import static org.junit.Assert.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.jboss.netty.util.ThreadNameDeterminer; import org.jboss.netty.util.internal.ExecutorUtil; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class NioServerBossPoolTest { private static ExecutorService executor; @BeforeClass public static void init() { executor = Executors.newCachedThreadPool(); } @AfterClass public static void destroy() { ExecutorUtil.terminate(executor); } private static final String MY_CUSTOM_THREAD_NAME = "FOO"; private final ThreadNameDeterminer determiner = new ThreadNameDeterminer() { public String determineThreadName(String currentThreadName, String proposedThreadName) throws Exception { return MY_CUSTOM_THREAD_NAME; } }; @Test public void testNioServerBossPoolExecutorIntThreadNameDeterminer() throws Exception { NioServerBossPool bossPool = null; try { bossPool = new NioServerBossPool(executor, 1, determiner); NioServerBoss nextBoss = bossPool.nextBoss(); assertNotNull(nextBoss); // Wait for ThreadRenamingRunnable to be run by the executor Thread.sleep(1000); // Ok, now there should be thread assertNotNull(nextBoss.thread); assertEquals(MY_CUSTOM_THREAD_NAME, nextBoss.thread.getName()); } finally { if (bossPool != null) { bossPool.shutdown(); } } } }