import EnvironmentPluginAPI.Exceptions.TechnicalException; import EnvironmentPluginAPI.CustomNetworkMessages.NetworkMessage; import NetworkAdapter.Implementation.ClientNetworkAdapterComponent; import NetworkAdapter.Implementation.ServerNetworkAdapterComponent; import NetworkAdapter.Interface.Exceptions.ConnectionLostException; import NetworkAdapter.Interface.Exceptions.HostUnreachableException; import NetworkAdapter.Interface.Exceptions.NotConnectedException; import NetworkAdapter.Interface.INetworkMessageReceivedEventHandler; import NetworkAdapter.Interface.MessageChannel; import NetworkAdapter.Interface.NetworkEventType; import NetworkAdapter.Messages.ClientAckMessage; import NetworkAdapter.Messages.NACKMessage; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * Tests the basic functionality of the network adapter component. * <p/> * TODO: remove factory game specific types, make all tests executable */ public class TestNetworkAdapter implements INetworkMessageReceivedEventHandler { static ServerNetworkAdapterComponent server; static ClientNetworkAdapterComponent client; // private TGameState actual; // private TGameState transmitted; // before each test @Before public void setUp() { server = new ServerNetworkAdapterComponent(20000); } // after each test @After public void tearDown() { server.stopHosting(); } @Test public void TestServerHosting() throws TechnicalException, ConnectionLostException, HostUnreachableException, NotConnectedException, InterruptedException { server.subscribeForNetworkMessageReceivedEvent(new INetworkMessageReceivedEventHandler() { @Override public void onMessageReceived(NetworkMessage message) { System.out.println("server: " + message); } @Override public void onNetworkEvent(NetworkEventType type, int clientId) { } }, NetworkMessage.class); server.startHosting(); client = new ClientNetworkAdapterComponent(); int nrOfMessages = 500000; TestNetworkMessageHandler clientHandler = new TestNetworkMessageHandler("client1", nrOfMessages); client.subscribeForNetworkMessageReceivedEvent(clientHandler, NetworkMessage.class); client.connectToServer("localhost", 20000, "TestServerHosting"); Assert.assertTrue("Client should have been connected, but it wasn't.", server.getConnectedClients().size() > 0); for (int i = 0; i < nrOfMessages; i++) { server.sendNetworkMessage(new NACKMessage(0, "test"), MessageChannel.DATA); } clientHandler.start(); clientHandler.join(); Assert.assertEquals(nrOfMessages, clientHandler.getMessageCount()); server.stopHosting(); } @Override public void onMessageReceived(NetworkMessage message) { //Assert.assertTrue(actual.equals(transmitted)); synchronized (this) { notify(); } } @Override public void onNetworkEvent(NetworkEventType networkEventType, int clientID) { //To change body of implemented methods use File | Settings | File Templates. } public void onMessageReceived(ClientAckMessage message) { Assert.assertTrue("Falscher MessageType übertragen.", message instanceof ClientAckMessage); } }