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); }
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); }
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); }
protected override void When() { var ackRequest = new SipRequestBuilder().WithRequestLine( new SipRequestLineBuilder().WithMethod(SipMethods.Ack).Build()).Build(); Stx.ProcessRequest(new SipRequestEventBuilder().WithRequest(ackRequest).Build()); }
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); }
protected override void Given() { base.Given(); SipRequest sipMessage = new SipRequestBuilder().Build(); _bytes = SipFormatter.FormatMessage(sipMessage); }
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); } }
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()); }
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()); }
public TxSpecificationBase() { Sender = new Mock<ISipMessageSender>(); Listener = new Mock<ISipListener>(); TxTable = new SipClientTransactionTable(); Request = new SipRequestBuilder().Build(); TimerFactory = new TimerFactoryMockBuilder().Build(); }
public TxSpecificationBase() { Sender = new Mock <ISipMessageSender>(); Listener = new Mock <ISipListener>(); TxTable = new SipClientTransactionTable(); Request = new SipRequestBuilder().Build(); TimerFactory = new TimerFactoryMockBuilder().Build(); }
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(); }
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(); }
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 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*/ }
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); }
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; }
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(); }
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()); }
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*/ }
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(); }
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()); }
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(); _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()); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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; }
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(); }
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); }
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; }
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); }