示例#1
0
        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);
        }
示例#2
0
        public void UDPServer_ClientDisconnects_CallbackCalled()
        {
            //Arrange
            Client clientConnect    = null;
            Client clientDisconnect = null;

            udpServer = new UDPServerChannel("127.0.0.1", 0, 32);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer);

            serverObjectTransport.OnClientConnect(c => clientConnect       = c);
            serverObjectTransport.OnClientDisconnect(c => clientDisconnect = c);

            udpClient = new UDPClientChannel("127.0.0.1", udpServer.Port);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient);

            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 TCPServer_ClientDisconnects_CallbackCalled()
        {
            //Arrange
            Client clientConnect    = null;
            Client clientDisconnect = null;

            tcpserver.Start("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientConnect(c => clientConnect       = c);
            serverObjectTransport.OnClientDisconnect(c => clientDisconnect = c);

            tcpclient.Start("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());
        }
示例#4
0
        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 OnClientConnect_ClientConnectsToObject_ClientInjectedIntoAction()
        {
            //Arrange
            var sentJson       = string.Empty;
            var client         = new Client("10.0.0.1", 123);
            var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel();

            Client connectedClient = null;

            //Act
            ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel);

            transport.OnClientConnect(c =>
            {
                connectedClient = c;
            });

            networkChannel.SimulateClientConnect(client);
            //Assert
            Assert.AreEqual(client, connectedClient);
        }
示例#6
0
        public void UDPServer_SendObject_CorrectObjectSent()
        {
            //Arrange
            MockObjectMessage receivedObject = null;

            udpServer = new UDPServerChannel("127.0.0.1", 0, 32);

            Client client = null;

            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer);

            serverObjectTransport.OnClientConnect(c => client = c);

            udpClient = new UDPClientChannel("127.0.0.1", udpServer.Port);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient);

            Utilities.WaitFor(ref client);

            //Act

            clientObjectTransport.Receive <MockObjectMessage>(o =>
                                                              receivedObject = o
                                                              ).Execute();

            serverObjectTransport.Send(new MockObjectMessage()
            {
                Property1_string  = "hello world!",
                Property2_int     = 123,
                Property3_decimal = 12.3M
            })
            .To(client)
            .Execute();

            Utilities.WaitFor(ref receivedObject);
            //Assert
            Assert.AreEqual("hello world!", receivedObject.Property1_string);
            Assert.AreEqual(123, receivedObject.Property2_int);
            Assert.AreEqual(12.3M, receivedObject.Property3_decimal);
        }