protected override void When()
        {
            var ok = _receivedBye.CreateResponse(SipResponseCodes.x200_Ok);

            _network.SendTo(SipFormatter.FormatMessage(ok), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitForOkByeProcessed.WaitOne(TimeSpan.FromSeconds(3));
        }
Exemplo n.º 2
0
        public void Parse_InValidFormats_ExpectToThrowExceptions()
        {
            String[] strings =
            {
                "\r\n\r\n",                                        /*empty message*/
                "  ",                                              /*empty message*/
                "junk\r\n",                                        /*invalid firsline*/
                "\r\n\r\n invalid firsline\r\n",                   /*invalid firsline*/
                "REGISTER sip:192.168.0.1 SIP/2.0\r\n NAME : \r\n" /*fails, first line is folded = ends with NAME*/
            };

            int exceptions = 0;

            foreach (string s in strings)
            {
                try
                {
                    var listenerStub = new SipParserListenerStub();
                    var bytes        = SipFormatter.FormatToBytes(s);
                    new SipParser(listenerStub).Parse(bytes, 0, bytes.Length);
                }
                catch (ParseException e)
                {
                    exceptions++;
                }
            }
            exceptions.Should().Be(strings.Length);
        }
        protected override void When()
        {
            _originalResponse = new SipRequestBuilder().Build().CreateResponse(SipResponseCodes.x200_Ok);
            var bytes = SipFormatter.FormatMessage(_originalResponse);

            _sipResponse = _parser.Parse(new DatagramPacketBuilder().WithDataBytes(bytes).Build()) as SipResponse;
        }
        protected override void When()
        {
            var response = _receivedInvite.CreateResponse(SipResponseCodes.x487_Request_Terminated);

            _network.SendTo(SipFormatter.FormatMessage(response), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitforProcessed.WaitOne();
        }
        protected override void When()
        {
            var ack = CreateAckRequest(_invite, _okResponse);

            _network.SendTo(SipFormatter.FormatMessage(ack), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitForAckProcessed.WaitOne();
        }
        protected override void When()
        {
            var cancelRequest = CreateCancelRequest(_invite);

            _network.SendTo(SipFormatter.FormatMessage(cancelRequest), _testClientUaEndPoint, _phoneUaEndPoint);
            WaitHandle.WaitAll(waitHandles, 2000 * 100);
        }
Exemplo n.º 7
0
        protected override void Given()
        {
            base.Given();
            SipRequest sipMessage = new SipRequestBuilder().Build();

            _bytes = SipFormatter.FormatMessage(sipMessage);
        }
Exemplo n.º 8
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);
            }
        }
Exemplo n.º 9
0
        public void Parse_ValidFormats_ExpectNotToFail()
        {
            String[] strings =
            {
                "REGISTER sip:192.168.0.1 SIP/2.0\r\nName: Value\r\n\r\n",        /*default format*/
                "REGISTER sip:192.168.0.1 SIP/2.0\r\nNAME : \r\n" +               /*folded line*/
                " Value\r\n\r\n",
                "REGISTER sip:192.168.0.1 SIP/2.0\r\nNAME: Value, Value\r\n\r\n", /*comma separated values on same line*/
                "REGISTER sip:192.168.0.1 SIP/2.0\r\nName    :Value\r\n\r\n"      /*support white spaces after name*/
                //"REGISTER sip:192.168.0.1 SIP/2.0\r\nNAME: Value\r\n\r\n",
                //"REGISTER sip:192.168.0.1 SIP/2.0\r\nname:  Value\r\n\r\n",
                //"REGISTER sip:192.168.0.1 SIP/2.0\r\n naME :  Value\r\n\r\n", fails because first line is folded line and so does not end with SIP/2.0
            };

            foreach (string s in strings)
            {
                var listenerStub = new SipParserListenerStub();
                var bytes        = SipFormatter.FormatToBytes(s);
                new SipParser(listenerStub).Parse(bytes, 0, bytes.Length);

                listenerStub.OnRequestExecuteReceived.Should().NotBeNull();
                listenerStub.OnResponseExecuteReceived.Should().BeNull();
                listenerStub.OnCompleteExecuteReceived.Should().BeTrue();
                listenerStub.OnHeaderExecuteReceived.Should().NotBeEmpty();
                listenerStub.OnHeaderExecuteReceived["Name"].Should().NotBeEmpty();
            }
        }
Exemplo n.º 10
0
        protected override void When()
        {
            _originalRequest = new SipRequestBuilder().Build();
            var bytes = SipFormatter.FormatMessage(_originalRequest);

            _sipMessage = _parser.Parse(new DatagramPacketBuilder().WithDataBytes(bytes).Build()) as SipRequest;
        }
        protected override void When()
        {
            var ok = _receivedCancel.CreateResponse(SipResponseCodes.x481_Call_Transaction_Does_Not_Exist);

            _network.SendTo(SipFormatter.FormatMessage(ok), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitforProcessed.WaitOne();
        }
        protected override void When()
        {
            var bye = CreateByeRequest(_invite, _receivedRingingResponse);

            _network.SendTo(SipFormatter.FormatMessage(bye), TestConstants.IpEndPoint1, TestConstants.IpEndPoint2);

            _waitForByeReceived.WaitOne();
        }
Exemplo n.º 13
0
        protected override void GivenOverride()
        {
            _network.SendTo(SipFormatter.FormatMessage(_invite), TestConstants.IpEndPoint1, TestConstants.IpEndPoint2);
            _wait.WaitOne(TimeSpan.FromMilliseconds(_longtimeSpan + 500));
            //_wait.WaitOne();

            _phone.InternalState.Should().Be(_stateProvider.GetRinging()); /*required assertion*/
        }
        protected override void When()
        {
            _call.Stop();
            var ringing = CreateRingingResponse(_receivedInvite, SipUtil.CreateTag());

            _network.SendTo(SipFormatter.FormatMessage(ringing), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitingforRingingProcessed.WaitOne();
        }
        protected override void When()
        {
            _toTag = SipUtil.CreateTag();
            var provResponse = CreateResponse(_receivedInvite, _toTag, SipResponseCodes.x486_Busy_Here);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitingforResponseProcessed.WaitOne();
        }
Exemplo n.º 16
0
        protected override void When()
        {
            /*send ok to cancel*/
            var ok = _receivedCancel.CreateResponse(SipResponseCodes.x200_Ok);

            _network.SendTo(SipFormatter.FormatMessage(ok), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitforOkProcessed.WaitOne();
        }
Exemplo n.º 17
0
        protected override void When()
        {
            var provResponse = CreateOkResponse(_receivedInvite, _toTag);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitingforOkProcessed.WaitOne();
            _waitingForAckReceived.WaitOne(3000); /*test also if ack is received by testclient.*/
        }
Exemplo n.º 18
0
        protected override void When()
        {
            _toTag = SipUtil.CreateTag();
            var provResponse = CreateRingingResponse(_receivedInvite, _toTag);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _ringingProcessed.WaitOne();
        }
Exemplo n.º 19
0
        protected override void When()
        {
            _network.SendTo(SipFormatter.FormatMessage(_invite), TestConstants.IpEndPoint1, TestConstants.IpEndPoint2);
            Thread.Sleep(TimeSpan.FromSeconds(1));
            _network.SendTo(SipFormatter.FormatMessage(_invite), TestConstants.IpEndPoint1, TestConstants.IpEndPoint2);

            _wait.WaitOne(TimeSpan.FromSeconds(1));
            // _wait.WaitOne(); /*debug*/
        }
Exemplo n.º 20
0
 protected override void GivenOverride()
 {
     _network.SendTo(SipFormatter.FormatMessage(_invite), _testClientUaEndPoint, _phoneUaEndPoint);
     _waitingforInviteProcessed.WaitOne();
     _phone.InternalState.Should().Be(_stateProvider.GetRinging()); /*required assertion*/
     _incomingCall.Accept();
     _waitingforOkReceived.WaitOne();
     _phone.InternalState.Should().Be(_stateProvider.GetWaitForAck()); /*required assertion*/
 }
Exemplo n.º 21
0
        public void ProcessRequest(SipRequestEvent requestEvent)
        {
            WriteToLog(">>>>" + SipFormatter.FormatMessageEnvelope(requestEvent.Request) + Environment.NewLine);
            requestEvent.Response  = requestEvent.Request.CreateResponse(SipResponseCodes.x200_Ok);
            requestEvent.IsHandled = true;
            _sipProvider.SendResponse(requestEvent.Response);

            WriteToLog("<<<<" + SipFormatter.FormatMessageEnvelope(requestEvent.Response) + Environment.NewLine);
        }
Exemplo n.º 22
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);
        }
Exemplo n.º 23
0
        private void _btnSend_Click(object sender, EventArgs e)
        {
            if (_txtMessage.Text == string.Empty)
            {
                MessageBox.Show("Can not send an empty message");
            }

            UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork);
            var       bytes     = SipFormatter.FormatToBytes(_txtMessage.Text);

            udpClient.Send(bytes, bytes.Length, SipUtil.ParseIpEndPoint(_txtSendTo.Text));
        }
Exemplo n.º 24
0
        protected override void When()
        {
            var f = new SipStack();
            var messageFacttory = f.CreateMessageFactory();
            var headerFactory   = f.CreateHeaderFactory();

            foreach (string message in _messages)
            {
                var parserContext = new SipParserContext(messageFacttory, headerFactory);
                parserContext.ParseCompleted += (s, e) => _subjectFoldedRequest.Add((SipRequest)e.Message);
                parserContext.Parse(SipFormatter.FormatToBytes(message));
            }
        }
Exemplo n.º 25
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);
        }
Exemplo n.º 26
0
        private void WriteToLog(IList <SipMessage> messages)
        {
            var sb = new StringBuilder();

            foreach (var m in messages)
            {
                sb.AppendLine(SipFormatter.FormatMessageEnvelope(m));
            }

            _txtLog.Text          += sb.ToString();
            _txtLog.SelectionStart = _txtLog.Text.Length;
            _txtLog.ScrollToCaret();
        }
Exemplo n.º 27
0
        public void Parse_DoesNotStartWithLAQOUT_ExpectThrowException()
        {
            String[] strings =
            {
                "To: sip:1.1.1.1:222>",
            };

            for (int i = 0; i < strings.Length; i++)
            {
                var p      = new SipToHeaderParser();
                var result = p.Parse(strings[i]);
                Assert.AreEqual(strings[i], SipFormatter.FormatHeader(result));
            }
        }
Exemplo n.º 28
0
        public void Parse_ToUriDoesNotHavePortSpecified_ExpectToUseDefaultPort5060()
        {
            String[] strings =
            {
                "To: <sip:1.1.1.1>",
            };

            for (int i = 0; i < strings.Length; i++)
            {
                var p      = new SipToHeaderParser();
                var result = p.Parse(strings[i]);
                Assert.AreEqual(strings[i], SipFormatter.FormatHeader(result));
            }
        }
Exemplo n.º 29
0
        private void _btnRegister_Click(object sender, EventArgs e)
        {
            try
            {
                var requestUri   = AddressFactory.CreateUri(null, "registrar." + MainForm.Configuration.RegistrarDomain);
                var toAddressUri = AddressFactory.CreateUri("hannes", MainForm.Configuration.RegistrarDomain);
                var toAddress    = AddressFactory.CreateAddress("hannes", toAddressUri);
                var toHeader     = HeaderFactory.CreateToHeader(toAddress);
                var fromHeader   = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag());
                var cseqHeader   = HeaderFactory.CreateSCeqHeader(SipMethods.Register, 1028);
                var callId       = SipUtil.CreateCallId();
                var callIdheader = HeaderFactory.CreateCallIdHeader(callId);
                var viaHeader    = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp,
                                                                 SipUtil.CreateBranch());
                var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader();
                var request           = MessageFactory.CreateRequest(
                    requestUri,
                    SipMethods.Register,
                    callIdheader,
                    cseqHeader,
                    fromHeader,
                    toHeader,
                    viaHeader,
                    maxForwardsHeader);

                var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString());
                var localHostUri   = AddressFactory.CreateUri(null, MainForm.SipProvider.ListeningPoint.ToString());
                var routeHeader    = HeaderFactory.CreateRouteHeader(proxyServerUri);
                var contactHeader  = HeaderFactory.CreateContactHeader(localHostUri);
                request.Routes.Add(routeHeader);
                request.Contacts.Add(contactHeader);

                EventAggregator.Instance.Publish(
                    new LogEvent(">>>>" + SipFormatter.FormatMessageEnvelope(request) + Environment.NewLine));

                if (_chbSendStateFull.Checked)
                {
                    var transaction = SipProvider.CreateClientTransaction(request);
                    transaction.SendRequest();
                }
                else
                {
                    SipProvider.SendRequest(request);
                }
            }
            catch (Exception ex)
            {
                MainForm.HandleException(ex);
            }
        }
Exemplo n.º 30
0
        public void Parse_ContainsNonNumericSequence_ExpectThrowException()
        {
            String[] strings =
            {
                "CSeq: 1002a REGISTER",
            };

            for (int i = 0; i < strings.Length; i++)
            {
                var p      = new SipCSeqHeaderParser();
                var result = p.Parse(strings[i]);
                Assert.AreEqual(strings[i], SipFormatter.FormatHeader(result));
            }
        }