public void UDPClient_ClientDisconnectsServer_ServerOnClientDisconnectCalled() { //Arrange Client disconnectedClient = null; Client connectedServer = null; udpServer = new UDPServerChannel("127.0.0.1", 0, 32); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer); serverObjectTransport.OnClientDisconnect(c => disconnectedClient = c); udpClient = new UDPClientChannel("127.0.0.1", udpServer.LocalPort); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient); clientObjectTransport.OnClientConnect(c => connectedServer = c); udpClient2 = new UDPClientChannel("127.0.0.1", udpServer.LocalPort); ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(udpClient2); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2); //Act //disconnect the server from the client clientObjectTransport.DisconnectClient(); Utilities.WaitFor(ref disconnectedClient); //Assert //Ensure that the client record was disconnect from the server Assert.AreEqual(1, serverObjectTransport.GetConnectedClients().Count()); //Esnure that the client who disconnected from the server was the one that we called disconect Assert.AreEqual(disconnectedClient.Port, udpClient.LocalPort); }
public void UDPServerWith2Clients_Disconnect2Client_AllClientsDisconnected() { //Arrange List <Client> disconnectedClients = new List <Client>(); udpServer = new UDPServerChannel("127.0.0.1", 0, 32); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer); serverObjectTransport.OnClientDisconnect(c => disconnectedClients.Add(c)); udpClient = new UDPClientChannel("127.0.0.1", udpServer.Port); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient); udpClient2 = new UDPClientChannel("127.0.0.1", udpServer.Port); ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(udpClient2); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2); //Act var allClients = serverObjectTransport.GetConnectedClients().ToArray(); serverObjectTransport.DisconnectClient(allClients); Utilities.WaitFor(() => disconnectedClients.Count == 2); //Assert Assert.AreEqual(0, serverObjectTransport.GetConnectedClients().Count()); Assert.AreEqual(2, disconnectedClients.Count()); }
public void UDPClient_ServerDisconnects_ClientDisconnectCallbackCalled() { //Arrange Client client = null; Client clientDisconnect = null; udpServer = new UDPServerChannel("127.0.0.1", 0, 32); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer); udpClient = new UDPClientChannel("127.0.0.1", udpServer.LocalPort); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient); clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c); client = clientObjectTransport.GetConnectedClients().First(); Utilities.WaitFor(ref client); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1); //Act serverObjectTransport.Stop(); Utilities.WaitFor(ref clientDisconnect); //Assert Assert.AreEqual(client.IPAddress, "127.0.0.1"); Assert.AreEqual(clientDisconnect.IPAddress, "127.0.0.1"); Assert.AreEqual(clientDisconnect, client); Utilities.WaitFor(() => clientObjectTransport.GetConnectedClients().Count() == 0); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 0); }
public void UDPServerWith2Clients_Disconnect1Client_1ClientDisconnected() { //Arrange Client disconnectedClient = null; udpServer = new UDPServerChannel("127.0.0.1", 0, 32); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer); serverObjectTransport.OnClientDisconnect(c => disconnectedClient = c); udpClient = new UDPClientChannel("127.0.0.1", udpServer.Port); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient); udpClient2 = new UDPClientChannel("127.0.0.1", udpServer.Port); ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(udpClient2); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2); //Act var FirstClient = serverObjectTransport.GetConnectedClients().First(); serverObjectTransport.DisconnectClient(FirstClient); Utilities.WaitFor(ref disconnectedClient); //Assert Client LastClient = serverObjectTransport.GetConnectedClients().First(); Assert.AreEqual(1, serverObjectTransport.GetConnectedClients().Count()); Assert.AreNotEqual(FirstClient.Port, LastClient.Port); }
public void TCPServer_ClientDisconnects_CallbackCalled() { //Arrange Client clientConnect = null; Client clientDisconnect = null; tcpserver = new TCPServerChannel("127.0.0.1", 0); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver); serverObjectTransport.OnClientConnect(c => clientConnect = c); serverObjectTransport.OnClientDisconnect(c => clientDisconnect = c); tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient); Utilities.WaitFor(ref clientConnect); Utilities.WaitFor(() => clientObjectTransport.GetConnectedClients().Count() == 1); //Act clientObjectTransport.Stop(); Utilities.WaitFor(ref clientDisconnect); Utilities.Wait(); //Assert Assert.AreEqual(clientConnect.IPAddress, "127.0.0.1"); Assert.AreEqual(clientDisconnect.IPAddress, "127.0.0.1"); Assert.AreEqual(clientDisconnect, clientConnect); Assert.AreEqual(0, clientObjectTransport.GetConnectedClients().Count()); Assert.AreEqual(0, serverObjectTransport.GetConnectedClients().Count()); }
public void TCPClient_SendUnreliably_ExceptionThrown() { //Arrange Client client = null; Client clientDisconnect = null; ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(Server); serverObjectTransport.Start("127.0.0.1", 0); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(Client1); clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c); clientObjectTransport.Start("127.0.0.1", Server.LocalPort); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1); client = clientObjectTransport.GetConnectedClients().First(); Utilities.WaitFor(ref client); var message = new MockObjectMessage(); //Act clientObjectTransport.Send(message) .Unreliable() .Execute(); }
static void Main(string[] args) { Console.WriteLine("Welcome to this simple Chat room!"); Console.WriteLine("Would you like to:"); Console.WriteLine("1) Create a TCP server"); Console.WriteLine("2) Connect to TCP server"); Console.WriteLine("3) Creaet a UDP server"); Console.WriteLine("4) Connect to UDP server"); string answer = Console.ReadLine(); ObjectTransport transport = transport = CheckCreateTransport(answer); if (transport == null) { return; } //Write to console when a client connects transport.OnClientConnect(c => Console.WriteLine("{0} - Client connected", c.IPAddress)); //Write to console when a client disconnects transport.OnClientDisconnect(c => Console.WriteLine("{0} - Client disconnected", c.IPAddress)); string message; while (true) { message = Console.ReadLine(); if (message == "exit") { break; } transport.Send(new Message() { Body = message }) .ToAll() .Execute(); } }
public void TCPNetwork_SendAndReplyMessage_ResponseIsCalled() { //Arrange Client client = null; Client clientDisconnect = null; server = new TCPServerChannel("127.0.0.1", 0); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(server); tcpclient = new TCPClientChannel("127.0.0.1", server.Port); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient); clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c); client = clientObjectTransport.GetConnectedClients().First(); Utilities.WaitFor(ref client); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1); //Act serverObjectTransport.Receive <MockObjectMessage>() .Reply((o) => { return(o); }) .Execute(); var mockObject = new MockObjectMessage() { Property1_string = "Mock Object" }; MockObjectMessage responseObject = null; clientObjectTransport.Send(mockObject) .Response <MockObjectMessage>((r) => { responseObject = r; }) .Execute(); Utilities.WaitFor(ref responseObject); //Assert Assert.AreEqual(responseObject.Property1_string, "Mock Object"); }