use of games.strategy.engine.message.RemoteName in project triplea by triplea-game.
the class RemoteMessengerTest method testException.
@Test
public void testException() throws Exception {
final TestRemote testRemote = new TestRemote();
final RemoteName test = new RemoteName(ITestRemote.class, "test");
remoteMessenger.registerRemote(testRemote, test);
final ITestRemote remote = (ITestRemote) remoteMessenger.getRemote(test);
try {
remote.throwException();
} catch (final Exception e) {
// this is what we want
if (e.getMessage().equals(TestRemote.EXCEPTION_STRING)) {
return;
}
throw e;
}
fail("No exception thrown");
}
use of games.strategy.engine.message.RemoteName in project triplea by triplea-game.
the class RemoteMessengerTest method testNoRemote.
@Test
public void testNoRemote() {
final RemoteName test = new RemoteName(ITestRemote.class, "test");
try {
remoteMessenger.getRemote(test);
final ITestRemote remote = (ITestRemote) remoteMessenger.getRemote(test);
remote.testVoid();
fail("No exception thrown");
} catch (final RemoteNotFoundException rme) {
// this is what we expect
}
}
use of games.strategy.engine.message.RemoteName in project triplea by triplea-game.
the class RemoteMessengerTest method testRemoteCall2.
@Test
public void testRemoteCall2() throws Exception {
final RemoteName test = new RemoteName(ITestRemote.class, "test");
ServerMessenger server = null;
ClientMessenger client = null;
try {
server = new ServerMessenger("server", 0);
server.setAcceptNewConnections(true);
final int serverPort = server.getLocalNode().getSocketAddress().getPort();
final String mac = MacFinder.getHashedMacAddress();
client = new ClientMessenger("localhost", serverPort, "client", mac);
final RemoteMessenger serverRemoteMessenger = new RemoteMessenger(new UnifiedMessenger(server));
final TestRemote testRemote = new TestRemote();
serverRemoteMessenger.registerRemote(testRemote, test);
final RemoteMessenger clientRemoteMessenger = new RemoteMessenger(new UnifiedMessenger(client));
// call it on the client
// should be no need to wait since the constructor should not
// reutrn until the initial state of the messenger is good
final int incrementedValue = ((ITestRemote) clientRemoteMessenger.getRemote(test)).increment(1);
assertEquals(2, incrementedValue);
assertEquals(testRemote.getLastSenderNode(), client.getLocalNode());
} finally {
shutdownServerAndClient(server, client);
}
}
use of games.strategy.engine.message.RemoteName in project triplea by triplea-game.
the class RemoteMessengerTest method testShutDownClient.
@Test
public void testShutDownClient() throws Exception {
// when the client shutdown, remotes created
// on the client should not be visible on server
final RemoteName test = new RemoteName(ITestRemote.class, "test");
ServerMessenger server = null;
ClientMessenger client = null;
try {
server = new ServerMessenger("server", 0);
server.setAcceptNewConnections(true);
final int serverPort = server.getLocalNode().getSocketAddress().getPort();
final String mac = MacFinder.getHashedMacAddress();
client = new ClientMessenger("localhost", serverPort, "client", mac);
final UnifiedMessenger serverUnifiedMessenger = new UnifiedMessenger(server);
final RemoteMessenger clientRemoteMessenger = new RemoteMessenger(new UnifiedMessenger(client));
clientRemoteMessenger.registerRemote(new TestRemote(), test);
serverUnifiedMessenger.getHub().waitForNodesToImplement(test.getName());
assertTrue(serverUnifiedMessenger.getHub().hasImplementors(test.getName()));
client.shutDown();
Interruptibles.sleep(200);
assertTrue(!serverUnifiedMessenger.getHub().hasImplementors(test.getName()));
} finally {
shutdownServerAndClient(server, client);
}
}
use of games.strategy.engine.message.RemoteName in project triplea by triplea-game.
the class RemoteMessengerTest method testRemoteCall.
@Test
public void testRemoteCall() throws Exception {
final RemoteName test = new RemoteName(ITestRemote.class, "test");
ServerMessenger server = null;
ClientMessenger client = null;
try {
server = new ServerMessenger("server", 0);
server.setAcceptNewConnections(true);
final int serverPort = server.getLocalNode().getSocketAddress().getPort();
final String mac = MacFinder.getHashedMacAddress();
client = new ClientMessenger("localhost", serverPort, "client", mac);
final UnifiedMessenger serverUnifiedMessenger = new UnifiedMessenger(server);
unifiedMessengerHub = serverUnifiedMessenger.getHub();
final RemoteMessenger serverRemoteMessenger = new RemoteMessenger(serverUnifiedMessenger);
final RemoteMessenger clientRemoteMessenger = new RemoteMessenger(new UnifiedMessenger(client));
// register it on the server
final TestRemote testRemote = new TestRemote();
serverRemoteMessenger.registerRemote(testRemote, test);
// since the registration must go over a socket
// and through a couple threads, wait for the
// client to get it
int waitCount = 0;
while (!unifiedMessengerHub.hasImplementors(test.getName()) && waitCount < 20) {
waitCount++;
Interruptibles.sleep(50);
}
// call it on the client
final int incrementedValue = ((ITestRemote) clientRemoteMessenger.getRemote(test)).increment(1);
assertEquals(2, incrementedValue);
assertEquals(testRemote.getLastSenderNode(), client.getLocalNode());
} finally {
shutdownServerAndClient(server, client);
}
}
Aggregations