javacommons/comms/tsrc/javaapi/javasrc/com/nokia/mj/test/comms/TestCommsServerEndpoint.java
--- a/javacommons/comms/tsrc/javaapi/javasrc/com/nokia/mj/test/comms/TestCommsServerEndpoint.java Fri Oct 15 12:29:39 2010 +0300
+++ b/javacommons/comms/tsrc/javaapi/javasrc/com/nokia/mj/test/comms/TestCommsServerEndpoint.java Fri Oct 29 11:49:32 2010 +0300
@@ -119,6 +119,15 @@
}
}));
+ aSuite.addTest(new TestCommsServerEndpoint("testServerAndTwoClients", new TestMethod()
+ {
+ public void run(TestCase tc)
+ {
+ ((TestCommsServerEndpoint) tc).testServerAndTwoClients();
+ }
+ }));
+
+
return aSuite;
}
@@ -724,6 +733,89 @@
}
}
+ public void testServerAndTwoClients()
+ {
+ System.out.println("TestCommsServerEndpoint.testServerAndTwoClients()");
+
+ class RouterListener implements CommsListener
+ {
+ CommsEndpointBase iComms;
+ CommsMessage iFirstMessage;
+
+ public RouterListener(CommsEndpointBase aComms)
+ {
+ iComms = aComms;
+ }
+
+ public void processMessage(CommsMessage aMessage)
+ {
+ if (iFirstMessage == null)
+ {
+ // delay reply until second message is received
+ iFirstMessage = aMessage;
+ }
+ else
+ {
+ // reply to first client
+ CommsMessage reply = new CommsMessage();
+ reply.replyTo(iFirstMessage);
+ iComms.send(reply);
+
+ // reply to second client
+ reply.replyTo(aMessage);
+ iComms.send(reply);
+ }
+ }
+ }
+
+ class SendReceiver extends Thread
+ {
+ public void run()
+ {
+ try
+ {
+ CommsEndpoint client = new CommsEndpoint();
+ client.connect(SERVER_ADDRESS);
+ CommsMessage reply = client.sendReceive(new CommsMessage(), CommsEndpoint.WAIT_FOR_EVER);
+ client.disconnect();
+ client.destroy();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ fail("SendReceiver.run");
+ }
+ }
+ }
+
+ CommsServerEndpoint server = null;
+ try
+ {
+ server = new CommsServerEndpoint();
+ RouterListener listener = new RouterListener(server);
+ server.registerDefaultListener(listener);
+ server.start(SERVER_ADDRESS);
+
+ SendReceiver client1 = new SendReceiver();
+ SendReceiver client2 = new SendReceiver();
+
+ client1.start();
+ client2.start();
+ client1.join();
+ client2.join();
+
+ server.stop();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ fail("testServerAndTwoClients failed");
+ }
+ finally
+ {
+ server.destroy();
+ }
+ }
}