package com.jsonde.client.network; import com.jsonde.api.Message; import com.jsonde.api.MessageListener; import com.jsonde.profiler.DaemonThreadFactory; import com.jsonde.profiler.network.NetworkServer; import com.jsonde.profiler.network.NetworkServerImpl; import junit.framework.TestCase; public class NetworkClientTest extends TestCase { private static class InvocationCounterMessageListener implements MessageListener { public int invocationCount; public void onMessage(Message message) { invocationCount++; } } private static class TestMessage extends Message { } public void testNetworkClient() throws Exception { final NetworkServer networkServer = new NetworkServerImpl(60000, new DaemonThreadFactory()); new Thread(new Runnable() { public void run() { try { networkServer.start(); } catch (Exception e) { fail(); } } }).start(); InvocationCounterMessageListener serverInvocationCounterMessageListener = new InvocationCounterMessageListener(); networkServer.addMessageListener(serverInvocationCounterMessageListener); NetworkClient networkClient = new NetworkClientImpl("127.0.0.1", 60000); try { networkClient.start(); } catch (NetworkClientException e) { Thread.sleep(300); networkClient.start(); } InvocationCounterMessageListener clientInvocationCounterMessageListener = new InvocationCounterMessageListener(); networkClient.addMessageListener(clientInvocationCounterMessageListener); networkServer.sendMessage(new TestMessage()); networkClient.sendMessage(new TestMessage()); if (0 == clientInvocationCounterMessageListener.invocationCount || 0 == serverInvocationCounterMessageListener.invocationCount) { Thread.sleep(50); if (0 == clientInvocationCounterMessageListener.invocationCount || 0 == serverInvocationCounterMessageListener.invocationCount) { Thread.sleep(200); } } networkServer.stop(); networkClient.stop(); assertEquals(1, clientInvocationCounterMessageListener.invocationCount); assertEquals(1, serverInvocationCounterMessageListener.invocationCount); } }