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

<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I54201ee955c88dc00fea7fae14b4ac3e431c3b4e </div>
<div style="display:none"> Gerrit-Change-Number: 5912 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Joshua Colp <jcolp@digium.com> </div>