public void SendAndReceive() { int testerPort = 15559; int comServicePort = 15557; string testerAddress = "127.0.0.1"; string comServiceAddress = "127.0.0.1"; TestUdpSocket testerSocket = new TestUdpSocket(testerPort); UdpTransport testComService = new UdpTransport(comServicePort); testerSocket.Start(); testComService.Start(); AliveRequest request = new AliveRequest(); AliveReply reply = new AliveReply(); int retries = 20; while (!(testerSocket.IsActive() && testComService.IsActive) && retries-- > 0 && wait(50)) { } Assert.IsNotNull(testComService); Assert.IsTrue(testComService.IsActive); Assert.IsTrue(testerSocket.IsActive()); testComService.Send(new Envelope(new IPEndPoint(IPAddress.Parse(testerAddress), testerPort), request)); retries = 20; while (!testerSocket.ReplyWaiting && retries-- > 0 && wait(50)) { } Assert.IsTrue(testerSocket.ReplyWaiting); Assert.IsTrue(testerSocket.Receive(out Envelope requestEnvelope)); Assert.IsNotNull(requestEnvelope); Assert.IsTrue(requestEnvelope.Message.GetType() == request.GetType()); Assert.IsTrue(requestEnvelope.Message.MsgId == request.MsgId); Assert.IsTrue(requestEnvelope.Message.ConvId == request.ConvId); Assert.IsTrue(requestEnvelope.Address.Address.ToString() == comServiceAddress); Assert.IsTrue(requestEnvelope.Address.Port == comServicePort); testerSocket.Send(new Envelope(new IPEndPoint(IPAddress.Parse(comServiceAddress), comServicePort), reply)); retries = 20; while (!testComService.ReplyWaiting && retries-- > 0 && wait(50)) { } Assert.IsTrue(testComService.ReplyWaiting); Assert.IsTrue(testComService.Receive(out Envelope replyEnvelope)); Assert.IsNotNull(replyEnvelope); Assert.IsTrue(replyEnvelope.Message.GetType() == reply.GetType()); Assert.IsTrue(replyEnvelope.Message.MsgId == reply.MsgId); Assert.IsTrue(replyEnvelope.Message.ConvId == reply.ConvId); Assert.IsTrue(replyEnvelope.Address.Address.ToString() == testerAddress); Assert.IsTrue(replyEnvelope.Address.Port == testerPort); testerSocket.Stop(); testComService.Stop(); retries = 20; while ((testerSocket.IsActive() || testComService.IsActive) && retries-- > 0 && wait(50)) { } Assert.IsFalse(testComService.IsActive); Assert.IsFalse(testerSocket.IsActive()); }
public void TcpSendReceiveValid() { IPEndPoint endpoint1 = new IPEndPoint(IPAddress.Loopback, 15655); IPEndPoint endpoint2 = new IPEndPoint(IPAddress.Loopback, 15651); TcpStreamer tcpStreamer1 = new TcpStreamer("Client"); TcpStreamer tcpStreamer2 = new TcpStreamer("Server"); Assert.IsNotNull(tcpStreamer1); Assert.IsFalse(tcpStreamer1.IsActive); Assert.IsFalse(tcpStreamer1.ReplyWaiting); Assert.IsFalse(tcpStreamer1.Connected); Assert.IsNotNull(tcpStreamer2); Assert.IsFalse(tcpStreamer2.IsActive); Assert.IsFalse(tcpStreamer2.ReplyWaiting); Assert.IsFalse(tcpStreamer2.Connected); tcpStreamer2.StartAsServer(endpoint1); Thread.Sleep(1000); tcpStreamer1.StartAsClient(endpoint1); Thread.Sleep(1000); Assert.IsTrue(tcpStreamer2.IsActive); Assert.IsFalse(tcpStreamer2.ReplyWaiting); Assert.IsTrue(tcpStreamer2.Connected); Assert.IsTrue(tcpStreamer1.IsActive); Assert.IsFalse(tcpStreamer1.ReplyWaiting); Assert.IsTrue(tcpStreamer1.Connected); AliveRequest request = new AliveRequest(); LoginRequest request2 = new LoginRequest(); AliveReply reply = new AliveReply(); tcpStreamer1.Send(new Envelope(endpoint1, request)); tcpStreamer1.Send(new Envelope(endpoint1, reply)); tcpStreamer1.Send(new Envelope(endpoint1, request2)); int retries = 20; while (!(tcpStreamer1.ReplyWaiting || tcpStreamer2.ReplyWaiting) && retries-- > 0 && wait(50)) { } Assert.IsTrue(tcpStreamer2.ReplyWaiting); Assert.IsTrue(tcpStreamer2.Receive(out Envelope requestEnvelope)); Assert.IsNotNull(requestEnvelope); Assert.IsTrue(requestEnvelope.Message.GetType() == request.GetType()); Assert.IsTrue(requestEnvelope.Message.MsgId == request.MsgId); Assert.IsTrue(requestEnvelope.Message.ConvId == request.ConvId); requestEnvelope = null; retries = 20; while (!(tcpStreamer1.ReplyWaiting || tcpStreamer2.ReplyWaiting) && retries-- > 0 && wait(50)) { } Assert.IsTrue(tcpStreamer2.Receive(out requestEnvelope)); Assert.IsNotNull(requestEnvelope); Assert.IsTrue(requestEnvelope.Message.GetType() == reply.GetType()); Assert.IsTrue(requestEnvelope.Message.MsgId == reply.MsgId); Assert.IsTrue(requestEnvelope.Message.ConvId == reply.ConvId); requestEnvelope = null; retries = 20; while (!(tcpStreamer1.ReplyWaiting || tcpStreamer2.ReplyWaiting) && retries-- > 0 && wait(50)) { } Assert.IsTrue(tcpStreamer2.Receive(out requestEnvelope)); Assert.IsNotNull(requestEnvelope); Assert.IsTrue(requestEnvelope.Message.GetType() == request2.GetType()); Assert.IsTrue(requestEnvelope.Message.MsgId == request2.MsgId); Assert.IsTrue(requestEnvelope.Message.ConvId == request2.ConvId); tcpStreamer2.Send(new Envelope(endpoint2, reply)); retries = 20; while (!(tcpStreamer1.ReplyWaiting || tcpStreamer2.ReplyWaiting) && retries-- > 0 && wait(50)) { } Assert.IsTrue(tcpStreamer1.ReplyWaiting); Assert.IsTrue(tcpStreamer1.Receive(out Envelope replyEnvelope)); Assert.IsNotNull(replyEnvelope); Assert.IsTrue(replyEnvelope.Message.GetType() == reply.GetType()); Assert.IsTrue(replyEnvelope.Message.MsgId == reply.MsgId); Assert.IsTrue(replyEnvelope.Message.ConvId == reply.ConvId); tcpStreamer2.Stop(); tcpStreamer1.Stop(); Thread.Sleep(1500); Assert.IsFalse(tcpStreamer2.IsActive); Assert.IsFalse(tcpStreamer2.ReplyWaiting); Assert.IsFalse(tcpStreamer2.Connected); Assert.IsFalse(tcpStreamer1.IsActive); Assert.IsFalse(tcpStreamer1.ReplyWaiting); Assert.IsFalse(tcpStreamer1.Connected); }