فهرست منبع

test/unit: create unit test 61

- tests Lua exported sdp_remove_line_by_prefix()
Mikko Lehto 8 سال پیش
والد
کامیت
892ab2737c
3فایلهای تغییر یافته به همراه205 افزوده شده و 0 حذف شده
  1. 29 0
      test/unit/61-message-sdp.sip
  2. 52 0
      test/unit/61.cfg
  3. 124 0
      test/unit/61.sh

+ 29 - 0
test/unit/61-message-sdp.sip

@@ -0,0 +1,29 @@
+MESSAGE sip:[email protected] SIP/2.0
+From: sip:[email protected];tag=45dfdf49
+To: sip:[email protected]
+Call-ID: 1172299593a
+CSeq: 1 MESSAGE
+Content-Type: application/sdp
+Max-Forwards: 2
+X-Info: test lua sr.sdpops.sdp_remove_line_by_prefix
+
+v=0
+o=FreeSWITCH 1447318678 1447318679 IN IP4 10.0.0.145
+s=FreeSWITCH
+c=IN IP4 10.0.0.145
+t=0 0
+m=audio 28504 RTP/AVP 96 101
+a=rtpmap:96 opus/48000/2
+a=fmtp:96 useinbandfec=1; maxaveragebitrate=14400; maxplaybackrate=8000
+a=rtpmap:101 telephone-event/48000
+a=fmtp:101 0-16
+a=ptime:20
+a=sendrecv
+a=rtcp:28505 IN IP4 10.0.0.145
+a=rtcp-fb:101 nack
+m=video 21992 RTP/SAVPF 100
+a=rtpmap:100 VP8/90000
+a=rtcp:21992 IN IP4 10.0.0.150
+a=rtcp-fb:100 ccm fir
+a=rtcp-fb:100 nack
+a=rtcp-fb:100 nack pli

+ 52 - 0
test/unit/61.cfg

@@ -0,0 +1,52 @@
+# ----------- global configuration parameters ------------------------
+debug=2
+fork=yes
+log_stderror=no
+children=1
+disable_tcp=yes
+listen=udp:127.0.0.1:5060
+auto_aliases=no
+alias=example.invalid
+# ------------------ module loading ----------------------------------
+loadpath "../../modules/"
+
+loadmodule "sl.so"
+loadmodule "pv.so"
+loadmodule "textops.so"
+loadmodule "textopsx.so"
+loadmodule "sdpops.so"
+loadmodule "app_lua.so"
+modparam("sl", "bind_tm", 0)
+modparam("app_lua", "register", "sdpops")
+
+request_route {
+	if ( is_present_hf("X-Case") ) {
+		if ( $hdr(X-Case) == '61-test0') {
+			if( !lua_dostring("sr.sdpops.sdp_remove_line_by_prefix([[a=rtcp]])") ) {
+				sl_send_reply(500,"Lua call failed retcode=$retcode ($hdr(X-Case))");
+				exit;
+			}
+		} else if ( $hdr(X-Case) == '61-test1') {
+			if( !lua_dostring("sr.sdpops.sdp_remove_line_by_prefix([[a=rtcp]], [[audio]])") ) {
+				sl_send_reply(500,"Lua call failed retcode=$retcode ($hdr(X-Case))");
+				exit;
+			}
+		} else if ( $hdr(X-Case) == '61-test2') {
+			if( !lua_dostring("sr.sdpops.sdp_remove_line_by_prefix([[a=rtcp]], [[video]])") ) {
+				sl_send_reply(500,"Lua call failed retcode=$retcode ($hdr(X-Case))");
+				exit;
+			}
+		} else {
+			sl_send_reply(500,"Unknown test case");
+			exit;
+		}
+
+ 		msg_apply_changes();
+		set_reply_body($rb,"application/sdp");
+		sl_send_reply(200,"OK");
+		exit;
+	}
+	sl_send_reply(500,"X-Case missing");
+	exit;
+}
+

+ 124 - 0
test/unit/61.sh

@@ -0,0 +1,124 @@
+#!/bin/sh
+# checks sdpops module function sdp_remove_line_by_prefix() via Lua
+#
+# Copyright (C) 2016 [email protected]
+#
+# This file is part of Kamailio, a free SIP server.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+. include/common
+. include/require.sh
+
+CFGFILE=61.cfg
+TMPFILE=$(mktemp -t kamailio-test.XXXXXXXXXX)
+SIPSAKOPTS="-H localhost -s sip:127.0.0.1:5060 -v"
+
+end_test() {
+	kill_kamailio
+	rm ${TMPFILE}
+	exit ${ret}
+}
+
+if ! (check_sipsak && check_kamailio && check_module "sdpops" && check_module "app_lua"); then
+	exit 0
+fi
+
+${BIN} -w ${RUN_DIR} -Y ${RUN_DIR} -P ${PIDFILE} -f ${CFGFILE} > /dev/null
+ret=$?
+
+sleep 1
+if [ "${ret}" -ne 0 ] ; then
+	end_test
+fi
+
+# manipulate whole SDP
+FILE="61-message-sdp.sip"
+TESTCASE="61-test0"
+TOTALBEFORE=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
+OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
+PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
+sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
+ret=$?
+if [ "${ret}" -ne 0 ] ; then
+	echo "sipsak returned ${ret}, aborting"
+	cat ${TMPFILE}
+else
+	TOTALAFTER=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
+	OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
+	PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
+	if [ ${PREFIXAFTER} -eq 0 ]; then
+		ret=0
+	else
+		ret=1
+		echo "test ${TESTCASE} failed"
+		echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
+		echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
+		end_test
+	fi
+fi
+
+# manipulate m=audio only
+FILE="61-message-sdp.sip"
+TESTCASE="61-test1"
+TOTALBEFORE=$(awk '/^m=audio/,/^m=video/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
+OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
+PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
+sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
+ret=$?
+if [ "${ret}" -ne 0 ] ; then
+	echo "sipsak returned ${ret}, aborting"
+	cat ${TMPFILE}
+else
+	TOTALAFTER=$(awk '/^m=audio/,/^m=video/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
+	OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
+	PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
+	if [ ${PREFIXAFTER} -eq 0 ]; then
+		ret=0
+	else
+		ret=1
+		echo "test ${TESTCASE} failed"
+		echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
+		echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
+		end_test
+	fi
+fi
+
+# manipulate m=video only
+FILE="61-message-sdp.sip"
+TESTCASE="61-test2"
+TOTALBEFORE=$(awk '/^m=video/,/^$/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
+OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
+PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
+sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
+ret=$?
+if [ "${ret}" -ne 0 ] ; then
+	echo "sipsak returned ${ret}, aborting"
+	cat ${TMPFILE}
+else
+	TOTALAFTER=$(awk '/^m=video/,/^$/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
+	OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
+	PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
+	if [ ${PREFIXAFTER} -eq 0 ]; then
+		ret=0
+	else
+		ret=1
+		echo "test ${TESTCASE} failed"
+		echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
+		echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
+		end_test
+	fi
+fi
+
+end_test
+