summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2011-09-08 04:37:43 +0000
committerBenny Prijono <bennylp@teluu.com>2011-09-08 04:37:43 +0000
commit20dd9709927975e2ddfc8c9216bcaa8e22b063f0 (patch)
treec56e41745023452dad03c80091ee14993f031dcf /tests
parent364e4d7c76c7bad35ab74e875f86f998826b2da3 (diff)
Added support for forking of reliable provisional response (100rel):
- maintain 100rel state for each call leg (To tag) - added SIPp scenario - note that multiple SDP negotiation in 100rel response from different call leg is not supported. Especially the case when multple offers are sent in the responses are not supported (we're supposed to send answers in PRACKs, but currently we only respond to the first 100rel with SDP). This closes #1364 git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3743 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'tests')
-rw-r--r--tests/pjsua/scripts-sipp/uas-forked-100rel.xml225
1 files changed, 225 insertions, 0 deletions
diff --git a/tests/pjsua/scripts-sipp/uas-forked-100rel.xml b/tests/pjsua/scripts-sipp/uas-forked-100rel.xml
new file mode 100644
index 00000000..c2f2044b
--- /dev/null
+++ b/tests/pjsua/scripts-sipp/uas-forked-100rel.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<!-- This program is free software; you can redistribute it and/or -->
+<!-- modify it under the terms of the GNU General Public License as -->
+<!-- published by the Free Software Foundation; either version 2 of the -->
+<!-- License, or (at your option) any later version. -->
+<!-- -->
+<!-- This program is distributed in the hope that it will be useful, -->
+<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of -->
+<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -->
+<!-- GNU General Public License for more details. -->
+<!-- -->
+<!-- You should have received a copy of the GNU General Public License -->
+<!-- along with this program; if not, write to the -->
+<!-- Free Software Foundation, Inc., -->
+<!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -->
+<!-- -->
+<!-- Sipp default 'uas' scenario. -->
+<!-- -->
+
+<scenario name="Forked INVITE, one of them require PRACK">
+ <recv request="INVITE" crlf="true">
+ <action>
+ <ereg regexp="branch=([0-9a-zA-Z\-]*)"
+ search_in="hdr"
+ header="Via"
+ assign_to="1,2"/>
+ <assign assign_to="1" variable="2"/>
+ <ereg regexp="CSeq: [ 0-9A-Z]+"
+ search_in="msg"
+ assign_to="4"/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+ SIP/2.0 100 Trying
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [$4]
+ ]]>
+ </send>
+
+ <!-- Call leg 1 sends 180/Ringing -->
+ <send retrans="500">
+ <![CDATA[
+ SIP/2.0 180 Ringing1
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_1
+ [last_Call-ID:]
+ [$4]
+ Contact: <sip:UA_1@[local_ip]:[local_port]>
+ Require: 100rel
+ RSeq: 1000
+ Content-Length: 0
+ ]]>
+ </send>
+
+ <recv request="PRACK" crlf="true">
+ </recv>
+
+ <send>
+ <![CDATA[
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ ]]>
+ </send>
+
+
+ <pause milliseconds="2000" />
+
+ <!-- Call leg 2: 180/Ringing -->
+ <send retrans="500">
+ <![CDATA[
+ SIP/2.0 180 Ringing2
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_2
+ [last_Call-ID:]
+ [$4]
+ Contact: <sip:UA_2@[local_ip]:[local_port]>
+ Require: 100rel
+ RSeq: 2000
+ Content-Length: 0
+ ]]>
+ </send>
+
+ <recv request="PRACK" crlf="true">
+ </recv>
+
+ <send>
+ <![CDATA[
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ ]]>
+ </send>
+
+
+ <pause milliseconds="2000" />
+
+ <!-- Call leg 2: sends Ringing again with correct RSeq -->
+ <send retrans="500">
+ <![CDATA[
+ SIP/2.0 180 Ringing2b
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_2
+ [last_Call-ID:]
+ [$4]
+ Contact: <sip:UA_2@[local_ip]:[local_port]>
+ Require: 100rel
+ RSeq: 2001
+ Content-Length: 0
+ ]]>
+ </send>
+
+ <recv request="PRACK" crlf="true">
+ </recv>
+
+ <send>
+ <![CDATA[
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ ]]>
+ </send>
+
+
+ <pause milliseconds="2000" />
+
+ <!-- Call leg 2: sends Ringing again with WRONG RSeq. There should be no PRACK -->
+ <send>
+ <![CDATA[
+ SIP/2.0 180 Ringing2c
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_2
+ [last_Call-ID:]
+ [$4]
+ Contact: <sip:UA_2@[local_ip]:[local_port]>
+ Require: 100rel
+ RSeq: 2004
+ Content-Length: 0
+ ]]>
+ </send>
+
+ <pause milliseconds="2000" />
+
+ <!-- Then Call leg 1 sends 180/Ringing again -->
+ <send retrans="500">
+ <![CDATA[
+ SIP/2.0 180 Ringing1b
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_1
+ [last_Call-ID:]
+ [$4]
+ Contact: <sip:UA_1@[local_ip]:[local_port]>
+ Require: 100rel
+ RSeq: 1001
+ Content-Length: 0
+ ]]>
+ </send>
+
+ <recv request="PRACK" crlf="true">
+ </recv>
+
+ <send>
+ <![CDATA[
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ ]]>
+ </send>
+
+
+ <pause milliseconds="2000" />
+
+ <!-- 603/Decline -->
+ <send>
+ <![CDATA[
+ SIP/2.0 603 Decline
+ Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;rport=5080;branch=[$2]
+ [last_From:]
+ [last_To:];tag=UA_1
+ [last_Call-ID:]
+ [$4]
+ Content-Length: 0
+ ]]>
+ </send>
+
+
+ <!-- Receive ACK -->
+ <recv request="ACK"
+ optional="false"
+ rtd="true"
+ crlf="true">
+ </recv>
+
+ <!-- definition of the response time repartition table (unit is ms) -->
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <!-- definition of the call length repartition table (unit is ms) -->
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+