TT#4110 Initial support for PBX scenarios

* run_test.sh: add hacks for pbx

* bin/pid_watcher.py: add --pbx parameter to control
  what services we need to check for.

* invite: simple call to an extenston from another PBX user
  same customer. WARNING!! do not use customer.test, that
  one is SIP only

* fix tap-test:
 - source/tests/test_check.py:34:1: E302 expected 2 blank lines, found 1
 - source/tests/test_check.py:96:54: E202 whitespace before '}'

* wrap-and-sort -sat

Change-Id: Iabb5139e70fd372088933fe9302b996148d38705
changes/33/8533/9
Victor Seva 10 years ago
parent 805d9d85fc
commit 407517a48a

@ -23,6 +23,7 @@ import os
import os.path
import pyinotify
import sys
import argparse
BASE_DIR = "/usr/share/kamailio-config-tests"
if 'BASE_DIR' in os.environ:
@ -87,6 +88,23 @@ class Handler(pyinotify.ProcessEvent):
# if watched.has_key(event.pathname):
# print event
parser = argparse.ArgumentParser(
description='watch some pids to detect restarts')
parser.add_argument('--pbx', dest='pbx', action='store_true',
help='pbx is enabled')
args = parser.parse_args()
if args.pbx:
watched_dirs += [
'/var/run/sems-pbx',
'/var/run/fastcgi',
]
services += [
'sems-pbx/sems-pbx.pid',
'fastcgi/ngcp-panel.pid',
]
logging.info("PID watcher started")
wm = pyinotify.WatchManager()
handler = Handler(watched=watched)

32
debian/control vendored

@ -2,25 +2,27 @@ Source: kamailio-config-tests
Section: Development
Priority: extra
Maintainer: Sipwise Development Team <support@sipwise.com>
Build-Depends: debhelper (>= 8.0.0)
Build-Depends:
debhelper (>= 8.0.0),
Standards-Version: 3.9.7
Homepage: http://www.sipwise.com/
Package: kamailio-config-tests
Architecture: all
Depends: curl,
libgraphviz-perl,
libjson-perl,
libtemplate-perl,
libtext-csv-perl,
libyaml-perl,
ngcp-provisioning-tools,
parallel,
python,
python-pyinotify,
python-yaml,
sip-tester ( >= 1:3.3-1~ ),
tcpdump,
${misc:Depends}
Depends:
curl,
libgraphviz-perl,
libjson-perl,
libtemplate-perl,
libtext-csv-perl,
libyaml-perl,
ngcp-provisioning-tools,
parallel,
python,
python-pyinotify,
python-yaml,
sip-tester ( >= 1:3.3-1~ ),
tcpdump,
${misc:Depends},
Description: Kamailio configuration tests
scripts and tests scenarios to check Kamailio configuration

1
debian/install vendored

@ -5,3 +5,4 @@ lib/ /usr/share/kamailio-config-tests/
run_tests.sh /usr/share/kamailio-config-tests/
scenarios/ /usr/share/kamailio-config-tests/
scenarios_lnp /usr/share/kamailio-config-tests/
scenarios_pbx /usr/share/kamailio-config-tests/

@ -89,6 +89,18 @@ if [ "${PROFILE}" != "CE" ] && [ "${PROFILE}" != "PRO" ]; then
exit 2
fi
if [ "$GROUP" = "scenarios_pbx" ] ; then
TIMEOUT=120
PIDWATCH_OPTS="--pbx"
# hack for pid_watcher ( sems-pbx was not active )
mkdir -p /var/run/sems-pbx/
touch /var/run/sems-pbx/sems-pbx.pid
chown -R sems-pbx:sems-pbx /var/run/sems-pbx/
else
TIMEOUT=60
PIDWATCH_OPTS=""
fi
echo "$(date) - Clean mem log dir"
rm -rf "${MLOG_DIR}"
mkdir -p "${MLOG_DIR}" "${LOG_DIR}"
@ -97,7 +109,8 @@ if [ -z $SKIP ]; then
echo "$(date) - Setting config debug on"
"${BIN_DIR}/config_debug.pl" -g "${GROUP}" on ${DOMAIN}
if [ "${PROFILE}" == "PRO" ]; then
( timeout 60 "${BIN_DIR}/pid_watcher.py" )&
echo "$(date) - Exec pid_watcher"
( timeout ${TIMEOUT} "${BIN_DIR}/pid_watcher.py" ${PIDWATCH_OPTS} )&
fi
if ! ngcpcfg apply "config debug on via kamailio-config-tests" ; then
echo "$(date) - ngcp apply returned $?"
@ -106,6 +119,7 @@ if [ -z $SKIP ]; then
exit 3
fi
if [ "${PROFILE}" == "PRO" ]; then
echo "$(date) - waiting for pid_watcher[$!] result"
if ! wait "$!" ; then
echo "error on apply config"
cfg_debug_off

@ -0,0 +1,7 @@
kamailio:
proxy:
allow_refer_method: 'yes'
presence:
enable: 'yes'
pbx:
enable: 'yes'

@ -0,0 +1,35 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_NET_INFO:
- return|ROUTE_NET_INFO:
- start|ROUTE_PRX_REQUEST:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- start|ROUTE_INVITE:
- start|ROUTE_LOAD_CALLEE_DOMAIN_PREF:
- start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF:
- return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF:
- return|ROUTE_LOAD_CALLEE_DOMAIN_PREF:
- start|ROUTE_FIND_CALLER:
- start|ROUTE_AUTH:
- exit|ROUTE_AUTH:
sip_in:
- '^INVITE'
- 'Contact: sip:testuser1002@'
- 'To: <sip:1003@'
- 'CSeq: 1 INVITE'
- 'Max-Forwards: 69'
- 'Content-Type: application/sdp'
sip_out:
- [
'^SIP/2.0 100 Trying',
'CSeq: 1 INVITE',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]
- [
'^SIP/2.0 407 Proxy Authentication Required',
'CSeq: 1 INVITE',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]

@ -0,0 +1,143 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_NET_INFO:
- return|ROUTE_NET_INFO:
- start|ROUTE_PRX_REQUEST:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- start|ROUTE_INVITE:
- start|ROUTE_LOAD_CALLEE_DOMAIN_PREF:
- start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF:
- return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF:
- return|ROUTE_LOAD_CALLEE_DOMAIN_PREF:
- start|ROUTE_FIND_CALLER:
- start|ROUTE_AUTH:
- start|ROUTE_AUTH_HELPER:
$fd: spce.test
$var(realm_user): testuser1002
$var(realm_domain): spce.test
- return|ROUTE_AUTH_HELPER:
$avp(orig_acc_caller_user): ['testuser1002']
$avp(orig_acc_caller_domain): ['spce.test']
- start|ROUTE_ADD_CALLINFO_REPLY:
- return|ROUTE_ADD_CALLINFO_REPLY:
- return|ROUTE_AUTH:
- return|ROUTE_FIND_CALLER:
- start|ROUTE_LOAD_CALLER_PREF:
- start|ROUTE_CLEAR_CALLER_PREF:
- return|ROUTE_CLEAR_CALLER_PREF:
- start|ROUTE_LOAD_CALLER_CONTRACT_PREF:
- return|ROUTE_LOAD_CALLER_CONTRACT_PREF:
- return|ROUTE_LOAD_CALLER_PREF:
- start|ROUTE_GET_CALLER_CLI:
- return|ROUTE_GET_CALLER_CLI:
- start|ROUTE_GET_FORWARDER_CLI:
- return|ROUTE_GET_FORWARDER_CLI:
- start|ROUTE_CHECK_USERPROV_CLI:
- start|ROUTE_CHECK_CLI_ALLOWED:
- return|ROUTE_CHECK_CLI_ALLOWED:
- return|ROUTE_CHECK_USERPROV_CLI:
- start|ROUTE_CLIR:
- return|ROUTE_CLIR:
- start|ROUTE_FIND_CALLEE:
- start|ROUTE_CLEAR_CALLEE_PREF:
- return|ROUTE_CLEAR_CALLEE_PREF:
- start|ROUTE_NCOS_CHECK:
- start|ROUTE_NCOS:
- return|ROUTE_NCOS:
- start|ROUTE_NCOS:
- return|ROUTE_NCOS:
- start|ROUTE_NCOS:
- return|ROUTE_NCOS:
- start|ROUTE_NCOS:
- return|ROUTE_NCOS:
- return|ROUTE_NCOS_CHECK:
- start|ROUTE_BLOCK_OUT:
- return|ROUTE_BLOCK_OUT:
- start|ROUTE_LOAD_CALLEE_PREF:
- start|ROUTE_LOAD_CALLEE_CONTRACT_PREF:
- return|ROUTE_LOAD_CALLEE_CONTRACT_PREF:
- start|ROUTE_SET_CALLEE_DIALOG:
- return|ROUTE_SET_CALLEE_DIALOG:
- start|ROUTE_BLOCK_IN:
- return|ROUTE_BLOCK_IN:
- start|ROUTE_ORDER_CF_MAP_ID:
- return|ROUTE_ORDER_CF_MAP_ID:
- return|ROUTE_LOAD_CALLEE_PREF:
- start|ROUTE_CHECK_PBX:
- return|ROUTE_CHECK_PBX:
- start|ROUTE_INVITE_TO_INT:
- start|ROUTE_OUTBOUND:
- start|ROUTE_SET_CALLER_DIALOG:
- return|ROUTE_SET_CALLER_DIALOG:
- start|ROUTE_ACC_CALLER:
- return|ROUTE_ACC_CALLER:
- start|ROUTE_ACC_CALLEE:
- return|ROUTE_ACC_CALLEE:
- start|BRANCH_ROUTE_SBC:
- start|ROUTE_LOAD_CALLEE_CONTRACT_PREF:
- return|ROUTE_LOAD_CALLEE_CONTRACT_PREF:
- start|ROUTE_SET_CALLEE_DIALOG:
- return|ROUTE_SET_CALLEE_DIALOG:
- start|ROUTE_BRANCH_ACC_RTP:
- return|ROUTE_BRANCH_ACC_RTP:
- start|ROUTE_SET_RUSER:
- return|ROUTE_SET_RUSER:
- start|ROUTE_FILTER_PRACK:
- return|ROUTE_FILTER_PRACK:
- start|ROUTE_PREPARE_SST:
- return|ROUTE_PREPARE_SST:
- start|ROUTE_PREPARE_MOH:
- return|ROUTE_PREPARE_MOH:
- start|ROUTE_SET_CALLER_CLI:
- start|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_PREPARE_CALLER_CLI:
- start|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_PREPARE_CALLER_CLI:
- start|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_PREPARE_CALLER_CLI:
- start|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_PREPARE_CALLER_CLI:
- start|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_PREPARE_CALLER_CLI:
- return|ROUTE_SET_CALLER_CLI:
- start|ROUTE_SET_CALLEE:
- return|ROUTE_SET_CALLEE:
- start|ROUTE_ADD_CALLINFO:
- return|ROUTE_ADD_CALLINFO:
- return|BRANCH_ROUTE_SBC:
- return|BRANCH_ROUTE_SBC:
- exit|ROUTE_OUTBOUND:
sip_in:
- '^INVITE'
- 'Contact: sip:testuser1002@'
- 'CSeq: 2 INVITE'
- 'Max-Forwards: 69'
- 'Content-Type: application/sdp'
- 'Proxy-Authorization: Digest username="testuser1002"'
sip_out:
- [
'^SIP/2.0 100 Trying',
'CSeq: 2 INVITE',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]
- [
'^SIP/2.0 101 Connecting',
'CSeq: 2 INVITE',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]
- [
'^INVITE sip:testuser1003@',
'CSeq: 2 INVITE',
'From: <sip:4311002@',
'To: <sip:1003@',
'Content-Type: application/sdp',
'P-Caller-UUID: \w+',
'P-Callee-UUID: \w+',
'P-Asserted-Identity: <sip:4311002@',
'P-Called-Party-ID: <sip:testuser1003@',
'P-App-Param: ;aleg_sst_enable=no;sst_enable=no',
'P-App-Name: sbc'
]

@ -0,0 +1,11 @@
flow:
- start|REPLY_ROUTE_NAT:
- exit|REPLY_ROUTE_NAT:
sip_in:
- '^SIP/2.0 180 Ringing'
- 'CSeq: 2 INVITE'
sip_out:
- [
'^SIP/2.0 180 Ringing',
'CSeq: 2 INVITE',
]

@ -0,0 +1,16 @@
flow:
- start|REPLY_ROUTE_NAT:
- 'start|dialog:start':
- 'return|dialog:start':
# branch ??
- 'return|dialog:start':
sip_in:
- '^SIP/2.0 200 OK'
- 'CSeq: 2 INVITE'
sip_out:
- [
'^SIP/2.0 200 OK',
'CSeq: 2 INVITE',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]

@ -0,0 +1,21 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_NET_INFO:
- return|ROUTE_NET_INFO:
- start|ROUTE_PRX_REQUEST:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- start|ROUTE_OUTBOUND:
- return|ROUTE_OUTBOUND:
sip_in:
- '^ACK sip:127.0.0.1:5080;prxroute=1 SIP/2.0'
- 'CSeq: 2 ACK'
- 'From: <sip:testuser1002@'
- 'To: <sip:1003@'
sip_out:
- [
'^ACK sip:127.0.0.1:5080;prxroute=1 SIP/2.0',
'CSeq: 2 ACK',
'From: <sip:4311002@',
'To: <sip:1003@'
]

@ -0,0 +1,42 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_NET_INFO:
- return|ROUTE_NET_INFO:
- start|ROUTE_PRX_REQUEST:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- 'start|dialog:end':
- 'return|dialog:end':
- 'return|dialog:end':
- start|ROUTE_STOP_RTPPROXY:
- start|ROUTE_RESTORE_CLUSTERSET:
- return|ROUTE_RESTORE_CLUSTERSET:
- return|ROUTE_STOP_RTPPROXY:
- start|ROUTE_OUTBOUND:
- exit|ROUTE_OUTBOUND:
sip_in:
- '^BYE sip:127.0.0.1:5080(;prxroute=1)? SIP/2.0'
- 'Contact: sip:testuser1002@'
- 'CSeq: 3 BYE'
- 'Max-Forwards: 69'
- 'Content-Length: 0'
- 'From: <sip:testuser1002@'
- 'To: <sip:1003@'
sip_out:
- [
'^SIP/2.0 100 Trying',
'CSeq: 3 BYE',
'Content-Length: 0',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]
- [
'^BYE sip:127.0.0.1:5080(;prxroute=1)? SIP/2.0',
'Contact: sip:testuser1002@',
'CSeq: 3 BYE',
'Max-Forwards: 68',
'Content-Length: 0',
'From: <sip:4311002@',
'To: <sip:1003@'
]

@ -0,0 +1,17 @@
flow:
- start|REPLY_ROUTE_NAT:
- exit|REPLY_ROUTE_NAT:
sip_in:
- '^SIP/2.0 200 OK'
- 'CSeq: 3 BYE'
- 'Content-Length: 0'
- 'From: <sip:4311002@'
- 'To: <sip:1003@'
sip_out:
- [
'^SIP/2.0 200 OK',
'CSeq: 3 BYE',
'Content-Length: 0',
'From: <sip:testuser1002@',
'To: <sip:1003@'
]

@ -0,0 +1,45 @@
test_uuid: invite
domains:
'spce.test':
reseller_id: 1
customers:
'customerpbx.test':
contacts:
- email: "customerpbx.test@spce.test"
reseller_id: 1
details:
status: 'active'
type: 'pbxaccount'
billing_profile_id: 1
reseller_id: 1
subscribers:
spce.test:
testuser1003:
customer: 'customerpbx.test'
password: testuser
cc: 43
ac: 1
sn: 1003
is_pbx_pilot: 1
pbx_extension: 1003
testuser1002:
customer: 'customerpbx.test'
password: testuser
cc: 43
ac: 1
sn: 1002
is_pbx_pilot: 0
pbx_extension: 1002
alias_numbers:
- cc: 34
ac: 96
sn: 5711941
scenarios:
- ip: 127.126.0.1
username: testuser1002
domain: spce.test
responders:
- ip: 127.1.0.1
username: testuser1003
domain: spce.test
register: yes

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<scenario name="Sipwise NGCP Benchmark UAC Caller">
<send start_rtd="1" start_rtd="2">
<![CDATA[
INVITE sip:[field0 file="callee.csv" line=0]@[field3 file="callee.csv" line=0] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: <sip:[field0 file="caller.csv"]@[field2 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field5 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]>
Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id]
CSeq: 1 INVITE
Contact: sip:[field0 file="caller.csv"]@[local_ip]:[local_port]
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=ptime:50
]]>
</send>
<recv response="100" rtd="1" optional="true">
</recv>
<recv response="407" rtd="2" auth="true"/>
<send>
<![CDATA[
ACK sip:[field0 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]:[remote_port] SIP/2.0
[last_Via:]
From: <sip:[field0 file="caller.csv"]@[field2 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field5 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]>[peer_tag_param]
Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id]
CSeq: 1 ACK
Contact: sip:[field0 file="caller.csv"]@[local_ip]:[local_port]
Max-Forwards: 70
Content-Length: 0
]]>
</send>
<pause milliseconds="500"/>
<send start_rtd="3">
<![CDATA[
INVITE sip:[field0 file="callee.csv" line=0]@[field3 file="callee.csv" line=0] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: <sip:[field0 file="caller.csv"]@[field2 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field5 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]>
Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id]
CSeq: 2 INVITE
Contact: sip:[field0 file="caller.csv"]@[local_ip]:[local_port]
Max-Forwards: 70
[field1 file="caller.csv"]
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=ptime:50
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<recv response="183" optional="true">
</recv>
<recv response="200" rrs="true" rtd="3">
</recv>
<send>
<![CDATA[
ACK [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: <sip:[field0 file="caller.csv"]@[field2 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field5 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]>[peer_tag_param]
Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id]
[routes]
CSeq: 2 ACK
Contact: sip:[field0 file="caller.csv"]@[local_ip]:[local_port]
Max-Forwards: 70
Content-Length: 0
]]>
</send>
<pause milliseconds="500"/>
<nop>
<action>
<exec play_pcap_audio="scenarios/media181sec.pcap"/>
</action>
</nop>
<pause milliseconds="1000"/>
<send start_rtd="4">
<![CDATA[
BYE [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: <sip:[field0 file="caller.csv"]@[field2 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field5 file="callee.csv" line=0]@[field3 file="callee.csv" line=0]>[peer_tag_param]
Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id]
CSeq: 3 BYE
Contact: sip:[field0 file="caller.csv"]@[local_ip]:[local_port]
[routes]
Max-Forwards: 70
Content-Length: 0
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="200" crlf="true" rtd="4">
</recv>
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200, 500, 1000"/>
<!-- <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/> -->
</scenario>

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" ?>
<scenario name="Sipwise NGCP Benchmark UAS Responder">
<recv request="INVITE" crlf="true" rtd="true">
</recv>
<send>
<![CDATA[
SIP/2.0 180 Ringing
[last_Via:]
[last_From:]
[last_To:];tag=[pid]SIPpTag01[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send>
<pause milliseconds="500"/>
<send>
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:];tag=[pid]SIPpTag01[call_number]
[last_Call-ID:]
[last_CSeq:]
[last_Record-Route:]
[last_Route:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=ptime:50
]]>
</send>
<recv request="ACK"
crlf="true">
</recv>
<recv request="BYE">
</recv>
<send>
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: [len]
]]>
</send>
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>

@ -0,0 +1 @@
../scenarios/media181sec.pcap

@ -0,0 +1 @@
../scenarios/templates/

@ -31,6 +31,7 @@ from check import load_json, load_yaml
not_ok = re.compile('^not ok.*', re.MULTILINE)
class TestXAvp(unittest.TestCase):
def setUp(self):
@ -93,7 +94,7 @@ class TestCheckFlowVars(unittest.TestCase):
{'R1': {'$xavp(v0)': [{'k0': [1, 2]}]}},
]
self.check_ko = [
{'R0': {'$xavp(v0)': [{'k0': ['a', 'b']}] }},
{'R0': {'$xavp(v0)': [{'k0': ['a', 'b']}]}},
]
self.scen_ko = [
{'R0': {'$xavp(v0[0]=>k0[*])': ['a']}},

Loading…
Cancel
Save