public void ConnectionEstablished_SendDataFromClient_ShoudBeReceivedOnServer() { var helloWorld = "Hello World!"; var receivedMessagesInSession = new List <string>(); var networkLayer = new CombinedTestNetworkLayer(); var client = new TestPollingClient(networkLayer); var server = new TestPollingServer(networkLayer); server.Start(); var session = ConnectionHelper.WaitForSessionOnServer(server, client); session.FrameReceived += (sender, args) => receivedMessagesInSession.Add(Encoding.UTF8.GetString(args.Frame.Payload)); client.Send(new ClientDataFrame() { Payload = Encoding.UTF8.GetBytes(helloWorld) }); Assert.IsTrue(receivedMessagesInSession.Any()); Assert.AreEqual(helloWorld, receivedMessagesInSession[0]); server.Stop(); client.DisconnectAsync().Wait(); }
public void EstablishedSession_ReceivesNoData_ShouldCloseReceiveTimeoutReason() { var sessionCloseReason = CloseReason.Unknown; var waitEvent = new ManualResetEvent(false); var networkLayer = new CombinedTestNetworkLayer(); var client = new TestPollingClient(networkLayer); var server = new TestPollingServer(networkLayer); var session = ConnectionHelper.WaitForSessionOnServer(server, client); session.SessionClosed += (sender, args) => { sessionCloseReason = args.Reason; waitEvent.Set(); }; ConnectionHelper.WaitForConnectionEstablishmentOnServer(session); Assert.AreEqual(SessionState.Connected, session.SessionState); var disconnectTask = client.DisconnectAsync(); disconnectTask.Wait(5000); Assert.AreEqual(TaskStatus.RanToCompletion, disconnectTask.Status, "The disconnectAsync should be done withing 5s"); Assert.AreEqual(0, client.CurrentPollingPoolSize); var eventHasBeenRaised = waitEvent.WaitOne(5000); Assert.IsTrue(eventHasBeenRaised, "There should be an event within the desired timeout!"); Assert.AreEqual(SessionState.Closed, session.SessionState); Assert.AreEqual(CloseReason.ReceiveTimeout, sessionCloseReason); server.Stop(); }
public void ConnectionEstablished_SendDataFromServer_ShoudBeReceivedOnClient() { var helloWorld = "Hello World!"; var receivedMessagesOnClient = new List <string>(); var atLeastOneFrameReceivedOnClient = new AutoResetEvent(false); var networkLayer = new CombinedTestNetworkLayer(); var client = new TestPollingClient(networkLayer); var server = new TestPollingServer(networkLayer); server.Start(); var session = ConnectionHelper.WaitForSessionOnServer(server, client); session = ConnectionHelper.WaitForConnectionEstablishmentOnServer(session); client.FrameReceived += (sender, args) => { receivedMessagesOnClient.Add(Encoding.UTF8.GetString(args.Frame.Payload)); atLeastOneFrameReceivedOnClient.Set(); }; session.Send(new ServerDataFrame() { Payload = Encoding.UTF8.GetBytes(helloWorld) }); atLeastOneFrameReceivedOnClient.WaitOne(5000); Assert.IsTrue(receivedMessagesOnClient.Any()); Assert.AreEqual(helloWorld, receivedMessagesOnClient[0]); server.Stop(); client.DisconnectAsync().Wait(); }