Example #1
0
        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();
            }
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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();
            }
        }