61.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #!/bin/sh
  2. # checks sdpops module function sdp_remove_line_by_prefix() via Lua
  3. #
  4. # Copyright (C) 2016 [email protected]
  5. #
  6. # This file is part of Kamailio, a free SIP server.
  7. #
  8. # Permission to use, copy, modify, and distribute this software for any
  9. # purpose with or without fee is hereby granted, provided that the above
  10. # copyright notice and this permission notice appear in all copies.
  11. #
  12. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  13. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  14. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  15. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  16. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  17. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  18. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19. . include/common
  20. . include/require.sh
  21. CFGFILE=61.cfg
  22. TMPFILE=$(mktemp -t kamailio-test.XXXXXXXXXX)
  23. SIPSAKOPTS="-H localhost -s sip:127.0.0.1:5060 -v"
  24. end_test() {
  25. kill_kamailio
  26. rm ${TMPFILE}
  27. exit ${ret}
  28. }
  29. if ! (check_sipsak && check_kamailio && check_module "sdpops" && check_module "app_lua"); then
  30. exit 0
  31. fi
  32. ${BIN} -L $MOD_DIR -Y $RUN_DIR -P $PIDFILE -w . -f ${CFGFILE} > /dev/null
  33. ret=$?
  34. sleep 1
  35. if [ "${ret}" -ne 0 ] ; then
  36. end_test
  37. fi
  38. # manipulate whole SDP
  39. FILE="61-message-sdp.sip"
  40. TESTCASE="61-test0"
  41. TOTALBEFORE=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
  42. OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  43. PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
  44. sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
  45. ret=$?
  46. if [ "${ret}" -ne 0 ] ; then
  47. echo "sipsak returned ${ret}, aborting"
  48. cat ${TMPFILE}
  49. else
  50. TOTALAFTER=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
  51. OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
  52. PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
  53. if [ ${PREFIXAFTER} -eq 0 ]; then
  54. ret=0
  55. else
  56. ret=1
  57. echo "test ${TESTCASE} failed"
  58. echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
  59. echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
  60. end_test
  61. fi
  62. fi
  63. # manipulate m=audio only
  64. FILE="61-message-sdp.sip"
  65. TESTCASE="61-test1"
  66. 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})
  67. OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  68. PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
  69. sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
  70. ret=$?
  71. if [ "${ret}" -ne 0 ] ; then
  72. echo "sipsak returned ${ret}, aborting"
  73. cat ${TMPFILE}
  74. else
  75. 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})
  76. OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
  77. PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
  78. if [ ${PREFIXAFTER} -eq 0 ]; then
  79. ret=0
  80. else
  81. ret=1
  82. echo "test ${TESTCASE} failed"
  83. echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
  84. echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
  85. end_test
  86. fi
  87. fi
  88. # manipulate m=video only
  89. FILE="61-message-sdp.sip"
  90. TESTCASE="61-test2"
  91. TOTALBEFORE=$(awk '/^m=video/,/^$/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
  92. OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  93. PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
  94. sipsak ${SIPSAKOPTS} -f ${FILE} --headers "X-Case: ${TESTCASE}\n" > ${TMPFILE}
  95. ret=$?
  96. if [ "${ret}" -ne 0 ] ; then
  97. echo "sipsak returned ${ret}, aborting"
  98. cat ${TMPFILE}
  99. else
  100. TOTALAFTER=$(awk '/^m=video/,/^$/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
  101. OTHERAFTER=$(echo ${TOTALAFTER}|cut -d+ -f1)
  102. PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
  103. if [ ${PREFIXAFTER} -eq 0 ]; then
  104. ret=0
  105. else
  106. ret=1
  107. echo "test ${TESTCASE} failed"
  108. echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 0"
  109. echo "found ${OTHERAFTER} other lines (was ${OTHERBEFORE} before)"
  110. end_test
  111. fi
  112. fi
  113. end_test