コード例 #1
0
ファイル: VariousTests.cs プロジェクト: HNeukermans/Hallo
        public void When_1000_transactions_are_in_trying_state()
        {
            var m = new Mock<ISipMessageSender>();
            var l = new Mock<ISipListener>();
            var txTable = new SipClientTransactionTable();

            SipNonInviteClientTransaction ctx;
            for(int i=0;i <1000;i++)
            {
                /*provide a separate sequence so that each transaction has a unique ID*/
                var r = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(i).Build()).Build();
                ctx = new SipNonInviteClientTransaction(txTable, m.Object, l.Object, r, new TimerFactory());
                ctx.SendRequest(); /*go to state*/
            }

            Assert.IsTrue(txTable.Keys.Count == 1000);

            /*extra race condition check. Wait T1 time, so while disposing the transactions, their Retransmit is firing.*/
            var dateTime = DateTime.Now.AddMilliseconds(SipConstants.T1);
            while (dateTime > DateTime.Now) { };

            txTable.Values.ToList().ForEach(a => a.Dispose());

            Assert.IsTrue(txTable.Keys.Count == 0);
        }
コード例 #2
0
ファイル: VariousTests.cs プロジェクト: goupviet/Hallo
        public void When_1000_transactions_are_in_trying_state()
        {
            var m       = new Mock <ISipMessageSender>();
            var l       = new Mock <ISipListener>();
            var txTable = new SipClientTransactionTable();

            SipNonInviteClientTransaction ctx;

            for (int i = 0; i < 1000; i++)
            {
                /*provide a separate sequence so that each transaction has a unique ID*/
                var r = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(i).Build()).Build();
                ctx = new SipNonInviteClientTransaction(txTable, m.Object, l.Object, r, new TimerFactory());
                ctx.SendRequest(); /*go to state*/
            }

            Assert.IsTrue(txTable.Keys.Count == 1000);

            /*extra race condition check. Wait T1 time, so while disposing the transactions, their Retransmit is firing.*/
            var dateTime = DateTime.Now.AddMilliseconds(SipConstants.T1);

            while (dateTime > DateTime.Now)
            {
            }
            ;

            txTable.Values.ToList().ForEach(a => a.Dispose());

            Assert.IsTrue(txTable.Keys.Count == 0);
        }
コード例 #3
0
        protected SipRequest CreateInviteRequest()
        {
            var r = new SipRequestBuilder()
                    .WithRequestLine(
                new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build())
                    .WithCSeq(
                new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).WithSequence(_cSeq).Build())
                    .WithFrom(
                new SipFromHeaderBuilder().WithSipUri(TestConstants.AliceUri).WithTag(_fromTag).Build())
                    .WithTo(
                new SipToHeaderBuilder().WithSipUri(TestConstants.BobUri).WithTag(null).Build())
                    .WithCallId(
                new SipCallIdHeaderBuilder().WithValue(_callId).Build())
                    .WithContacts(
                new SipContactHeaderListBuilder()
                .Add(new SipContactHeaderBuilder().WithSipUri(TestConstants.AliceContactUri).Build())
                .Build())
                    .WithRecordRoutes(
                new SipRecordRouteHeaderListBuilder()
                .Add(new SipRecordRouteHeaderBuilder().WithSipUri(TestConstants.AliceProxyUri).Build())
                .Build())
                    .Build();

            return(r);
        }
コード例 #4
0
        protected override void When()
        {
            var ackRequest = new SipRequestBuilder().WithRequestLine(
                new SipRequestLineBuilder().WithMethod(SipMethods.Ack).Build()).Build();

            Stx.ProcessRequest(new SipRequestEventBuilder().WithRequest(ackRequest).Build());
        }
コード例 #5
0
        public void Test()
        {
            _requestReceived = new ManualResetEvent(false);

            /*setup + start listening*/
            var stub = new SipReceivedMessageProcessorStub(OnRequestReceived, (s,e) => { });

            var listeningPoint = new IPEndPoint(TestConstants.MyIpAddress, 33333);

            var f = new SipFactory();

            var stp = new SmartThreadPool();
            stp.Start();
            var provider = new SipContextSource(listeningPoint, stp);
            provider.AddListener(null);
            provider.Start();

            /*send a message to the listener*/
            var send = new SipRequestBuilder().Build();
            var requestBytes = SipFormatter.FormatMessage(send);

            var udpClient = new UdpClient();
            udpClient.Send(requestBytes, requestBytes.Length, listeningPoint);

            _requestReceived.WaitOne();

            var oc = ObjectComparer.Create();

            var received = stub.Requests.First();
            oc.Compare(received, send);
            Assert.True(oc.Differences.Count == 0, oc.DifferencesString);
        }
コード例 #6
0
        protected override void Given()
        {
            base.Given();
            SipRequest sipMessage = new SipRequestBuilder().Build();

            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
コード例 #7
0
        private static void OnSendRequest(object state)
        {
            var id     = (int)state;
            var client = new UdpClient();

            Interlocked.Increment(ref _currentThreadCount);
            //if (_currentThreadCount == ThreadCount)
            //    _threadsGoEvent.Set();

            //// thread should wait until all threads are ready, to try the server.
            //if (!_threadsGoEvent.WaitOne(60000, true))
            //    Assert.False(true, "Start event was not triggered.");

            var request = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(id).Build()).Build();

            try
            {
                var bytes = SipFormatter.FormatMessage(request);
                client.Send(bytes, bytes.Length, _listenerEndPoint);
            }
            catch (Exception e)
            {
                Console.WriteLine("failed to send: " + id);
                lock (_failedThreads) _failedThreads.Add(id);
            }
        }
コード例 #8
0
ファイル: VariousTests.cs プロジェクト: goupviet/Hallo
        public void ExpectStxToDisposeThemselfWhenTheirEndTimerHasFired()
        {
            var s          = new Mock <ISipMessageSender>();
            var l          = new Mock <ISipListener>();
            var txTable    = new SipServerTransactionTable();
            var tfsBuilder = new TimerFactoryStubBuilder();

            tfsBuilder.WithNonInviteStxEndCompletedTimerInterceptor((a) => new TxTimerStub(a, 1000, false, AfterCallBack));
            tfs = tfsBuilder.Build();
            for (int i = 0; i < Number; i++)
            {
                var r   = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(i).Build()).Build();
                var stx = new SipNonInviteServerTransaction(txTable, r, l.Object, s.Object, tfs);

                /*go to completed state */
                stx.SendResponse(new SipResponseBuilder()
                                 .WithStatusLine(new SipStatusLineBuilder()
                                                 .WithStatusCode(200)
                                                 .WithReason("OK")
                                                 .Build())
                                 .Build());
            }

            /*wait for Number of timers to fire*/
            are.WaitOne();

            Assert.IsTrue(!txTable.AsEnumerable().Any());
        }
コード例 #9
0
        private static void OnSendRequest(object state)
        {
            var id = (int)state;
            var client = new UdpClient();

            Interlocked.Increment(ref _currentThreadCount);
            //if (_currentThreadCount == ThreadCount)
            //    _threadsGoEvent.Set();

            //// thread should wait until all threads are ready, to try the server.
            //if (!_threadsGoEvent.WaitOne(60000, true))
            //    Assert.False(true, "Start event was not triggered.");

            var request = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(id).Build()).Build();

            try
            {
                var bytes = SipFormatter.FormatMessage(request);
                client.Send(bytes, bytes.Length, _listenerEndPoint);
            }
            catch (Exception e)
            {
                Console.WriteLine("failed to send: " + id);
                lock (_failedThreads) _failedThreads.Add(id);
            }
        }
コード例 #10
0
ファイル: VariousTests.cs プロジェクト: HNeukermans/Hallo
        public void ExpectStxToDisposeThemselfWhenTheirEndTimerHasFired()
        {
            var s = new Mock<ISipMessageSender>();
            var l = new Mock<ISipListener>();
            var txTable = new SipServerTransactionTable();
            var tfsBuilder = new TimerFactoryStubBuilder();
            tfsBuilder.WithNonInviteStxEndCompletedTimerInterceptor((a) => new TxTimerStub(a, 1000, false, AfterCallBack));
            tfs = tfsBuilder.Build();
            for (int i = 0; i < Number; i++)
            {
                var r = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(i).Build()).Build();
                var stx = new SipNonInviteServerTransaction(txTable, r, l.Object, s.Object, tfs);

                /*go to completed state */
                stx.SendResponse(new SipResponseBuilder()
                    .WithStatusLine(new SipStatusLineBuilder()
                    .WithStatusCode(200)
                    .WithReason("OK")
                    .Build())
                    .Build());
            }

            /*wait for Number of timers to fire*/
            are.WaitOne();

            Assert.IsTrue(!txTable.AsEnumerable().Any());
        }
コード例 #11
0
 public TxSpecificationBase()
 {
     Sender = new Mock<ISipMessageSender>();
     Listener = new Mock<ISipListener>();
     TxTable = new SipClientTransactionTable();
     Request = new SipRequestBuilder().Build();
     TimerFactory = new TimerFactoryMockBuilder().Build();
 }
コード例 #12
0
ファイル: TxSpecificationBase.cs プロジェクト: goupviet/Hallo
 public TxSpecificationBase()
 {
     Sender       = new Mock <ISipMessageSender>();
     Listener     = new Mock <ISipListener>();
     TxTable      = new SipClientTransactionTable();
     Request      = new SipRequestBuilder().Build();
     TimerFactory = new TimerFactoryMockBuilder().Build();
 }
コード例 #13
0
        public void ValidateMessage_WithoutMaxForwardsHeader_ExpectResultIsFalseAndHasRequiredHeadersMissingIsTrue()
        {
            SipValidator v       = CreateSipValidator();
            var          request = new SipRequestBuilder().WithMaxForwards(null).Build();
            var          result  = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            result.HasRequiredHeadersMissing.Should().BeTrue();
        }
コード例 #14
0
        public void ValidateMessage_WithoutToHeader_ExpectResultIsFalseAndHasRequiredHeadersMissingIsTrue()
        {
            SipValidator v = CreateSipValidator();
            var request = new SipRequestBuilder().WithTo(null).Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            result.HasRequiredHeadersMissing.Should().BeTrue();
        }
コード例 #15
0
        protected override void Given()
        {
            base.Given();

            _remoteEndPoint = TestConstants.IpEndPoint1;
            var request = new SipRequestBuilder().Build();
            var bytes = new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build();
            _packet = new UdpPacketBuilder().WithDataBytes(bytes).WithRemoteEp(_remoteEndPoint).Build();
            _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
        }
コード例 #16
0
 protected override void GivenOverride()
 {
     // ((SipAbstractServerTransaction) Stx).Initialize();
     var non200FinalResponse = CreateFinalResponse(302, "Moved Temporarily");
     Stx.SendResponse(non200FinalResponse);
     var ackRequest = new SipRequestBuilder().WithRequestLine(
             new SipRequestLineBuilder().WithMethod(SipMethods.Ack).Build()).Build();
     Stx.ProcessRequest(new SipRequestEventBuilder().WithRequest(ackRequest).Build());
     Stx.State.Should().Be(SipInviteServerTransaction.ConfirmedState); /*required assertion*/
 }
コード例 #17
0
        protected override void Given()
        {
            base.Given();

            _originalBody = new DataBytesBuilder().WithText("body").Build();
            var sipMessage = new SipRequestBuilder()
                .WithBody(_originalBody)
                .WithContentLength(4).Build();
            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
コード例 #18
0
 public TxSpecificationBase()
 {
     Sender = new Mock<ISipMessageSender>();
     Listener = new Mock<ISipListener>();
     TxTable = new SipServerTransactionTable();
     Request = new SipRequestBuilder().Build();
     var tf = new TimerFactoryStub();
     tf.CreateNonInviteStxEndCompletedTimerInterceptor = CreateDefaultNonInviteStxEndCompletedTimer;
     TimerFactory = tf;
 }
コード例 #19
0
        public void ValidateMessage_WithRequestLineVersionSipTwoDotZero_ExpectResultIsTrue()
        {
            SipValidator v       = CreateSipValidator();
            var          request = new SipRequestBuilder()
                                   .WithRequestLine(new SipRequestLineBuilder().WithVersion("SIP/2.0").Build())
                                   .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeTrue();
        }
コード例 #20
0
        protected override void Given()
        {
            base.Given();

            _originalBody = new DataBytesBuilder().WithText("body").Build();
            var sipMessage = new SipRequestBuilder()
                             .WithBody(_originalBody)
                             .WithContentLength(4).Build();

            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
コード例 #21
0
        public TxSpecificationBase()
        {
            Sender   = new Mock <ISipMessageSender>();
            Listener = new Mock <ISipListener>();
            TxTable  = new SipServerTransactionTable();
            Request  = new SipRequestBuilder().Build();
            var tf = new TimerFactoryStub();

            tf.CreateNonInviteStxEndCompletedTimerInterceptor = CreateDefaultNonInviteStxEndCompletedTimer;
            TimerFactory = tf;
        }
        protected override void Given()
        {
            base.Given();

            var request = new SipRequestBuilder()
               .WithRequestLine(new SipRequestLineBuilder().WithMethod(SipMethods.Register).Build())
               .WithCSeq(new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).Build())
               .Build();
            _packet = new UdpPacketBuilder().WithDataBytes(new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build()).Build();
            _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
        }
コード例 #23
0
        protected override void GivenOverride()
        {
            //((SipAbstractServerTransaction) Stx).Initialize();
            _non200FinalResponse = CreateFinalResponse(302, "Moved Temporarily");
            Stx.SendResponse(_non200FinalResponse);
            var ackRequest = new SipRequestBuilder().WithRequestLine(
                new SipRequestLineBuilder().WithMethod(SipMethods.Ack).Build()).Build();

            Stx.ProcessRequest(new SipRequestEventBuilder().WithRequest(ackRequest).Build());
            Stx.State.Should().Be(SipInviteServerTransaction.ConfirmedState); /*required assertion*/
        }
コード例 #24
0
        public void ValidateMessage_WithRequestLineVersionSipThreeDotZero_ExpectResultIsFalseAndHasUnSupportedSipVersionIsTrue()
        {
            SipValidator v       = CreateSipValidator();
            var          request = new SipRequestBuilder()
                                   .WithRequestLine(new SipRequestLineBuilder().WithVersion("SIP/3.0").Build())
                                   .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            result.HasUnSupportedSipVersion.Should().BeTrue();
        }
コード例 #25
0
        protected override void Given()
        {
            base.Given();

            _remoteEndPoint = TestConstants.IpEndPoint1;
            var request = new SipRequestBuilder().Build();
            var bytes   = new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build();

            _packet  = new UdpPacketBuilder().WithDataBytes(bytes).WithRemoteEp(_remoteEndPoint).Build();
            _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
        }
 protected override void Given()
 {
     base.Given();
     _senderEndPoint = new IPEndPoint(TestConstants.IpAddress1, 5070);
     _sentByEndPoint = new IPEndPoint(TestConstants.IpAddress2, 5050);
     var via = new SipViaHeaderBuilder().WithSentBy(_sentByEndPoint).WithUseRport(true).Build();
     var request = new SipRequestBuilder().WithVias(new SipViaHeaderListBuilder().Add(via).Build()).Build();
     var bytes = new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build();
     _packet = new UdpPacketBuilder().WithDataBytes(bytes).WithRemoteEp(_senderEndPoint).Build();
     _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
 }
コード例 #27
0
        protected override void When()
        {
            var ackRequest = new SipRequestBuilder()
                .WithRequestLine
                (
                    new SipRequestLineBuilder().WithMethod(SipMethods.Ack).Build()
                )
                .Build();

            Stx.ProcessRequest(new SipRequestEventBuilder().WithRequest(ackRequest).Build());
        }
        protected override void Given()
        {
            base.Given();

            var request = new SipRequestBuilder()
                          .WithRequestLine(new SipRequestLineBuilder().WithMethod(SipMethods.Register).Build())
                          .WithCSeq(new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).Build())
                          .Build();

            _packet  = new UdpPacketBuilder().WithDataBytes(new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build()).Build();
            _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
        }
コード例 #29
0
        protected override void Given()
        {
            base.Given();
            _senderEndPoint = TestConstants.IpEndPoint1;
            _sentByEndPoint = TestConstants.IpEndPoint2;
            var via     = new SipViaHeaderBuilder().WithSentBy(_sentByEndPoint).Build();
            var request = new SipRequestBuilder().WithVias(new SipViaHeaderListBuilder().Add(via).Build()).Build();
            var bytes   = new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build();

            _packet  = new UdpPacketBuilder().WithDataBytes(bytes).WithRemoteEp(_senderEndPoint).Build();
            _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser());
        }
コード例 #30
0
        public void ValidateMessage_WithCSeqMethodDifferentFromRequestLineMethod_ExpectResultIsFalseAndHasInvalidSCeqMethodIsTrue()
        {
            SipValidator v       = CreateSipValidator();
            var          request = new SipRequestBuilder()
                                   .WithRequestLine(new SipRequestLineBuilder().WithMethod(SipMethods.Register).Build())
                                   .WithCSeq(new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).Build())
                                   .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            (result as ValidateRequestResult).Should().NotBeNull();
            (result as ValidateRequestResult).HasInvalidSCeqMethod.Should().BeTrue();
        }
コード例 #31
0
 public TxSpecificationBase()
 {
     Sender = new Mock<ISipMessageSender>();
     Listener = new Mock<ISipListener>();
     TxTable = new SipServerTransactionTable();
     Request = new SipRequestBuilder()
         .WithRequestLine
         (
         new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build()
         )
         .Build();
     TimerFactory = new TimerFactoryStubBuilder().Build();
 }
コード例 #32
0
        protected override void Given()
        {
            base.Given();

            _vias = new SipViaHeaderListBuilder()
                .Add(new SipViaHeaderBuilder().WithSentBy(TestConstants.IpEndPoint1).Build())
                .Add(new SipViaHeaderBuilder().WithSentBy(TestConstants.IpEndPoint2).Build()).Build();
            var sipMessage = new SipRequestBuilder()
                .WithNoHeaders()
                .WithVias(_vias).Build();

            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
コード例 #33
0
        public void ValidateMessage_WithCSeqMethodDifferentFromRequestLineMethod_ExpectResultIsFalseAndHasInvalidSCeqMethodIsTrue()
        {
            SipValidator v =CreateSipValidator();
            var request = new SipRequestBuilder()
                .WithRequestLine(new SipRequestLineBuilder().WithMethod(SipMethods.Register).Build())
                .WithCSeq(new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).Build())
                .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            (result as ValidateRequestResult).Should().NotBeNull();
            (result as ValidateRequestResult).HasInvalidSCeqMethod.Should().BeTrue();
        }
コード例 #34
0
        protected override void Given()
        {
            base.Given();

            _vias = new SipViaHeaderListBuilder()
                    .Add(new SipViaHeaderBuilder().WithSentBy(TestConstants.IpEndPoint1).Build())
                    .Add(new SipViaHeaderBuilder().WithSentBy(TestConstants.IpEndPoint2).Build()).Build();
            var sipMessage = new SipRequestBuilder()
                             .WithNoHeaders()
                             .WithVias(_vias).Build();

            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
コード例 #35
0
ファイル: TxSpecificationBase.cs プロジェクト: goupviet/Hallo
 public TxSpecificationBase()
 {
     Sender   = new Mock <ISipMessageSender>();
     Listener = new Mock <ISipListener>();
     TxTable  = new SipServerTransactionTable();
     Request  = new SipRequestBuilder()
                .WithRequestLine
                (
         new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build()
                )
                .Build();
     TimerFactory = new TimerFactoryStubBuilder().Build();
 }
コード例 #36
0
ファイル: VariousTests.cs プロジェクト: HNeukermans/Hallo
        public void Test_Retransmit()
        {
            var s = new Mock<ISipMessageSender>();
            var l = new Mock<ISipListener>();
            var txTable = new SipClientTransactionTable();
            var request = new SipRequestBuilder().Build();
            SipNonInviteClientTransaction ctx = new SipNonInviteClientTransaction(txTable, s.Object, l.Object, request, new TimerFactoryMockBuilder().Build());
            ctx.SendRequest();

            var dateTime = DateTime.Now.AddMilliseconds(SipConstants.T1);
            while (dateTime > DateTime.Now) {};

            s.Verify(ss => ss.SendRequest(request), Times.Exactly(2));

            ctx.Dispose();
        }
コード例 #37
0
 public TxSpecificationBase()
 {
     MessageSenderMock = new Mock<ISipMessageSender>();
     TxTable = new SipClientTransactionTable();
     Request = new SipRequestBuilder()
         .WithRequestLine
         (
             new SipRequestLineBuilder()
             .WithMethod(SipMethods.Invite)
             .Build()
         ).Build();
     TimerFactory = new TimerFactoryMockBuilder().Build();
     ListenerMock = new Mock<ISipListener>();
     HeaderFactory = new SipHeaderFactory();
     MessageFactory = new SipMessageFactory();
 }
コード例 #38
0
ファイル: TxSpecificationBase.cs プロジェクト: goupviet/Hallo
 public TxSpecificationBase()
 {
     MessageSenderMock = new Mock <ISipMessageSender>();
     TxTable           = new SipClientTransactionTable();
     Request           = new SipRequestBuilder()
                         .WithRequestLine
                         (
         new SipRequestLineBuilder()
         .WithMethod(SipMethods.Invite)
         .Build()
                         ).Build();
     TimerFactory   = new TimerFactoryMockBuilder().Build();
     ListenerMock   = new Mock <ISipListener>();
     HeaderFactory  = new SipHeaderFactory();
     MessageFactory = new SipMessageFactory();
 }
コード例 #39
0
        protected SipRequest CreateInviteRequest()
        {
            var r = new SipRequestBuilder()
                .WithRequestLine(
                    new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build())
                .WithCSeq(
                    new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).Build())
                .WithFrom(
                    new SipFromHeaderBuilder().WithTag(_fromTag).Build())
                .WithCallId(
                    new SipCallIdHeaderBuilder().WithValue(_callId).Build())
                .WithContacts(
                    new SipContactHeaderListBuilder()
                        .Add(new SipContactHeaderBuilder().WithSipUri(TestConstants.AliceContactUri).Build())
                        .Build())
                .Build();

            return r;
        }
コード例 #40
0
ファイル: VariousTests.cs プロジェクト: goupviet/Hallo
        public void Test_Retransmit()
        {
            var s       = new Mock <ISipMessageSender>();
            var l       = new Mock <ISipListener>();
            var txTable = new SipClientTransactionTable();
            var request = new SipRequestBuilder().Build();
            SipNonInviteClientTransaction ctx = new SipNonInviteClientTransaction(txTable, s.Object, l.Object, request, new TimerFactoryMockBuilder().Build());

            ctx.SendRequest();

            var dateTime = DateTime.Now.AddMilliseconds(SipConstants.T1);

            while (dateTime > DateTime.Now)
            {
            }
            ;

            s.Verify(ss => ss.SendRequest(request), Times.Exactly(2));

            ctx.Dispose();
        }
コード例 #41
0
        protected SipRequest CreateInviteRequest(SipUri from, SipUri to)
        {
            var r = new SipRequestBuilder()
                    .WithRequestLine(
                new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build())
                    .WithCSeq(
                new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).WithSequence(1).Build())
                    .WithFrom(
                new SipFromHeaderBuilder().WithSipUri(from).WithTag(SipUtil.CreateTag()).Build())
                    .WithTo(
                new SipToHeaderBuilder().WithSipUri(to).WithTag(null).Build())
                    .WithCallId(
                new SipCallIdHeaderBuilder().WithValue(SipUtil.CreateCallId()).Build())
                    .WithContacts(
                new SipContactHeaderListBuilder()
                .Add(new SipContactHeaderBuilder().WithSipUri(from).Build())
                .Build())
                    .Build();

            return(r);
        }
コード例 #42
0
        protected SipRequest CreateInviteRequest(SipUri from, SipUri to)
        {
            var r = new SipRequestBuilder()
                .WithRequestLine(
                    new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build())
                .WithCSeq(
                    new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).WithSequence(1).Build())
                .WithFrom(
                    new SipFromHeaderBuilder().WithSipUri(from).WithTag(SipUtil.CreateTag()).Build())
                .WithTo(
                    new SipToHeaderBuilder().WithSipUri(to).WithTag(null).Build())
                .WithCallId(
                    new SipCallIdHeaderBuilder().WithValue(SipUtil.CreateCallId()).Build())
                .WithContacts(
                    new SipContactHeaderListBuilder()
                        .Add(new SipContactHeaderBuilder().WithSipUri(from).Build())
                        .Build())
                .Build();

            return r;
        }
コード例 #43
0
ファイル: UdpSipListenerTests.cs プロジェクト: goupviet/Hallo
        public void Test()
        {
            _requestReceived = new ManualResetEvent(false);

            /*setup + start listening*/
            var stub = new SipReceivedMessageProcessorStub(OnRequestReceived, (s, e) => { });

            var listeningPoint = new IPEndPoint(TestConstants.MyIpAddress, 33333);

            var f = new SipFactory();

            var stp = new SmartThreadPool();

            stp.Start();
            var provider = new SipContextSource(listeningPoint, stp);

            provider.AddListener(null);
            provider.Start();

            /*send a message to the listener*/
            var send         = new SipRequestBuilder().Build();
            var requestBytes = SipFormatter.FormatMessage(send);

            var udpClient = new UdpClient();

            udpClient.Send(requestBytes, requestBytes.Length, listeningPoint);

            _requestReceived.WaitOne();

            var oc = ObjectComparer.Create();

            var received = stub.Requests.First();

            oc.Compare(received, send);
            Assert.True(oc.Differences.Count == 0, oc.DifferencesString);
        }
コード例 #44
0
        public void ValidateMessage_WithRequestLineVersionSipThreeDotZero_ExpectResultIsFalseAndHasUnSupportedSipVersionIsTrue()
        {
            SipValidator v = CreateSipValidator();
            var request = new SipRequestBuilder()
                .WithRequestLine(new SipRequestLineBuilder().WithVersion("SIP/3.0").Build())
                .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeFalse();
            result.HasUnSupportedSipVersion.Should().BeTrue();
        }
コード例 #45
0
 protected override void Given()
 {
     base.Given();
     SipRequest sipMessage = new SipRequestBuilder().Build();
     _bytes = SipFormatter.FormatMessage(sipMessage);
 }
コード例 #46
0
        public void ValidateMessage_WithRequestLineVersionSipTwoDotZero_ExpectResultIsTrue()
        {
            SipValidator v = CreateSipValidator();
            var request = new SipRequestBuilder()
                .WithRequestLine(new SipRequestLineBuilder().WithVersion("SIP/2.0").Build())
                .Build();
            var result = v.ValidateMessage(request);

            result.IsValid.Should().BeTrue();
        }