public void TestRpc() { // create test server int port = 6557; var serverBundle = TestUtil.CreateTestServer <ServerEventHandler>(port, true); var server = serverBundle.Item1; var handler = serverBundle.Item2; handler.Response = "TEST MESSAGE RECIEVED"; // create client var client = TestUtil.CreateClient <ClientEventHandler>(port, true).Item1; Assert.IsTrue(client.Connected); // test rpc var msg = "TEST MESSAGE"; var rspRpc = client.Rpc(TestUtil.ToByte(msg), 2000); Assert.IsNotNull(rspRpc); var rspMsg = TestUtil.ToString(rspRpc); Assert.AreEqual(msg + " RECIEVED", rspMsg); // server stop server.Stop(); TestUtil.Wait(); Assert.IsFalse(client.Connected); }
public void TestServerResponse() { // create server int port = 5560; var serverBundle = TestUtil.CreateTestServer <ServerEventHandler>(port, true); var server = serverBundle.Item1; var serverEventHandler = serverBundle.Item2; Assert.IsTrue(server.Started); // create client var clinetBundle = TestUtil.CreateClient <ClientEventHandler>(port, true); var client = clinetBundle.Item1; var eventHandler = clinetBundle.Item2; TestUtil.Wait(); Assert.IsTrue(client.Connected); // client sends message string msg = "TEST MESSAGE"; string rsp = "RESPONSE TEST MESSAGE"; serverEventHandler.Response = rsp; bool sent = client.Send(TestUtil.ToByte(msg)); Assert.IsTrue(sent); // server should return static responss TestUtil.Wait(1000); Assert.IsNotNull(eventHandler.Recieved); Assert.AreEqual(rsp, eventHandler.Recieved); // stop server.Stop(); }
public void TestSendToAllClients() { /// create server int port = 5558; var bundle = TestUtil.CreateTestServer <ServerEventHandler>(port, true); var server = bundle.Item1; var eventHandler = bundle.Item2; var dataProcessor = TestUtil.CreateSimpleDataProcessor(); // connect clients int count = 2; var clients = Enumerable.Range(0, count).Select(i => TestUtil.CreateTestNativeClient(port)).ToList(); TestUtil.Wait(); Assert.AreEqual(count, server.Clients.Count()); // send message from server to all clients string message = "TEST MESSAGE"; var sent = server.SendToAll(TestUtil.ToByte(message)); Assert.AreEqual(count, sent); // read message from clients var recieved = clients.Select(c => { var buffer = new byte[200]; var cnt = c.GetStream().Read(buffer, 0, 200); Assert.AreNotEqual(0, cnt); var rcnt = dataProcessor.ProcessReceivedRawData(buffer, cnt); Assert.AreEqual(1, rcnt.Count()); return(TestUtil.ToString(rcnt.First())); }); // messages must be the same recieved.ToList().ForEach(msg => Assert.AreEqual(message, msg)); }
public void TestServerIsAgnosticToEventHandlerErrors() { // start server var watch = Stopwatch.StartNew(); int port = 5559; var bundle = TestUtil.CreateTestServer <BadServerEventHandler>(port, true); var server = bundle.Item1; var eventHandler = bundle.Item2; var dataProcessor = TestUtil.CreateSimpleDataProcessor(); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 2000); Assert.AreEqual(1, eventHandler.Counter); // client connect watch = Stopwatch.StartNew(); var client = TestUtil.CreateTestNativeClient(port); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 2000); Assert.AreEqual(2, eventHandler.Counter); // recieve data from client watch = Stopwatch.StartNew(); var clientDataProcessor = TestUtil.CreateSimpleDataProcessor(); client.GetStream().Write(clientDataProcessor.FilterSendData(TestUtil.ToByte("TEST MESSAGE"))); TestUtil.Wait(); client.GetStream().Write(clientDataProcessor.FilterSendData(TestUtil.ToByte("TEST MESSAGE"))); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 3000); Assert.AreEqual(4, eventHandler.Counter); // send data to client watch = Stopwatch.StartNew(); server.SendToClient(eventHandler.ConnectedClients.First().Id, TestUtil.ToByte("TEST MESSAGE")); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 2000); Assert.AreEqual(5, eventHandler.Counter); // client disconnect watch = Stopwatch.StartNew(); client.GetStream().Close(); client.Close(); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 2000); Assert.AreEqual(6, eventHandler.Counter); // stop server watch = Stopwatch.StartNew(); server.Stop(); TestUtil.Wait(); Assert.IsTrue(watch.ElapsedMilliseconds < 2000); // Assert.AreEqual(7, eventHandler.Counter); // no clients remain Assert.AreEqual(0, server.Clients.Count()); }
public void TestClientEventsAreFired() { // create test server int port = 6556; var server = TestUtil.CreateTestServer <ServerEventHandler>(port, true).Item1; // create client var eventHandler = new ClientEventHandler(); var bundle = TestUtil.CreateClient <ClientEventHandler>(port, true, false); var client = bundle.Item1; var handler = bundle.Item2; TestUtil.Wait(); Assert.IsTrue(client.Connected); Assert.AreEqual(1, handler.Count); // server stop (client will disconnect) server.Stop(); TestUtil.Wait(); Assert.AreEqual(2, handler.Count); // client connect again Assert.IsTrue(server.Start()); client.Connect(); TestUtil.Wait(); Assert.AreEqual(3, handler.Count); // test recieve message string msg = "TEST MESSAGE"; Assert.AreEqual(1, server.SendToAll(TestUtil.ToByte(msg))); TestUtil.Wait(); Assert.AreEqual(4, handler.Count); Assert.AreEqual(msg, handler.Recieved); // test send message client.Send(TestUtil.ToByte(msg)); TestUtil.Wait(); Assert.AreEqual(5, handler.Count); Assert.AreEqual(msg, handler.Sent); // server stop server.Stop(); TestUtil.Wait(); Assert.IsFalse(client.Connected); Assert.AreEqual(6, handler.Count); // failed connect client.Connect(); TestUtil.Wait(); Assert.AreEqual(7, handler.Count); }
public void TestServerEventsAreFired() { /// create server int port = 5556; var bundle = TestUtil.CreateTestServer <ServerEventHandler>(port, true); var server = bundle.Item1; var eventHandler = bundle.Item2; var dataProcessor = bundle.Item3; TestUtil.Wait(); // chech start event Assert.IsTrue(eventHandler.ServerStarted); // client connect TcpClient client = new TcpClient(); client.Connect("127.0.0.1", port); TestUtil.Wait(); Assert.IsTrue(eventHandler.ConnectedClients.Any(c => c.Time > DateTime.Now.AddMinutes(-1))); // recieved message string testMessage = "THIS IS TEST MESSAGE"; client.GetStream().Write(dataProcessor.FilterSendData(TestUtil.ToByte(testMessage))); TestUtil.Wait(); Assert.AreEqual(testMessage, eventHandler.RecievedMessage); // check that client disconnected event was triggered client.Close(); TestUtil.Wait(); Assert.IsTrue(eventHandler.DisonnectedClients.Any(c => c.Time > DateTime.Now.AddMinutes(-1))); // server start failure (same port start) var bundle2 = TestUtil.CreateTestServer <ServerEventHandler>(port, true); TestUtil.Wait(); Assert.IsTrue(bundle2.Item2.ServerStartFailed); // stop server server.Stop(); TestUtil.Wait(); Assert.IsTrue(eventHandler.ServerStopped); }
public byte[] HandleReceivedData(DataContainer data) { RecievedMessage = Encoding.ASCII.GetString(data.Payload); return(Response != null?TestUtil.ToByte(Response) : null); }