From e702ef2b93e5cbc8e1b2ea9d70b55bf342b4a626 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Wed, 26 May 2021 14:39:10 +0200 Subject: [PATCH] TT#91051 STIR scenarios * config_files.sh: manages files needed for config Change-Id: I68a782d70a3fd359691e87c3f7be066d985cbad0 --- bench.sh | 1 + bin/config_files.sh | 23 ++ run_tests.sh | 2 + scenarios/config.yml | 6 + .../invite-peerout-stir.scenarios.test.key | 5 + .../invite_peerout_stir/0001_test.yml.tt2 | 42 ++++ .../invite_peerout_stir/0003_test.yml.tt2 | 220 ++++++++++++++++++ .../invite_peerout_stir/0004_test.yml.tt2 | 54 +++++ .../invite_peerout_stir/0008_test.yml.tt2 | 26 +++ .../invite_peerout_stir/0010_test.yml.tt2 | 45 ++++ .../invite_peerout_stir/0011_test.yml.tt2 | 45 ++++ .../invite_peerout_stir/0013_test.yml.tt2 | 56 +++++ .../invite_peerout_stir/0016_test.yml.tt2 | 28 +++ .../invite_peerout_stir/cdr_test.yml.tt2 | 10 + .../invite_peerout_stir/media181sec.pcap | 1 + scenarios/invite_peerout_stir/peer.yml | 27 +++ scenarios/invite_peerout_stir/prefs.json.tt2 | 8 + scenarios/invite_peerout_stir/scenario.yml | 39 ++++ .../invite_peerout_stir/sipp_scenario00.xml | 146 ++++++++++++ .../sipp_scenario_responder00.xml | 78 +++++++ set_config.sh | 2 + 21 files changed, 864 insertions(+) create mode 100755 bin/config_files.sh create mode 100644 scenarios/invite-peerout-stir.scenarios.test.key create mode 100644 scenarios/invite_peerout_stir/0001_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0003_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0004_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0008_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0010_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0011_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0013_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/0016_test.yml.tt2 create mode 100644 scenarios/invite_peerout_stir/cdr_test.yml.tt2 create mode 120000 scenarios/invite_peerout_stir/media181sec.pcap create mode 100644 scenarios/invite_peerout_stir/peer.yml create mode 100644 scenarios/invite_peerout_stir/prefs.json.tt2 create mode 100644 scenarios/invite_peerout_stir/scenario.yml create mode 100644 scenarios/invite_peerout_stir/sipp_scenario00.xml create mode 100644 scenarios/invite_peerout_stir/sipp_scenario_responder00.xml diff --git a/bench.sh b/bench.sh index f963410d..068c570d 100755 --- a/bench.sh +++ b/bench.sh @@ -67,6 +67,7 @@ if ! "${SKIP_CONFIG}" ; then echo "add configuration for tests" ./bin/config_debug.pl -c 5 -g "${GROUP}" "${BASE_DIR}/config.yml" on ./bin/network_config.pl -g "${GROUP}" "${BASE_DIR}/config.yml" on + ./bin/config_files.sh "${GROUP}" ( cd /etc/ngcp-config || true ngcpcfg --summary-only apply "k-c-t ${GROUP} on" diff --git a/bin/config_files.sh b/bin/config_files.sh new file mode 100755 index 00000000..e553442d --- /dev/null +++ b/bin/config_files.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +GROUP=${1:-scenarios} +BASE_DIR="${BASE_DIR:-/usr/share/kamailio-config-tests}" + +if ! [ -d "${BASE_DIR}/${GROUP}" ]; then + echo "${BASE_DIR}/${GROUP} dir not found" >&2 + exit 1 +fi + +case ${GROUP} in + scenarios) + mkdir -p /etc/kamailio/stir/ + cp "${BASE_DIR}/${GROUP}/invite-peerout-stir.scenarios.test.key" \ + /etc/kamailio/stir/ + chown -R kamailio:kamailio /etc/kamailio/stir/ + echo "$(date) - Added stir file keys" + ;; + *) + echo "$(date) - Nothing to do here" + ;; +esac diff --git a/run_tests.sh b/run_tests.sh index a8e58032..c6f186e2 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -317,6 +317,8 @@ if ! "${SKIP_CONFIG}" ; then echo "$(date) - Exec pid_watcher with timeout[${TIMEOUT}]" ( timeout "${TIMEOUT}" "${BIN_DIR}/pid_watcher.py" ${PIDWATCH_OPTS} )& fi + echo "$(date) - Config files" + "${BIN_DIR}/config_files.sh" "${GROUP}" if ! ngcpcfg --summary-only apply "config debug on via kamailio-config-tests" ; then echo "$(date) - ngcp apply returned $?" echo "$(date) - Done[3]" diff --git a/scenarios/config.yml b/scenarios/config.yml index d2d0b077..ab23495f 100644 --- a/scenarios/config.yml +++ b/scenarios/config.yml @@ -1,3 +1,4 @@ +--- kamailio: proxy: presence: @@ -7,3 +8,8 @@ kamailio: - '112' - '110' - '118[0-9]{2}' + stir: + enable: 'yes' + domains: + - name: invite-peerout-stir.scenarios.test + private_key: /etc/kamailio/stir/invite-peerout-stir.scenarios.test.key diff --git a/scenarios/invite-peerout-stir.scenarios.test.key b/scenarios/invite-peerout-stir.scenarios.test.key new file mode 100644 index 00000000..e17b08ef --- /dev/null +++ b/scenarios/invite-peerout-stir.scenarios.test.key @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIA8ULOfMdcBabIvsBC/ER5EiNS6IFkmwEDbynYsMs5cIoAoGCCqGSM49 +AwEHoUQDQgAE+sGr3KgBC6sKrM0AeHboLuoxScvZlecYmNNCaKjF4SS+IkksYdcT +lF/cq1JxZb6AwIaBHlT2FqzGi0ydERMBHw== +-----END EC PRIVATE KEY----- diff --git a/scenarios/invite_peerout_stir/0001_test.yml.tt2 b/scenarios/invite_peerout_stir/0001_test.yml.tt2 new file mode 100644 index 00000000..aab6ff9c --- /dev/null +++ b/scenarios/invite_peerout_stir/0001_test.yml.tt2 @@ -0,0 +1,42 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - 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_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - '^INVITE sip:[% scenarios.0.responders.0.username %]@' + - 'Contact: sip:[% scenarios.0.username %]@' + - 'To: stir_pub_url): http://fake.url/pub.key + - start|ROUTE_DLG_MANAGE: + - return|ROUTE_DLG_MANAGE: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_GET_CALLER_CLI: + - return|ROUTE_GET_CALLER_CLI: + - start|ROUTE_GET_FORWARDER_CLI: + - return|ROUTE_GET_FORWARDER_CLI: + - start|ROUTE_CLIR: + - return|ROUTE_CLIR: + - start|ROUTE_CALLER_BLOCK_CLI: + - return|ROUTE_CALLER_BLOCK_CLI: + - start|ROUTE_CHECK_USERPROV_CLI: + - start|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_USERPROV_CLI: + - 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_CHECK_PBX: + - return|ROUTE_CHECK_PBX: + - start|ROUTE_INVITE_TO_EXT: + - start|ROUTE_PSTN: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_PSTN_SELECT_PEER: + $avp(lua_dlg_profile): ["outgoing"] + - start|ROUTE_CHECK_PEER_PROBE: + - return|ROUTE_CHECK_PEER_PROBE: + - start|ROUTE_CLEAR_PEER_OUT_PREF: + - return|ROUTE_CLEAR_PEER_OUT_PREF: + - start|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_PSTN_SELECT_PEER: + - start|ROUTE_OUTBOUND: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_invite_peerout_stir_host0.id %]", + "peer:[% peer_invite_peerout_stir_host0.id %]", + "outgoing" + ] + - start|ROUTE_SET_CALLER_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_SET_CALLER_DIALOG: + $avp(lua_dlg_profile): [ + "accountout:[% customer_test.id %]", + "userout:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "account:[% customer_test.id %]", + "user:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "totalaccountout:[% customer_test.id %]", + "totaluserout:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "totalaccount:[% customer_test.id %]", + "totaluser:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "total", + "relay", + "peerout:[% peer_invite_peerout_stir_host0.id %]", + "peer:[% peer_invite_peerout_stir_host0.id %]", + "outgoing" + ] + - start|ROUTE_ACC_CALLER: + - start|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - return|ROUTE_ACC_CALLER: + - start|ROUTE_ACC_CALLEE: + - start|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - return|ROUTE_ACC_CALLEE: + - start|ROUTE_ADD_AOC_HEADER: + - return|ROUTE_ADD_AOC_HEADER: + - start|BRANCH_ROUTE_SBC: + - start|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - return|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_SET_RUSER: + - return|ROUTE_SET_RUSER: + - start|ROUTE_BRANCH_ACC_RTP: + - return|ROUTE_BRANCH_ACC_RTP: + - 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: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_SET_CALLER_CLI: + - start|ROUTE_SET_CALLEE: + - start|ROUTE_STIR: + $x_fU: [% invite_peerout_stir_scenarios_test.testuser1002.phone_number %] + $x_fd: invite-peerout-stir.scenarios.test + - return|ROUTE_STIR: + - return|ROUTE_SET_CALLEE: + - start|ROUTE_ADD_CALLINFO: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - start|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - return|BRANCH_ROUTE_SBC: + # branch ?? + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: + $avp(lua_dlg_profile): [ + "accountout:[% customer_test.id %]", + "userout:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "account:[% customer_test.id %]", + "user:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "totalaccountout:[% customer_test.id %]", + "totaluserout:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "totalaccount:[% customer_test.id %]", + "totaluser:[% invite_peerout_stir_scenarios_test.testuser1002.uuid %]", + "total", + "relay", + "peerout:[% peer_invite_peerout_stir_host0.id %]", + "peer:[% peer_invite_peerout_stir_host0.id %]", + "outgoing" + ] +sip_in: + - '^INVITE sip:[% scenarios.0.responders.0.username %]@' + - 'Contact: sip:[% scenarios.0.username %]@' + - 'CSeq: 2 INVITE' + - 'Max-Forwards: 69' + - 'Content-Type: application/sdp' + - 'Proxy-Authorization: Digest username="[% scenarios.0.username %]"' +sip_out: + - [ + '^SIP/2.0 100 Trying', + 'CSeq: 2 INVITE', + 'From: ;alg=ES256;ppt=shaken', + 'P-Caller-UUID: [% invite_peerout_stir_scenarios_test.testuser1002.uuid %]', + 'P-Callee-UUID: 0', + 'P-Asserted-Identity: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Identity: [^;]+;info=;alg=ES256;ppt=shaken' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'P-Caller-UUID: [% invite_peerout_stir_scenarios_test.testuser1002.uuid %]' + - 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_peerout_stir_scenarios_test.testuser1002.phone_number %]' + - 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=\d+' + - 'P-D-Uri: sip:127.0.0.1:5060;received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %]%3blr%3btransport%3dudp' + - 'Content-Type: application/sdp' + - 'Contact: ' + - 'Content-Length:\s+\d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'INVITE sip:[% scenarios.0.responders.0.username %]@[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=udp SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-LB-Uptime: \d+', + 'Identity: [^;]+;info=;alg=ES256;ppt=shaken', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% invite_peerout_stir_scenarios_test.testuser1002.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_peerout_stir_scenarios_test.testuser1002.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=\d+', + 'P-D-Uri: sip:127.0.0.1:5060;received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %]%3blr%3btransport%3dudp', + 'Content-Type: application/sdp', + 'Contact: ', + 'Content-Length:\s+\d+', + ] diff --git a/scenarios/invite_peerout_stir/0008_test.yml.tt2 b/scenarios/invite_peerout_stir/0008_test.yml.tt2 new file mode 100644 index 00000000..486a3848 --- /dev/null +++ b/scenarios/invite_peerout_stir/0008_test.yml.tt2 @@ -0,0 +1,26 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - '^SIP/2.0 180 Ringing' + - 'CSeq: 2 INVITE' + - 'From: + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[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 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + [field1 file="caller.csv" line=0] + 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 + + ]]> + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + [routes] + CSeq: 2 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 3 BYE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + [routes] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + diff --git a/scenarios/invite_peerout_stir/sipp_scenario_responder00.xml b/scenarios/invite_peerout_stir/sipp_scenario_responder00.xml new file mode 100644 index 00000000..da77f415 --- /dev/null +++ b/scenarios/invite_peerout_stir/sipp_scenario_responder00.xml @@ -0,0 +1,78 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + 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 + + ]]> + + + + + + + + + + + Content-Length: [len] + + ]]> + + + + + + + diff --git a/set_config.sh b/set_config.sh index b713c6c8..a0089fd7 100755 --- a/set_config.sh +++ b/set_config.sh @@ -34,6 +34,8 @@ echo "$(date) - Setting config debug on" "${BIN_DIR}/config_debug.pl" -c 5 -g "${GROUP}" "${BASE_DIR}/config.yml" on echo "$(date) - Setting network config" "${BIN_DIR}/network_config.pl" -g "${GROUP}" "${BASE_DIR}/config.yml" on +echo "$(date) - Config files" +"${BIN_DIR}/config_files.sh" "${GROUP}" cd /etc/ngcp-config || exit 3 if ! ngcpcfg --summary-only apply "config debug on via kamailio-config-tests" ; then echo "$(date) - ngcpcfg apply returned $?"