Field field = SocketServerInvoker.class.getDeclaredField("threadpool");
field.setAccessible(true);
List threadpool = (List) field.get(connector.getServerInvoker());
field = SocketServerInvoker.class.getDeclaredField("clientpool");
field.setAccessible(true);
LRUPool clientpool = (LRUPool) field.get(connector.getServerInvoker());
// Create client.
InvokerLocator clientLocator = new InvokerLocator(locatorURI);
HashMap clientConfig = new HashMap();
clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
addExtraClientConfig(clientConfig);
Client client = new Client(clientLocator, clientConfig);
client.connect();
log.info("client is connected");
Thread.sleep(2000);
// Create 5 connections.
for (int i = 0; i < 5; i++)
{
client.invokeOneway("4", null, true);
}
Thread.sleep(2000); // time = 4000
assertEquals(0, threadpool.size());
assertEquals(5, clientpool.size());
// ServerThreads should be back in threadpool at 6000.
client.disconnect();
Thread.sleep(4000); // time = 8000
assertEquals(5, threadpool.size());
assertEquals(0, clientpool.size());
// Wait until IdleTimerTask runs at 10000.
Thread.sleep(4000); // time = 12000
for (int i = 0; i < 5; i++)