summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-06-27 21:59:15 +0000
committerBenny Prijono <bennylp@teluu.com>2008-06-27 21:59:15 +0000
commit4c5f320417622b3f3b05595f0dacec59fd4748fb (patch)
tree86af8d233cf5e0d7c540e0846280b0689b66a60b /pjsip-apps
parentb3d805986a672e0794333a6a1aabb0a6d3da6c37 (diff)
Added more Python tests: offer with multiple media lines
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2081 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_1.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_2.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_1.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_2.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_1.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_2.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_1.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_2.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/124_sdp_with_unknown_static_unknown_transport.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_0.py30
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_1.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_2.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_3.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_4.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/151_err_sdp_video.py3
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/153_err_sdp_unsupported_codec.py3
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/158_err_sdp_bad_transport_type.py2
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_1.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_2.py28
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_1.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_2.py27
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/330_srtp_prefer_rtp_savp.py30
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/331_srtp_prefer_rtp_avp.py29
-rw-r--r--pjsip-apps/src/test-pjsua/scripts-sendto/999_asterisk_err.py45
24 files changed, 603 insertions, 5 deletions
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_1.py
new file mode 100644
index 00000000..e96919f3
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_1.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Video uses dynamic payload type
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=video 4000 RTP/AVP 100
+a=rtpmap:100 myvideo/80000
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=video 0 RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and video", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_2.py
new file mode 100644
index 00000000..6bdda923
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/120_sdp_with_video_dynamic_2.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# In this case the video codec uses dynamic payload type
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=video 4000 RTP/AVP 100
+a=rtpmap:100 myvideo/96000
+m=audio 5000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=video 0 RTP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and video", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_1.py
new file mode 100644
index 00000000..f05da5db
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_1.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Video uses static payload type which will cause failure
+# when session.c looks-up the codec in codec manager
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=video 4000 RTP/AVP 54
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=video 0 RTP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and video", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_2.py
new file mode 100644
index 00000000..67e01321
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/121_sdp_with_video_static_2.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Video uses static payload type which will cause failure
+# when session.c looks-up the codec in codec manager
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=video 4000 RTP/AVP 54
+m=audio 5000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=video 0 RTP/AVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and video", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_1.py
new file mode 100644
index 00000000..0e7ced75
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_1.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=xapplicationx 4000 RTP/AVP 100
+a=rtpmap:100 myapp/80000
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=xapplicationx 0 RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and unknown", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_2.py
new file mode 100644
index 00000000..7bdb14ee
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/122_sdp_with_unknown_dynamic_2.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=xapplicationx 4000 RTP/AVP 100
+a=rtpmap:100 myapp/80000
+m=audio 5000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=xapplicationx 0 RTP/AVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and unknown", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_1.py
new file mode 100644
index 00000000..3da14409
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_1.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# The unknown media uses static payload type
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=xapplicationx 4000 RTP/AVP 54
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=xapplicationx 0 RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and unknown", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_2.py
new file mode 100644
index 00000000..76ff13be
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/123_sdp_with_unknown_static_2.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# The unknown media uses static payload type
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=xapplicationx 4000 RTP/AVP 54
+m=audio 5000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=xapplicationx 0 RTP/AVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and unknown", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/124_sdp_with_unknown_static_unknown_transport.py b/pjsip-apps/src/test-pjsua/scripts-sendto/124_sdp_with_unknown_static_unknown_transport.py
new file mode 100644
index 00000000..5d1b7d3f
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/124_sdp_with_unknown_static_unknown_transport.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=xapplicationx 4000 XRTPX/XAVPX 54
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=xapplicationx 0 XRTPX/XAVPX "
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mixed audio and unknown and with unknown transport",
+ pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_0.py b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_0.py
new file mode 100644
index 00000000..dbbedfff
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_0.py
@@ -0,0 +1,30 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Multiple good m=audio lines! The current algorithm in pjsua-lib will
+# select the last audio (which should be okay, as we're entitled to
+# select any of them)
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=audio 4000 RTP/AVP 0
+m=audio 3000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 RTP/AVP[\\s\\S]+m=audio 0 RTP/AVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Mutiple good m=audio lines", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_1.py
new file mode 100644
index 00000000..3cfc6116
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_1.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Multiple m=audio, one of them is bad
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+m=audio 4000 UNKNOWN 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=audio 0 UNKNOWN"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Audio and bad audio", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_2.py
new file mode 100644
index 00000000..80cbf4b5
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_2.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Multiple m=audio, one of them is bad
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 4000 UNKNOWN 0
+m=audio 5000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 UNKNOWN[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Audio and bad audio", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_3.py b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_3.py
new file mode 100644
index 00000000..a0397c59
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_3.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Multiple m=audio, one of them has dynamic PT codec that we don't support
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 100
+a=rtpmap:100 someunknowncodec/8000
+m=audio 4000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 RTP/AVP[\s\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Multiple audio lines", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_4.py b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_4.py
new file mode 100644
index 00000000..814de0d9
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/125_sdp_with_multi_audio_4.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# Multiple m=audio, one of them has static PT codec that we don't support
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 80
+m=audio 4000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 RTP/AVP[\s\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Multiple audio lines", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/151_err_sdp_video.py b/pjsip-apps/src/test-pjsua/scripts-sendto/151_err_sdp_video.py
index 62944843..1dc8422b 100644
--- a/pjsip-apps/src/test-pjsua/scripts-sendto/151_err_sdp_video.py
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/151_err_sdp_video.py
@@ -14,8 +14,7 @@ m=video 4000 RTP/AVP 0
pjsua_args = "--null-audio --auto-answer 200"
extra_headers = ""
-include = ["Content-Type: application/sdp", # response must include SDP
- "m=audio"]
+include = []
exclude = []
sendto_cfg = sip.SendtoCfg("Video not acceptable", pjsua_args, sdp, 488,
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/153_err_sdp_unsupported_codec.py b/pjsip-apps/src/test-pjsua/scripts-sendto/153_err_sdp_unsupported_codec.py
index 173a6b8f..1d6da2a8 100644
--- a/pjsip-apps/src/test-pjsua/scripts-sendto/153_err_sdp_unsupported_codec.py
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/153_err_sdp_unsupported_codec.py
@@ -15,8 +15,7 @@ a=rtpmap:101 my-proprietary-codec
pjsua_args = "--null-audio --auto-answer 200"
extra_headers = ""
-include = ["Content-Type: application/sdp", # response must include SDP
- "m=audio"]
+include = []
exclude = []
sendto_cfg = sip.SendtoCfg("Unsupported codec", pjsua_args, sdp, 488,
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/158_err_sdp_bad_transport_type.py b/pjsip-apps/src/test-pjsua/scripts-sendto/158_err_sdp_bad_transport_type.py
index 28f4998c..63dd811a 100644
--- a/pjsip-apps/src/test-pjsua/scripts-sendto/158_err_sdp_bad_transport_type.py
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/158_err_sdp_bad_transport_type.py
@@ -20,7 +20,7 @@ pjsua_args = "--null-audio --auto-answer 200"
extra_headers = ""
include = []
exclude = []
-sendto_cfg = sip.SendtoCfg("Unsupported transport type", pjsua_args, sdp, 406,
+sendto_cfg = sip.SendtoCfg("Unsupported transport type", pjsua_args, sdp, 488,
extra_headers=extra_headers,
resp_inc=include, resp_exc=exclude)
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_1.py
new file mode 100644
index 00000000..4ee7bfea
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_1.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+m=xapplicationx 4000 RTP/AVP 100
+a=rtpmap:100 myapp/80000
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 1 --srtp-secure 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+a=crypto[\\s\\S]+m=xapplicationx 0 RTP/AVP"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("SRTP audio and unknown media", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_2.py
new file mode 100644
index 00000000..8536f1a2
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_media_2.py
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=xapplicationx 4000 RTP/AVP 100
+a=rtpmap:100 myapp/80000
+m=audio 5000 RTP/AVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 1 --srtp-secure 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=xapplicationx 0 RTP/AVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+a=crypto"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Unknown media and SRTP audio", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_1.py b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_1.py
new file mode 100644
index 00000000..12aa61cb
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_1.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/AVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+m=audio 4000 UNKNOWN 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 1 --srtp-secure 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+a=crypto[\\s\\S]+m=audio 0 UNKNOWN"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("SRTP audio and unknown media", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_2.py b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_2.py
new file mode 100644
index 00000000..a1ac6ce0
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/320_srtp_with_unknown_transport_2.py
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 4000 UNKNOWN 0
+m=audio 5000 RTP/AVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 1 --srtp-secure 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 UNKNOWN[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+a=crypto"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("SRTP audio and unknown media", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/330_srtp_prefer_rtp_savp.py b/pjsip-apps/src/test-pjsua/scripts-sendto/330_srtp_prefer_rtp_savp.py
new file mode 100644
index 00000000..e8097367
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/330_srtp_prefer_rtp_savp.py
@@ -0,0 +1,30 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# When SRTP is enabled in pjsua, it should prefer to use
+# RTP/SAVP media line if there are multiple m=audio lines
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 4000 RTP/AVP 0
+a=rtpmap:0 pcmu/8000
+m=audio 5000 RTP/SAVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 1 --srtp-secure 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 RTP/AVP[\\s\\S]+a=rtpmap:0[\\s\\S]+m=audio [1-9]+[0-9]* RTP/SAVP[\\s\\S]+a=crypto"
+ ]
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("Prefer RTP/SAVP", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/331_srtp_prefer_rtp_avp.py b/pjsip-apps/src/test-pjsua/scripts-sendto/331_srtp_prefer_rtp_avp.py
new file mode 100644
index 00000000..e42d20bd
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/331_srtp_prefer_rtp_avp.py
@@ -0,0 +1,29 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# When SRTP is NOT enabled in pjsua, it should prefer to use
+# RTP/AVP media line if there are multiple m=audio lines
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=-
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 5000 RTP/SAVP 0
+a=crypto:1 aes_cm_128_hmac_sha1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+m=audio 4000 RTP/AVP 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200 --use-srtp 0"
+extra_headers = ""
+include = ["Content-Type: application/sdp", # response must include SDP
+ "m=audio 0 RTP/SAVP[\\s\\S]+m=audio [1-9]+[0-9]* RTP/AVP"
+ ]
+exclude = ["a=crypto"]
+
+sendto_cfg = sip.SendtoCfg("Prefer RTP/SAVP", pjsua_args, sdp, 200,
+ extra_headers=extra_headers,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/pjsip-apps/src/test-pjsua/scripts-sendto/999_asterisk_err.py b/pjsip-apps/src/test-pjsua/scripts-sendto/999_asterisk_err.py
new file mode 100644
index 00000000..580b46de
--- /dev/null
+++ b/pjsip-apps/src/test-pjsua/scripts-sendto/999_asterisk_err.py
@@ -0,0 +1,45 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+# http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2008-June/003426.html:
+#
+# Report in pjsip mailing list on 27/6/2008 that this message will
+# cause pjsip to respond with 500 and then second request will cause
+# segfault.
+complete_msg = \
+"""INVITE sip:5001@192.168.1.200:5060;transport=UDP SIP/2.0
+Via: SIP/2.0/UDP 192.168.1.11:5060;branch=z9hG4bK74a60ee5;rport
+From: \"A user\" <sip:66660000@192.168.1.11>;tag=as2858a32c
+To: <sip:5001@192.168.1.200:5060;transport=UDP>
+Contact: <sip:66660000@192.168.1.11>
+Call-ID: 0bc7612c665e875a4a46411442b930a6@192.168.1.11
+CSeq: 102 INVITE
+User-Agent: Asterisk PBX
+Max-Forwards: 70
+Date: Fri, 27 Jun 2008 08:46:47 GMT
+Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
+Supported: replaces
+Content-Type: application/sdp
+Content-Length: 285
+
+v=0
+o=root 4236 4236 IN IP4 192.168.1.11
+s=session
+c=IN IP4 192.168.1.11
+t=0 0
+m=audio 14390 RTP/AVP 0 3 8 101
+a=rtpmap:0 PCMU/8000
+a=rtpmap:3 GSM/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-16
+a=silenceSupp:off - - - -
+a=ptime:20
+a=sendrecv
+"""
+
+
+sendto_cfg = sip.SendtoCfg( "Asterisk 500", "--null-audio --auto-answer 200",
+ "", 200, complete_msg=complete_msg)
+