public void SipTcpTransport_TransmitMultiple() { // Create two transport instances and send 10K messages from one to // the other and verify that they got through. TestTransport transport1 = new TestTransport(); TestTransport transport2 = new TestTransport(); SipRequest sentMsg; SipRequest recvMsg; try { transport1.Start(new NetworkBinding("127.0.0.1:5311")); transport2.Start(new NetworkBinding("127.0.0.1:5312")); for (int i = 0; i < 2500; i++) { sentMsg = new SipRequest(SipMethod.Register, "sip:[email protected]", SipHelper.SIP20); sentMsg.AddHeader(SipHeader.Via, string.Format("SIP/2.0/TCP {0}", transport1.LocalEndpoint)); sentMsg.AddHeader("Count", i.ToString()); sentMsg.Contents = GetContents(i); transport1.Send(transport2.LocalEndpoint, sentMsg); recvMsg = (SipRequest)transport2.Receive(); Assert.AreEqual(SipMethod.Register, recvMsg.Method); Assert.AreEqual("sip:[email protected]", recvMsg.Uri); Assert.AreEqual(SipHelper.SIP20, recvMsg.SipVersion); Assert.AreEqual(sentMsg[SipHeader.Via].FullText, recvMsg[SipHeader.Via].FullText); Assert.AreEqual(i.ToString(), recvMsg["Count"].FullText); CollectionAssert.AreEqual(sentMsg.Contents, recvMsg.Contents); Assert.AreEqual(transport1.LocalEndpoint.Address, recvMsg.RemoteEndpoint.Address); // Send a message the other way. sentMsg = new SipRequest(SipMethod.Register, "sip:[email protected]", SipHelper.SIP20); sentMsg.AddHeader(SipHeader.Via, string.Format("SIP/2.0/TCP {0}", transport1.LocalEndpoint)); sentMsg.Contents = GetContents(i); transport2.Send(transport1.LocalEndpoint, sentMsg); recvMsg = (SipRequest)transport1.Receive(); Assert.AreEqual(SipMethod.Register, recvMsg.Method); Assert.AreEqual("sip:[email protected]", recvMsg.Uri); Assert.AreEqual(SipHelper.SIP20, recvMsg.SipVersion); Assert.AreEqual(sentMsg[SipHeader.Via].FullText, recvMsg[SipHeader.Via].FullText); CollectionAssert.AreEqual(sentMsg.Contents, recvMsg.Contents); Assert.AreEqual(transport2.LocalEndpoint.Address, recvMsg.RemoteEndpoint.Address); } } finally { transport1.Stop(); transport2.Stop(); } }
public void SipTcpTransport_TransmitSingle() { // Create two transport instances and send a message from one to // the other and verify that it got through. TestTransport transport1 = new TestTransport(); TestTransport transport2 = new TestTransport(); SipRequest sentMsg; SipRequest recvMsg; try { transport1.Start(new NetworkBinding("127.0.0.1:5311")); transport2.Start(new NetworkBinding("127.0.0.1:5312")); Assert.IsTrue(transport1.IsStreaming); Assert.AreEqual(SipTransportType.TCP, transport1.TransportType); sentMsg = new SipRequest(SipMethod.Register, "sip:[email protected]", SipHelper.SIP20); sentMsg.AddHeader(SipHeader.Via, string.Format("SIP/2.0/TCP {0}", transport1.LocalEndpoint)); transport1.Send(transport2.LocalEndpoint, sentMsg); recvMsg = (SipRequest)transport2.Receive(); Assert.AreEqual(SipMethod.Register, recvMsg.Method); Assert.AreEqual("sip:[email protected]", recvMsg.Uri); Assert.AreEqual(SipHelper.SIP20, recvMsg.SipVersion); Assert.AreEqual(sentMsg[SipHeader.Via].FullText, recvMsg[SipHeader.Via].FullText); Assert.AreEqual(transport1.LocalEndpoint.Address, recvMsg.RemoteEndpoint.Address); // Send a message the other way, this one with some content data sentMsg = new SipRequest(SipMethod.Register, "sip:[email protected]", SipHelper.SIP20); sentMsg.AddHeader(SipHeader.Via, string.Format("SIP/2.0/TCP {0}", transport1.LocalEndpoint)); sentMsg.Contents = new byte[] { 0, 1, 2, 3, 4 }; transport2.Send(transport1.LocalEndpoint, sentMsg); recvMsg = (SipRequest)transport1.Receive(); Assert.AreEqual(SipMethod.Register, recvMsg.Method); Assert.AreEqual("sip:[email protected]", recvMsg.Uri); Assert.AreEqual(SipHelper.SIP20, recvMsg.SipVersion); Assert.AreEqual(sentMsg[SipHeader.Via].FullText, recvMsg[SipHeader.Via].FullText); CollectionAssert.AreEqual(new byte[] { 0, 1, 2, 3, 4 }, recvMsg.Contents); Assert.AreEqual(transport2.LocalEndpoint.Address, recvMsg.RemoteEndpoint.Address); } finally { transport1.Stop(); transport2.Stop(); } }
public void SipUdpTransport_TransmitSingle() { // Create two transport instances and send a message from one to // the other and verify that it got through. TestTransport transport1 = new TestTransport(); TestTransport transport2 = new TestTransport(); SipRequest sentMsg; SipRequest recvMsg; try { transport1.Start(new NetworkBinding("127.0.0.1:ANY")); transport2.Start(new NetworkBinding("127.0.0.1:ANY")); Assert.IsFalse(transport1.IsStreaming); Assert.AreEqual(SipTransportType.UDP, transport1.TransportType); sentMsg = new SipRequest(SipMethod.Register, "sip:[email protected]", SipHelper.SIP20); sentMsg.AddHeader(SipHeader.Via, string.Format("SIP/2.0/UDP {0}", transport1.LocalEndpoint)); transport1.Send(transport2.LocalEndpoint, sentMsg); recvMsg = (SipRequest)transport2.Receive(); Assert.AreEqual(SipMethod.Register, recvMsg.Method); Assert.AreEqual("sip:[email protected]", recvMsg.Uri); Assert.AreEqual(SipHelper.SIP20, recvMsg.SipVersion); Assert.AreEqual(sentMsg[SipHeader.Via].FullText, recvMsg[SipHeader.Via].FullText); Assert.AreEqual(transport1.LocalEndpoint.Address, recvMsg.RemoteEndpoint.Address); Assert.AreEqual(transport1.LocalEndpoint.Port, recvMsg.RemoteEndpoint.Port); } finally { transport1.Stop(); transport2.Stop(); } }