[Asterisk-code-review] pjsip: Add tests for multiple streams. (testsuite[master])
Joshua Colp
asteriskteam at digium.com
Tue Jun 27 09:34:13 CDT 2017
Joshua Colp has uploaded this change for review. ( https://gerrit.asterisk.org/5912
Change subject: pjsip: Add tests for multiple streams.
......................................................................
pjsip: Add tests for multiple streams.
This change adds SDP offer/answer tests for the acceptance
of multiple media stream when configured to allow it, and
for the addition/removal of media streams while a session
is in progress.
ASTERISK-27076
Change-Id: I54201ee955c88dc00fea7fae14b4ac3e431c3b4e
---
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app-initial-decline.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/tests.yaml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/sipp/uac-multiple-audio-with-video.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/test-config.yaml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/sipp/uac-multiple-video-with-audio.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/tests.yaml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-all-codecs.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-delayed.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-no-rtpmap.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-odd-rtpmap.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-with-attributes.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/test-config.yaml
C tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-initial-declined.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-with-video.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/test-config.yaml
C tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-initial-declined.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-with-audio.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/tests.yaml
M tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/tests.yaml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/sipp/uac-multiple-audio.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/sipp/uac-multiple-audio.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/test-config.yaml
C tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio-initial-declined.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/sipp/uac-multiple-audio.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/tests.yaml
M tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/tests.yaml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/sipp/uac-multiple-video.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/sipp/uac-multiple-video.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/test-config.yaml
C tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/extensions.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/pjsip.conf
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video-initial-declined.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video.xml
R tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/extensions.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/pjsip.conf
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/sipp/uac-multiple-video.xml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/test-config.yaml
A tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/tests.yaml
73 files changed, 1,433 insertions(+), 7 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/testsuite refs/changes/12/5912/1
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/sipp/uac-audio-video-app-initial-decline.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app-initial-decline.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/sipp/uac-audio-video-app-initial-decline.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app-initial-decline.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/sipp/uac-audio-video-app.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/sipp/uac-audio-video-app.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/sipp/uac-audio-video-app.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/decline/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/tests.yaml
new file mode 100644
index 0000000..9d63b36
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video-app/tests.yaml
@@ -0,0 +1,3 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+ - test: 'decline'
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..e91d1ee
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_audio_streams=10
+
+[alice](endpoint-template)
+allow=!all,g722,ulaw,alaw,h264,h263
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/sipp/uac-multiple-audio-with-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/sipp/uac-multiple-audio-with-video.xml
new file mode 100644
index 0000000..838a4e4
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/sipp/uac-multiple-audio-with-video.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ m=audio 6001 RTP/AVP 9
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:9 G722/8000
+ m=audio 6002 RTP/AVP 9 0 8
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ m=video 6000 RTP/AVP 99 34
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="4"/>
+ <test assign_to="4" variable="4" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="BYE">
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/test-config.yaml
new file mode 100644
index 0000000..cb51942
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-audio/test-config.yaml
@@ -0,0 +1,27 @@
+testinfo:
+ summary: 'Test offers with multiple audio streams/one video stream'
+ description: |
+ This tests inbound offers that contain multiple audio
+ media streams and a single video stream. Asterisk should
+ accept all the streams.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-audio-with-video.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..5141dbc
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_video_streams=10
+
+[alice](endpoint-template)
+allow=!all,g722,ulaw,alaw,h264,h263
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/sipp/uac-multiple-video-with-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/sipp/uac-multiple-video-with-audio.xml
new file mode 100644
index 0000000..3433cce
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/sipp/uac-multiple-video-with-audio.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec Test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ a=rtpmap:9 G722/8000
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ a=ptime:20
+ a=maxptime:20
+ a=sendrecv
+ m=video 6001 RTP/AVP 99 34
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6002 RTP/AVP 99
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=sendrecv
+ m=video 6003 RTP/AVP 34
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 34+..*"
+ search_in="body" check_it="true" assign_to="4"/>
+ <test assign_to="4" variable="4" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="BYE">
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/test-config.yaml
new file mode 100644
index 0000000..3e59590
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/multiple-video/test-config.yaml
@@ -0,0 +1,27 @@
+testinfo:
+ summary: 'Test offers with multiple video streams/one audio stream'
+ description: |
+ This tests inbound offers that contain multiple video
+ media streams and a single audio stream. Asterisk should
+ accept all the streams.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-video-with-audio.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/tests.yaml
new file mode 100644
index 0000000..a2bb275
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/accept/tests.yaml
@@ -0,0 +1,5 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+ - test: 'multiple-audio'
+ - test: 'multiple-video'
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-all-codecs.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-all-codecs.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-all-codecs.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-all-codecs.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-delayed.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-delayed.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-delayed.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-delayed.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-no-rtpmap.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-no-rtpmap.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-no-rtpmap.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-no-rtpmap.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-odd-rtpmap.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-odd-rtpmap.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-odd-rtpmap.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-odd-rtpmap.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-with-attributes.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-with-attributes.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs-with-attributes.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs-with-attributes.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/sipp/uac-basic-codecs.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/sipp/uac-basic-codecs.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/basic/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/basic/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/extensions.conf
similarity index 100%
copy from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/extensions.conf
copy to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/sipp/uac-multiple-audio-initial-declined.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-initial-declined.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/sipp/uac-multiple-audio-initial-declined.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-initial-declined.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/sipp/uac-multiple-audio-with-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-with-video.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/sipp/uac-multiple-audio-with-video.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/sipp/uac-multiple-audio-with-video.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-audio/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-audio/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/extensions.conf
similarity index 100%
copy from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/extensions.conf
copy to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/sipp/uac-multiple-video-initial-declined.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-initial-declined.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/sipp/uac-multiple-video-initial-declined.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-initial-declined.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/sipp/uac-multiple-video-with-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-with-audio.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/sipp/uac-multiple-video-with-audio.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/sipp/uac-multiple-video-with-audio.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/multiple-video/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/multiple-video/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/tests.yaml
new file mode 100644
index 0000000..f345e96
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/decline/tests.yaml
@@ -0,0 +1,6 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+ - test: 'basic'
+ - test: 'multiple-audio'
+ - test: 'multiple-video'
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/tests.yaml
index f345e96..a59c1bf 100644
--- a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/tests.yaml
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio-video/tests.yaml
@@ -1,6 +1,4 @@
# Enter tests here in the order they should be considered for execution:
tests:
- - test: 'basic'
- - test: 'multiple-audio'
- - test: 'multiple-video'
-
+ - dir: 'decline'
+ - dir: 'accept'
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..0dee3c8
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_audio_streams=20
+
+[alice](endpoint-template)
+allow=!all,g722,ulaw,alaw
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/sipp/uac-multiple-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/sipp/uac-multiple-audio.xml
new file mode 100644
index 0000000..1703fab
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/sipp/uac-multiple-audio.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ m=audio 6001 RTP/AVP 9
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:9 G722/8000
+ m=audio 6002 RTP/AVP 9 0 8
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="BYE">
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/test-config.yaml
new file mode 100644
index 0000000..c721580
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/accept/test-config.yaml
@@ -0,0 +1,27 @@
+testinfo:
+ summary: 'Test offers with multiple audio streams'
+ description: |
+ This tests inbound offers that contain multiple audio
+ media streams. Asterisk should accept all of the audio
+ streams.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-audio.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/extensions.conf
new file mode 100644
index 0000000..84e6575
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/extensions.conf
@@ -0,0 +1,6 @@
+[default]
+
+exten => answer,1,NoOp()
+ same => n,Answer()
+ same => n,StreamEcho(3,audio)
+ same => n,Hangup()
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..0dee3c8
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_audio_streams=20
+
+[alice](endpoint-template)
+allow=!all,g722,ulaw,alaw
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/sipp/uac-multiple-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/sipp/uac-multiple-audio.xml
new file mode 100644
index 0000000..2c89d1b
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/sipp/uac-multiple-audio.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="INVITE">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:];tag=[call_number]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=- 1324901698 1324901698 IN IP4 [local_ip]
+ s=-
+ c=IN IP4 [local_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ m=audio 6000 RTP/AVP 9 0 8
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ m=audio 6000 RTP/AVP 9 0 8
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ ]]>
+ </send>
+
+ <recv request="ACK" rtd="true" crlf="true">
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ BYE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 2 BYE
+ Contact: <sip:test@[local_ip]:[local_port]>
+ Max-Forwards: 70
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv response="200" crlf="true">
+ </recv>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/test-config.yaml
new file mode 100644
index 0000000..93e7453
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/add/test-config.yaml
@@ -0,0 +1,26 @@
+testinfo:
+ summary: 'Test adding of multiple audio streams'
+ description: |
+ This tests the addition of multiple audio streams once
+ a call has been established.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-audio.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/extensions.conf
similarity index 100%
copy from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/extensions.conf
copy to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/sipp/uac-multiple-audio-initial-declined.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio-initial-declined.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/sipp/uac-multiple-audio-initial-declined.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio-initial-declined.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/sipp/uac-multiple-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/sipp/uac-multiple-audio.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/sipp/uac-multiple-audio.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/decline/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/extensions.conf
new file mode 100644
index 0000000..9b21754
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/extensions.conf
@@ -0,0 +1,6 @@
+[default]
+
+exten => answer,1,NoOp()
+ same => n,Answer()
+ same => n,StreamEcho(1,audio)
+ same => n,Hangup()
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..791aec0
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_audio_streams=10
+
+[alice](endpoint-template)
+allow=!all,g722,ulaw,alaw
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/sipp/uac-multiple-audio.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/sipp/uac-multiple-audio.xml
new file mode 100644
index 0000000..7b84ab1
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/sipp/uac-multiple-audio.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ m=audio 6001 RTP/AVP 9
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:9 G722/8000
+ m=audio 6002 RTP/AVP 9 0 8
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="INVITE">
+ <action>
+ <ereg regexp="m=audio [0-9]{1,5} RTP/AVP 9 0 8 101+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=audio 0 RTP/AVP 9+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=audio 0 RTP/AVP 9 0 8+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:];tag=[call_number]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=- 1324901698 1324901698 IN IP4 [local_ip]
+ s=-
+ c=IN IP4 [local_ip]
+ t=0 0
+ m=audio 6000 RTP/AVP 9 0 8 101
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:9 G722/8000
+ a=rtpmap:101 telephone-event/8000
+ a=fmtp:101 0-16
+ m=audio 0 RTP/AVP 9
+ m=audio 0 RTP/AVP 9 0 8
+ ]]>
+ </send>
+
+ <recv request="ACK" rtd="true" crlf="true">
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ BYE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 2 BYE
+ Contact: <sip:test@[local_ip]:[local_port]>
+ Max-Forwards: 70
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv response="200" crlf="true">
+ </recv>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/test-config.yaml
new file mode 100644
index 0000000..5ceaec2
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/remove/test-config.yaml
@@ -0,0 +1,26 @@
+testinfo:
+ summary: 'Test removing of multiple audio streams'
+ description: |
+ This tests the removal of multiple audio streams once
+ a call has been established.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-audio.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/tests.yaml
new file mode 100644
index 0000000..024b05a
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/audio/tests.yaml
@@ -0,0 +1,6 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+ - test: 'decline'
+ - test: 'accept'
+ - test: 'add'
+ - test: 'remove'
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/tests.yaml
index 8dbe4c8..e4f005d 100644
--- a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/tests.yaml
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/tests.yaml
@@ -1,6 +1,6 @@
# Enter tests here in the order they should be considered for execution:
tests:
- - test: 'audio'
- - test: 'video'
+ - dir: 'audio'
+ - dir: 'video'
- dir: 'audio-video'
- - test: 'audio-video-app'
+ - dir: 'audio-video-app'
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/extensions.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/extensions.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..f20ab1e
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_video_streams=10
+
+[alice](endpoint-template)
+allow=!all,h264,h263
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/sipp/uac-multiple-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/sipp/uac-multiple-video.xml
new file mode 100644
index 0000000..7865de2
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/sipp/uac-multiple-video.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6002 RTP/AVP 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6003 RTP/AVP 99
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=sendrecv
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 34+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="BYE">
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/test-config.yaml
new file mode 100644
index 0000000..6b04558
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/accept/test-config.yaml
@@ -0,0 +1,27 @@
+testinfo:
+ summary: 'Test offers with multiple video streams'
+ description: |
+ This tests inbound offers that contain multiple video
+ media streams. Asterisk should accept all the video
+ streams.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-video.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/extensions.conf
new file mode 100644
index 0000000..3db7659
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/extensions.conf
@@ -0,0 +1,6 @@
+[default]
+
+exten => answer,1,NoOp()
+ same => n,Answer()
+ same => n,StreamEcho(3,video)
+ same => n,Hangup()
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..f20ab1e
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_video_streams=10
+
+[alice](endpoint-template)
+allow=!all,h264,h263
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/sipp/uac-multiple-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/sipp/uac-multiple-video.xml
new file mode 100644
index 0000000..8e4ba16
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/sipp/uac-multiple-video.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="INVITE">
+ <action>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:];tag=[call_number]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=- 1324901698 1324901698 IN IP4 [local_ip]
+ s=-
+ c=IN IP4 [local_ip]
+ t=0 0
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ ]]>
+ </send>
+
+ <recv request="ACK" rtd="true" crlf="true">
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ BYE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 2 BYE
+ Contact: <sip:test@[local_ip]:[local_port]>
+ Max-Forwards: 70
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv response="200" crlf="true">
+ </recv>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/test-config.yaml
new file mode 100644
index 0000000..56c18c0
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/add/test-config.yaml
@@ -0,0 +1,26 @@
+testinfo:
+ summary: 'Test adding of multiple video streams'
+ description: |
+ This tests the addition of multiple video streams once
+ a call has been established.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-video.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/extensions.conf
similarity index 100%
copy from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/extensions.conf
copy to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/extensions.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/pjsip.conf
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/configs/ast1/pjsip.conf
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/configs/ast1/pjsip.conf
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/sipp/uac-multiple-video-initial-declined.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video-initial-declined.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/sipp/uac-multiple-video-initial-declined.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video-initial-declined.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/sipp/uac-multiple-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video.xml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/sipp/uac-multiple-video.xml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/sipp/uac-multiple-video.xml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/test-config.yaml
similarity index 100%
rename from tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/test-config.yaml
rename to tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/decline/test-config.yaml
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/extensions.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/extensions.conf
new file mode 100644
index 0000000..1bfc935
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/extensions.conf
@@ -0,0 +1,6 @@
+[default]
+
+exten => answer,1,NoOp()
+ same => n,Answer()
+ same => n,StreamEcho(1,video)
+ same => n,Hangup()
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/pjsip.conf b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..f20ab1e
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/configs/ast1/pjsip.conf
@@ -0,0 +1,13 @@
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
+
+[endpoint-template](!)
+type=endpoint
+context=default
+media_address=127.0.0.1
+max_video_streams=10
+
+[alice](endpoint-template)
+allow=!all,h264,h263
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/sipp/uac-multiple-video.xml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/sipp/uac-multiple-video.xml
new file mode 100644
index 0000000..8e98dcb
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/sipp/uac-multiple-video.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Basic Sipstone UAC">
+ <send retrans="500">
+ <![CDATA[
+
+ INVITE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>
+ Call-ID: [call_id]
+ CSeq: 1 INVITE
+ Contact: sip:test@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Codec test
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
+ s=-
+ c=IN IP[media_ip_type] [media_ip]
+ t=0 0
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6001 RTP/AVP 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 6001 RTP/AVP 99
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=sendrecv
+
+ ]]>
+ </send>
+
+ <recv response="100" optional="true">
+ </recv>
+
+ <recv response="181" optional="true">
+ </recv>
+
+ <recv response="180" optional="true">
+ </recv>
+
+ <recv response="183" optional="true">
+ </recv>
+
+ <recv response="200" rtd="true">
+ <action>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 34+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send>
+ <![CDATA[
+
+ ACK sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 1 ACK
+ Contact: sip:alice-codec-match@[local_ip]:[local_port]
+ Max-Forwards: 70
+ Subject: Performance Test
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv request="INVITE">
+ <action>
+ <ereg regexp="m=video [0-9]{1,5} RTP/AVP 99 34+..*"
+ search_in="body" check_it="true" assign_to="1"/>
+ <test assign_to="1" variable="1" compare="equal" value=""/>
+ <ereg regexp="m=video 0 RTP/AVP 34+..*"
+ search_in="body" check_it="true" assign_to="2"/>
+ <test assign_to="2" variable="2" compare="equal" value=""/>
+ <ereg regexp="m=video 0 RTP/AVP 99+..*"
+ search_in="body" check_it="true" assign_to="3"/>
+ <test assign_to="3" variable="3" compare="equal" value=""/>
+ </action>
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ SIP/2.0 200 OK
+ [last_Via:]
+ [last_From:]
+ [last_To:];tag=[call_number]
+ [last_Call-ID:]
+ [last_CSeq:]
+ Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+ Content-Type: application/sdp
+ Content-Length: [len]
+
+ v=0
+ o=- 1324901698 1324901698 IN IP4 [local_ip]
+ s=-
+ c=IN IP4 [local_ip]
+ t=0 0
+ m=video 6001 RTP/AVP 99 34
+ c=IN IP[media_ip_type] [media_ip]
+ a=rtpmap:99 H264/90000
+ a=rtpmap:34 H263/90000
+ a=sendrecv
+ m=video 0 RTP/AVP 34
+ m=video 0 RTP/AVP 99
+ ]]>
+ </send>
+
+ <recv request="ACK" rtd="true" crlf="true">
+ </recv>
+
+ <send retrans="500">
+ <![CDATA[
+
+ BYE sip:answer@[remote_ip]:[remote_port] SIP/2.0
+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+ From: alice <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]
+ To: sut <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]
+ Call-ID: [call_id]
+ CSeq: 2 BYE
+ Contact: <sip:test@[local_ip]:[local_port]>
+ Max-Forwards: 70
+ Content-Length: 0
+
+ ]]>
+ </send>
+
+ <recv response="200" crlf="true">
+ </recv>
+
+ <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+ <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/test-config.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/test-config.yaml
new file mode 100644
index 0000000..8da0f76
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/remove/test-config.yaml
@@ -0,0 +1,26 @@
+testinfo:
+ summary: 'Test removing of multiple video streams'
+ description: |
+ This tests the removal of multiple video streams once
+ a call has been established.
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'sipp.SIPpTestCase'
+
+test-object-config:
+ fail-on-any: False
+ test-iterations:
+ -
+ scenarios:
+ - { 'key-args': {'scenario': 'uac-multiple-video.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }
+
+properties:
+ minversion: '15.0.0'
+ dependencies:
+ - sipp :
+ version : 'v3.0'
+ - asterisk : 'res_pjsip'
+ tags:
+ - pjsip
diff --git a/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/tests.yaml b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/tests.yaml
new file mode 100644
index 0000000..024b05a
--- /dev/null
+++ b/tests/channels/pjsip/sdp_offer_answer/incoming/nominal/multiple-media-stream/video/tests.yaml
@@ -0,0 +1,6 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+ - test: 'decline'
+ - test: 'accept'
+ - test: 'add'
+ - test: 'remove'
--
To view, visit https://gerrit.asterisk.org/5912
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I54201ee955c88dc00fea7fae14b4ac3e431c3b4e
Gerrit-Change-Number: 5912
Gerrit-PatchSet: 1
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170627/46257aea/attachment-0001.html>
More information about the asterisk-code-review
mailing list