diff --git a/scenarios/invite_record_call/0003_test.yml.tt2 b/scenarios/invite_record_call/0003_test.yml.tt2 deleted file mode 100644 index 83287ae4..00000000 --- a/scenarios/invite_record_call/0003_test.yml.tt2 +++ /dev/null @@ -1,42 +0,0 @@ -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' - - 'Contact: ]+)?>' - - 'To: ;tag=[\w-]+' - - 'To: ' - - 'CSeq: \d+ INVITE' - - 'P-LB-Uptime: \d+' - - 'P-Asserted-Identity: ' - - 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]' - - 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]' - - 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=[% scenarios.0.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1003.phone_number %]' - - 'P-D-Uri: sip:lb@127.0.0.1;lr;(received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];)?socket=sip:[% server_ip %]:5060' + - '^INVITE' + - 'Contact: ]+)?>' + - 'To: ' - - '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', + '^SIP/2.0 100 Trying', + 'CSeq: 1 INVITE', + 'From: ;tag=[\w-]+', - 'To: ', - 'CSeq: \d+ INVITE', - 'P-LB-Uptime: \d+', - 'P-Asserted-Identity: ', - 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', - 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', - 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=[% scenarios.0.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1003.phone_number %]', - 'P-D-Uri: sip:lb@127.0.0.1;lr;(received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];)?socket=sip:[% server_ip %]:5060', - 'Content-Type: application/sdp', - 'Contact: ', - 'Content-Length:\s+\d+', + '^SIP/2.0 407 Proxy Authentication Required', + 'CSeq: 1 INVITE', + 'From: ]+)?>' - 'CSeq: 2 INVITE' + - 'Max-Forwards: 69' + - 'Content-Type: application/sdp' + - 'Proxy-Authorization: Digest username="[% scenarios.0.username %]"' sip_out: - [ - '^SIP/2.0 180 Ringing', + '^SIP/2.0 100 Trying', + 'CSeq: 2 INVITE', + 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]' + - 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]' + - 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=[% scenarios.0.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1003.phone_number %]' + - 'P-D-Uri: sip:lb@127.0.0.1;lr;(received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];)?socket=sip:[% server_ip %]:5060' + - 'Content-Type: application/sdp' + - 'Contact: ' + - 'Content-Length:\s+\d+' sip_out: - [ - '^ACK sip:127.0.0.1:5080;prxroute=1 SIP/2.0', - 'CSeq: 2 ACK', - '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 %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.0.ip %];port=[% scenarios.0.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.0.responders.0.ip %];port=[% scenarios.0.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1003.phone_number %]', + 'P-D-Uri: sip:lb@127.0.0.1;lr;(received=sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];)?socket=sip:[% server_ip %]:5060', + 'Content-Type: application/sdp', + 'Contact: ', + 'Content-Length:\s+\d+', ] diff --git a/scenarios/invite_record_call/0017_test.yml.tt2 b/scenarios/invite_record_call/0017_test.yml.tt2 index 48c09151..4ad98795 100644 --- a/scenarios/invite_record_call/0017_test.yml.tt2 +++ b/scenarios/invite_record_call/0017_test.yml.tt2 @@ -1,53 +1,22 @@ flow: - - start|DEFAULT_ROUTE: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: - 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|dialog:end: - - return|dialog:end: - $avp(lua_dlg_profile): None - - start|ROUTE_STOP_RTPPROXY: - - start|ROUTE_RESTORE_CLUSTERSET: - - return|ROUTE_RESTORE_CLUSTERSET: - - return|ROUTE_STOP_RTPPROXY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: - start|ROUTE_PREPARE_UA: - return|ROUTE_PREPARE_UA: - - start|ROUTE_OUTBOUND: - - start|DEFAULT_SEND: - - exit|DEFAULT_SEND: + - start|REPLY_ROUTE_NAT_CONTINUE: - start|ROUTE_EXIT: - start|ROUTE_RUNTIME: - return|ROUTE_RUNTIME: - exit|ROUTE_EXIT: sip_in: - - '^BYE sip:127.0.0.1:5080(;prxroute=1)? SIP/2.0' - - 'Contact: ]+)?>' - - 'CSeq: 3 BYE' - - 'Max-Forwards: 69' - - 'Content-Length: 0' - - 'From: ]+)?>', - 'CSeq: 3 BYE', - 'Max-Forwards: 68', - 'Content-Length: 0', - 'From: ]+)?>' + - 'CSeq: 3 BYE' + - 'Max-Forwards: 69' + - 'Content-Length: 0' + - 'From: ]+)?>', + 'CSeq: 3 BYE', + 'Max-Forwards: 68', + 'Content-Length: 0', + 'From: ]+)?>' - - 'CSeq: 2 INVITE' - - 'Max-Forwards: 69' + - 'INVITE sip:[% scenarios.1.responders.0.username %]@invite-record-call.scenarios.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Proxy-Authorization: Digest username="[% scenarios.0.username %]",realm="invite-record-call.scenarios.test",uri="sip:[% server_ip %]:5060",nonce="[^"]+",response="[^"]+",algorithm=MD5' - 'Content-Type: application/sdp' - - 'Proxy-Authorization: Digest username="[% scenarios.0.username %]"' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: [% scenarios.0.ip %]' + - 'P-NGCP-Src-Port: [% scenarios.1.port %]' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:[% server_ip %]:5060' + - 'P-LB-Uptime:\s+\d+' + - 'P-NGCP-Src-Nat: 1' + - 'v=0' + - 's=-' + - 't=0 0' + - 'm=audio [% scenarios.1.mport %] RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=ptime:50' sip_out: - [ - '^SIP/2.0 100 Trying', - 'CSeq: 2 INVITE', - 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', ] - [ - '^SIP/2.0 101 Connecting', - 'CSeq: 2 INVITE', - 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1002@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.1.ip %];port=[% scenarios.1.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', ] - [ - '^INVITE sip:pre_announce@app.local', - 'CSeq: 2 INVITE', - 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: ', 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime:\s+\d+', + 'P-App-Param: force_early_announce=0;audio_id=\d*;audio2_id=\d*;audio3_id=\d*;reply_180=no', + 'P-App-Name: pre_announce', 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', - 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1003.uuid %]', - 'P-App-Param: force_early_announce=0;audio_id=;audio2_id=;audio3_id=[0-9]+;reply_180=no', - 'P-App-Name: pre_announce' + 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.1.ip %];port=[% scenarios.1.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=127.0.0.1;port=5080;primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'v=0', + 's=-', + 't=0 0', + 'm=audio \d+ RTP/AVP 8 96', + 'a=rtpmap:8 PCMA/8000', + 'a=rtpmap:96 telephone-event/8000', + 'a=fmtp:96 0-15', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', ] diff --git a/scenarios/invite_record_call/0030_test.yml.tt2 b/scenarios/invite_record_call/0030_test.yml.tt2 new file mode 100644 index 00000000..6848f6ed --- /dev/null +++ b/scenarios/invite_record_call/0030_test.yml.tt2 @@ -0,0 +1,51 @@ +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_RTPENGINE: + - return|REPLY_ROUTE_RTPENGINE: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 183 Progress' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'v=0' + - 's=sems' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8 96' + - 'a=rtpmap:8 PCMA/8000' + - 'a=rtpmap:96 telephone-event/8000' + - 'a=fmtp:96 0-15' + - 'a=sendrecv' +sip_out: + - [ + 'SIP/2.0 183 Progress', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'v=0', + 's=sems', + 't=0 0', + 'm=audio \d+ RTP/AVP 8', + 'a=rtpmap:8 PCMA/8000', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', + ] diff --git a/scenarios/invite_record_call/0031_test.yml.tt2 b/scenarios/invite_record_call/0031_test.yml.tt2 new file mode 100644 index 00000000..f39d5b1c --- /dev/null +++ b/scenarios/invite_record_call/0031_test.yml.tt2 @@ -0,0 +1,143 @@ +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: + - start|FAILURE_ROUTE_PRE_ANNOUNCE: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_CALLEE_DISPATCH: + - start|ROUTE_INVITE_TO_INT: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CF_CFU: + - return|ROUTE_CF_CFU: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_LOCATIONS: + - start|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - return|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - start|ROUTE_OUTBOUND: + - 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_LOAD_CALLEE_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - start|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLEE_DIALOG_BASE: + - return|ROUTE_SET_CALLEE_DIALOG_BASE: + - start|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG: + - 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: + $var(rtpp_flags): "record-call" + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - start|ROUTE_PREPARE_SST: + - start|ROUTE_REMOVE_TIMER_SUPP_REQ: + - return|ROUTE_REMOVE_TIMER_SUPP_REQ: + - 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: + - 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: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 301 Message Ended' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' +sip_out: + - [ + 'ACK sip:pre_announce@app.local SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length:\s+0', + ] + - [ + 'INVITE sip:[% scenarios.1.responders.0.username %]@[% scenarios.1.responders.0.ip %]:[% scenarios.1.responders.0.port %] SIP/2.0', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime:\s+\d+', + 'P-App-Param: ;calltimer=21600;aleg_sst_enable=no;sst_enable=no;hold_alter_b2b_bleg=no;hold_alter_b2b_aleg=no;fast_ack=no', + 'P-App-Name: sbc', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', + 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Called-Party-ID: ', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.1.ip %];port=[% scenarios.1.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.1.responders.0.ip %];port=[% scenarios.1.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-D-Uri: sip:lb@127.0.0.1;lr;received=sip:[% scenarios.1.responders.0.ip %]:[% scenarios.1.responders.0.port %];socket=sip:[% server_ip %]:5060', + 'P-Proxy-Uri: sip:127.0.0.1:5062', + 'v=0', + 's=-', + 't=0 0', + 'm=audio \d+ RTP/AVP 8', + 'a=rtpmap:8 PCMA/8000', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', + ] diff --git a/scenarios/invite_record_call/0039_test.yml.tt2 b/scenarios/invite_record_call/0039_test.yml.tt2 new file mode 100644 index 00000000..c8467401 --- /dev/null +++ b/scenarios/invite_record_call/0039_test.yml.tt2 @@ -0,0 +1,75 @@ +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: + - start|tm:branch-failure:local: + - return|tm:branch-failure:local: + - start|FAILURE_ROUTE_LOCAL: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY_BRANCH: + $var(rtpp_flags): "discard-recording" + - start|ROUTE_CF_CFB: + - return|ROUTE_CF_CFB: + - start|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - return|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - start|ROUTE_EARLY_REJECT: + - start|ROUTE_ADD_CALLINFO_REPLY: + - 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_REPLY: + - start|ROUTE_LOCAL_REPLY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|dialog:failed: + - return|dialog:failed: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 486 Busy Here' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' +sip_out: + - [ + 'ACK sip:[% scenarios.1.responders.0.username %]@[% scenarios.1.responders.0.ip %]:[% scenarios.1.responders.0.port %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length:\s+0', + ] + - [ + 'SIP/2.0 486 Busy Here', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1002@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.1.ip %];port=[% scenarios.1.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1002.uuid %]', + 'P-Callee-Uuid: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.1.ip %];port=[% scenarios.1.port %];primary=[% invite_record_call_scenarios_test.testuser1002.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.1.responders.0.ip %];port=[% scenarios.1.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] diff --git a/scenarios/invite_record_call/0043_test.yml.tt2 b/scenarios/invite_record_call/0043_test.yml.tt2 new file mode 100644 index 00000000..41d3fd3e --- /dev/null +++ b/scenarios/invite_record_call/0043_test.yml.tt2 @@ -0,0 +1,259 @@ +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_AUTH_HELPER: + - return|ROUTE_AUTH_HELPER: + - start|ROUTE_ADD_CALLINFO_REPLY: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - 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_CHECK_UA: + - return|ROUTE_CHECK_UA: + - start|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_PREF: + - 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_DETECT_LOOP: + - return|ROUTE_DETECT_LOOP: + - start|ROUTE_CLEAR_CALLEE_PREF: + - return|ROUTE_CLEAR_CALLEE_PREF: + - start|ROUTE_LOAD_CALLEE_PREF: + - start|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - start|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLEE_DIALOG_BASE: + - return|ROUTE_SET_CALLEE_DIALOG_BASE: + - start|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_BLOCK_IN: + - return|ROUTE_BLOCK_IN: + - return|ROUTE_LOAD_CALLEE_PREF: + - start|ROUTE_NCOS_CHECK: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_CHECK: + - start|ROUTE_BLOCK_OUT: + - return|ROUTE_BLOCK_OUT: + - start|ROUTE_CHECK_PBX: + - return|ROUTE_CHECK_PBX: + - start|ROUTE_CALLEE_DISPATCH: + - start|ROUTE_INVITE_TO_INT: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CF_CFU: + - return|ROUTE_CF_CFU: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_LOCATIONS: + - start|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - return|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - start|ROUTE_OUTBOUND: + - start|ROUTE_SET_CALLER_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLER_DIALOG_TOTAL: + - return|ROUTE_SET_CALLER_DIALOG_TOTAL: + - start|ROUTE_SET_CALLER_DIALOG_BASE: + - return|ROUTE_SET_CALLER_DIALOG_BASE: + - return|ROUTE_SET_CALLER_DIALOG: + - 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_LOAD_CALLEE_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - start|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLEE_DIALOG_BASE: + - return|ROUTE_SET_CALLEE_DIALOG_BASE: + - start|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG: + - 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: + $var(rtpp_flags): "record-call" + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - start|ROUTE_PREPARE_SST: + - start|ROUTE_REMOVE_TIMER_SUPP_REQ: + - return|ROUTE_REMOVE_TIMER_SUPP_REQ: + - 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: + - 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: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:[% scenarios.2.responders.0.username %]@invite-record-call.scenarios.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Proxy-Authorization: Digest username="[% scenarios.1.responders.0.username %]",realm="invite-record-call.scenarios.test",uri="sip:[% server_ip %]:5060",nonce="[^"]+",response="[^"]+",algorithm=MD5' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: [% scenarios.0.ip %]' + - 'P-NGCP-Src-Port: [% scenarios.2.port %]' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:[% server_ip %]:5060' + - 'P-LB-Uptime:\s+\d+' + - 'P-NGCP-Src-Nat: 1' + - 'v=0' + - 'o=user1 \d+ \d+ IN IP4 [% scenarios.0.ip %]' + - 's=-' + - 'c=IN IP4 [% scenarios.0.ip %]' + - 't=0 0' + - 'm=audio [% scenarios.2.mport %] RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=ptime:50' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] + - [ + 'SIP/2.0 101 Connecting', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1004@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.2.ip %];port=[% scenarios.2.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] + - [ + 'INVITE sip:[% scenarios.2.responders.0.username %]@[% scenarios.2.responders.0.ip %]:[% scenarios.2.responders.0.port %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime:\s+\d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1005.uuid %]', + 'P-Called-Party-ID: ', + 'P-App-Param: ;calltimer=21600;aleg_sst_enable=no;sst_enable=no;hold_alter_b2b_bleg=no;hold_alter_b2b_aleg=no;fast_ack=no;a_park_domain=[% customer_test.id %];b_park_domain=[% customer_test.id %]', + 'P-App-Name: sbc', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.2.ip %];port=[% scenarios.2.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.2.responders.0.ip %];port=[% scenarios.2.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1005.phone_number %]', + 'P-D-Uri: sip:lb@[% server_ip %];lr;received=sip:[% scenarios.2.responders.0.ip %]:[% scenarios.2.responders.0.port %];socket=sip:[% server_ip %]:5060', + 'P-Proxy-Uri: sip:[% server_ip %]:5062', + 'v=0', + 's=-', + 't=0 0', + 'm=audio \d+ RTP/AVP 8', + 'a=rtpmap:8 PCMA/8000', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', + ] diff --git a/scenarios/invite_record_call/0051_test.yml.tt2 b/scenarios/invite_record_call/0051_test.yml.tt2 new file mode 100644 index 00000000..d1415a4d --- /dev/null +++ b/scenarios/invite_record_call/0051_test.yml.tt2 @@ -0,0 +1,75 @@ +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: + - start|tm:branch-failure:local: + - return|tm:branch-failure:local: + - start|FAILURE_ROUTE_LOCAL: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY_BRANCH: + $var(rtpp_flags): "discard-recording" + - start|ROUTE_CF_CFB: + - return|ROUTE_CF_CFB: + - start|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - return|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - start|ROUTE_EARLY_REJECT: + - start|ROUTE_ADD_CALLINFO_REPLY: + - 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_REPLY: + - start|ROUTE_LOCAL_REPLY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|dialog:failed: + - return|dialog:failed: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 486 Busy Here' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' +sip_out: + - [ + 'ACK sip:[% scenarios.2.responders.0.username %]@[% scenarios.2.responders.0.ip %]:[% scenarios.2.responders.0.port %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length:\s+0', + ] + - [ + 'SIP/2.0 486 Busy Here', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1004@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.2.ip %];port=[% scenarios.2.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Callee-Uuid: [% invite_record_call_scenarios_test.testuser1005.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.2.ip %];port=[% scenarios.2.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.2.responders.0.ip %];port=[% scenarios.2.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1005.phone_number %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] diff --git a/scenarios/invite_record_call/0055_test.yml.tt2 b/scenarios/invite_record_call/0055_test.yml.tt2 new file mode 100644 index 00000000..0cb4a6b1 --- /dev/null +++ b/scenarios/invite_record_call/0055_test.yml.tt2 @@ -0,0 +1,220 @@ +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_AUTH_HELPER: + - return|ROUTE_AUTH_HELPER: + - start|ROUTE_ADD_CALLINFO_REPLY: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - 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_CHECK_UA: + - return|ROUTE_CHECK_UA: + - start|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_PREF: + - 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_DETECT_LOOP: + - return|ROUTE_DETECT_LOOP: + - start|ROUTE_CLEAR_CALLEE_PREF: + - return|ROUTE_CLEAR_CALLEE_PREF: + - start|ROUTE_LOAD_CALLEE_PREF: + - start|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - start|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLEE_DIALOG_BASE: + - return|ROUTE_SET_CALLEE_DIALOG_BASE: + - start|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_BLOCK_IN: + - return|ROUTE_BLOCK_IN: + - return|ROUTE_LOAD_CALLEE_PREF: + - start|ROUTE_NCOS_CHECK: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - start|ROUTE_NCOS: + - return|ROUTE_NCOS: + - start|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_SET: + - return|ROUTE_NCOS_CHECK: + - start|ROUTE_BLOCK_OUT: + - return|ROUTE_BLOCK_OUT: + - start|ROUTE_CHECK_PBX: + - return|ROUTE_CHECK_PBX: + - start|ROUTE_CALLEE_DISPATCH: + - start|ROUTE_INVITE_TO_INT: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CF_CFU: + - return|ROUTE_CF_CFU: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_LOCATIONS: + - start|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - return|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - start|ROUTE_PRE_ANNOUNCE: + - start|ROUTE_LOAD_APPSRV: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_LOAD_APPSRV: + - start|ROUTE_OUTBOUND: + - start|ROUTE_SET_CALLER_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLER_DIALOG_TOTAL: + - return|ROUTE_SET_CALLER_DIALOG_TOTAL: + - start|ROUTE_SET_CALLER_DIALOG_BASE: + - return|ROUTE_SET_CALLER_DIALOG_BASE: + - return|ROUTE_SET_CALLER_DIALOG: + - start|BRANCH_ROUTE_NO_SBC: + - start|ROUTE_BRANCH_ACC_RTP: + - return|ROUTE_BRANCH_ACC_RTP: + $var(rtpp_flags): "record-call" + - start|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - return|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - 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_NO_SBC: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:[% scenarios.3.responders.0.username %]@invite-record-call.scenarios.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Proxy-Authorization: Digest username="[% scenarios.1.responders.0.username %]",realm="invite-record-call.scenarios.test",uri="sip:[% server_ip %]:5060",nonce="[^"]+",response="[^"]+",algorithm=MD5' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: [% scenarios.0.ip %]' + - 'P-NGCP-Src-Port: [% scenarios.3.port %]' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:[% server_ip %]:5060' + - 'P-LB-Uptime:\s+\d+' + - 'P-NGCP-Src-Nat: 1' + - 'v=0' + - 'o=user1 \d+ \d+ IN IP4 [% scenarios.0.ip %]' + - 's=-' + - 'c=IN IP4 [% scenarios.0.ip %]' + - 't=0 0' + - 'm=audio [% scenarios.3.mport %] RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=ptime:50' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] + - [ + 'SIP/2.0 101 Connecting', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1004@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.3.ip %];port=[% scenarios.3.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] + - [ + 'INVITE sip:pre_announce@app.local SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime:\s+\d+', + 'P-App-Param: force_early_announce=0;audio_id=[0-9]*;audio2_id=[0-9]*;audio3_id=[0-9]*;reply_180=no', + 'P-App-Name: pre_announce', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1006.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.3.ip %];port=[% scenarios.3.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=127.0.0.1;port=5080;primary=[% invite_record_call_scenarios_test.testuser1006.phone_number %]', + 'v=0', + 'o=user1 53655765 2353687637 IN IP4 192.168.8.180', + 's=-', + 'c=IN IP4 192.168.8.180', + 't=0 0', + 'm=audio \d+ RTP/AVP 8 96', + 'a=rtpmap:8 PCMA/8000', + 'a=rtpmap:96 telephone-event/8000', + 'a=fmtp:96 0-15', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', + ] diff --git a/scenarios/invite_record_call/0057_test.yml.tt2 b/scenarios/invite_record_call/0057_test.yml.tt2 new file mode 100644 index 00000000..b71f7b2c --- /dev/null +++ b/scenarios/invite_record_call/0057_test.yml.tt2 @@ -0,0 +1,147 @@ +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: + - start|FAILURE_ROUTE_PRE_ANNOUNCE: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY_BRANCH: + $var(rtpp_flags): "^((?!discard-recording).)*$" + - start|ROUTE_CALLEE_DISPATCH: + - start|ROUTE_INVITE_TO_INT: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CF_CFU: + - return|ROUTE_CF_CFU: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_LOCATIONS: + - start|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - return|ROUTE_LOOKUP_SUBSCRIBER_LOCATIONS: + - start|ROUTE_OUTBOUND: + - 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_LOAD_CALLEE_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLEE_CONTRACT_PREF: + - start|ROUTE_SET_CALLEE_DIALOG: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_SET_CALLEE_DIALOG_BASE: + - return|ROUTE_SET_CALLEE_DIALOG_BASE: + - start|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG_TOTAL: + - return|ROUTE_SET_CALLEE_DIALOG: + - 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: + $var(rtpp_flags): "record-call" + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - start|ROUTE_PREPARE_SST: + - start|ROUTE_REMOVE_TIMER_SUPP_REQ: + - return|ROUTE_REMOVE_TIMER_SUPP_REQ: + - 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: + - 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: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 301 Message Ended' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' +sip_out: + - [ + 'ACK sip:pre_announce@app.local SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length:\s+0', + ] + - [ + 'INVITE sip:[% scenarios.3.responders.0.username %]@[% scenarios.3.responders.0.ip %]:[% scenarios.3.responders.0.port %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime:\s+\d+', + 'P-App-Param: ;calltimer=21600;aleg_sst_enable=no;sst_enable=no;hold_alter_b2b_bleg=no;hold_alter_b2b_aleg=no;fast_ack=no', + 'P-App-Name: sbc', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Callee-UUID: [% invite_record_call_scenarios_test.testuser1006.uuid %]', + 'P-Called-Party-ID: ', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.3.ip %];port=[% scenarios.3.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.3.responders.0.ip %];port=[% scenarios.3.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1006.phone_number %]', + 'P-D-Uri: sip:lb@[% server_ip %];lr;received=sip:[% scenarios.3.responders.0.ip %]:[% scenarios.3.responders.0.port %];socket=sip:[% server_ip %]:5060', + 'P-Proxy-Uri: sip:[% server_ip %]:5062', + 'v=0', + 'o=user1 53655765 2353687637 IN IP4 192.168.8.180', + 's=-', + 'c=IN IP4 192.168.8.180', + 't=0 0', + 'm=audio \d+ RTP/AVP 8', + 'a=rtpmap:8 PCMA/8000', + 'a=sendrecv', + 'a=rtcp:\d+', + 'a=ptime:50', + ] diff --git a/scenarios/invite_record_call/0065_test.yml.tt2 b/scenarios/invite_record_call/0065_test.yml.tt2 new file mode 100644 index 00000000..75c730eb --- /dev/null +++ b/scenarios/invite_record_call/0065_test.yml.tt2 @@ -0,0 +1,75 @@ +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: + - start|tm:branch-failure:local: + - return|tm:branch-failure:local: + - start|FAILURE_ROUTE_LOCAL: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_STOP_RTPPROXY_BRANCH: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY_BRANCH: + $var(rtpp_flags): "discard-recording" + - start|ROUTE_CF_CFB: + - return|ROUTE_CF_CFB: + - start|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - return|ROUTE_CODES_ANNOUNCEMENTS_MAPPING: + - start|ROUTE_EARLY_REJECT: + - start|ROUTE_ADD_CALLINFO_REPLY: + - 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_REPLY: + - start|ROUTE_LOCAL_REPLY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|dialog:failed: + - return|dialog:failed: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 486 Busy Here' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' +sip_out: + - [ + 'ACK sip:[% scenarios.3.responders.0.username %]@[% scenarios.3.responders.0.ip %]:[% scenarios.3.responders.0.port %] SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length:\s+0', + ] + - [ + 'SIP/2.0 486 Busy Here', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:[% server_ip %]:5060', + 'P-NGCP-Auth-IP: [% scenarios.0.ip %]', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1004@invite-record-call.scenarios.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.3.ip %];port=[% scenarios.3.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-Caller-UUID: [% invite_record_call_scenarios_test.testuser1004.uuid %]', + 'P-Callee-Uuid: [% invite_record_call_scenarios_test.testuser1006.uuid %]', + 'P-NGCP-Caller-Info: ;ip=[% scenarios.3.ip %];port=[% scenarios.3.port %];primary=[% invite_record_call_scenarios_test.testuser1004.phone_number %]', + 'P-NGCP-Callee-Info: ;ip=[% scenarios.3.responders.0.ip %];port=[% scenarios.3.responders.0.port %];primary=[% invite_record_call_scenarios_test.testuser1006.phone_number %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length:\s+0', + ] diff --git a/scenarios/invite_record_call/cdr_test.yml.tt2 b/scenarios/invite_record_call/cdr_test.yml.tt2 index 9f702e32..4ac0ad51 100644 --- a/scenarios/invite_record_call/cdr_test.yml.tt2 +++ b/scenarios/invite_record_call/cdr_test.yml.tt2 @@ -7,4 +7,31 @@ cdr: destination_user_dialed: '[% scenarios.0.responders.0.username %]' call_type: 'call' call_status: 'ok' - call_code: '200' \ No newline at end of file + call_code: '200' + - source_user: '[% scenarios.1.username %]' + source_domain: 'invite-record-call.scenarios.test' + source_cli: '[% invite_record_call_scenarios_test.testuser1002.phone_number %]' + destination_user: '[% scenarios.1.responders.0.username %]' + destination_domain: 'invite-record-call.scenarios.test' + destination_user_dialed: '[% scenarios.1.responders.0.username %]' + call_type: 'call' + call_status: 'busy' + call_code: '486' + - source_user: '[% scenarios.2.username %]' + source_domain: 'invite-record-call.scenarios.test' + source_cli: '[% invite_record_call_scenarios_test.testuser1004.phone_number %]' + destination_user: '[% scenarios.2.responders.0.username %]' + destination_domain: 'invite-record-call.scenarios.test' + destination_user_dialed: '[% scenarios.2.responders.0.username %]' + call_type: 'call' + call_status: 'busy' + call_code: '486' + - source_user: '[% scenarios.3.username %]' + source_domain: 'invite-record-call.scenarios.test' + source_cli: '[% invite_record_call_scenarios_test.testuser1004.phone_number %]' + destination_user: '[% scenarios.3.responders.0.username %]' + destination_domain: 'invite-record-call.scenarios.test' + destination_user_dialed: '[% scenarios.3.responders.0.username %]' + call_type: 'call' + call_status: 'busy' + call_code: '486' \ No newline at end of file diff --git a/scenarios/invite_record_call/prefs.json.tt2 b/scenarios/invite_record_call/prefs.json.tt2 index 4d8c4dd7..5ef01bbe 100644 --- a/scenarios/invite_record_call/prefs.json.tt2 +++ b/scenarios/invite_record_call/prefs.json.tt2 @@ -5,6 +5,17 @@ }, "[% scenarios.0.responders.0.username %]@invite-record-call.scenarios.test": { "play_announce_before_recording": "always", - "record_call": true + "record_call": true, + "sound_set":"invite_record_call" + }, + "[% scenarios.1.responders.0.username %]@invite-record-call.scenarios.test": { + "play_announce_before_recording": "always", + "record_call": true, + "sound_set":"invite_record_call" + }, + "[% scenarios.3.responders.0.username %]@invite-record-call.scenarios.test": { + "play_announce_before_recording": "always", + "record_call": true, + "sound_set":"invite_record_call" } } diff --git a/scenarios/invite_record_call/scenario.yml b/scenarios/invite_record_call/scenario.yml index 4321cdb2..99d47d20 100644 --- a/scenarios/invite_record_call/scenario.yml +++ b/scenarios/invite_record_call/scenario.yml @@ -1,3 +1,7 @@ +# Call 1 - A calls B (which has recording and announce before recording enabled), B answers with 200 OK +# Call 2 - A calls B (which has recording and announce before recording enabled), B replies with 486 Busy Here +# Call 3 - A (which has recording and announce before recording enabled) calls B, B replies with 486 Busy Here +# Call 4 - A (which has recording and announce before recording enabled) calls B, (which has recording and announce before recording enabled) B replies with 486 Busy Here --- test_uuid: invite_record_call domains: @@ -15,6 +19,24 @@ customers: reseller_id: 1 subscribers: invite-record-call.scenarios.test: + testuser1006: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1006 + testuser1005: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1005 + testuser1004: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1004 testuser1003: customer: 'customer.test' password: testuser @@ -40,3 +62,27 @@ scenarios: username: testuser1003 domain: invite-record-call.scenarios.test register: 'yes' + - ip: 127.126.0.2 + username: testuser1002 + domain: invite-record-call.scenarios.test + responders: + - ip: 127.1.0.2 + username: testuser1004 + domain: invite-record-call.scenarios.test + register: 'yes' + - ip: 127.126.0.3 + username: testuser1004 + domain: invite-record-call.scenarios.test + responders: + - ip: 127.1.0.4 + username: testuser1005 + domain: invite-record-call.scenarios.test + register: 'yes' + - ip: 127.126.0.5 + username: testuser1004 + domain: invite-record-call.scenarios.test + responders: + - ip: 127.1.0.5 + username: testuser1006 + domain: invite-record-call.scenarios.test + register: 'yes' diff --git a/scenarios/invite_record_call/sipp_scenario01.xml b/scenarios/invite_record_call/sipp_scenario01.xml new file mode 100644 index 00000000..6aace03c --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario01.xml @@ -0,0 +1,112 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=1]%///[call_id] + CSeq: 1 INVITE + Contact: + 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=1]%///[call_id] + CSeq: 1 ACK + Contact: + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=1]%///[call_id] + CSeq: 2 INVITE + Contact: + 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 + + ]]> + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=1]%///[call_id] + CSeq: 2 ACK + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario01_test.yml.tt2 b/scenarios/invite_record_call/sipp_scenario01_test.yml.tt2 new file mode 100644 index 00000000..c8229c1e --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario01_test.yml.tt2 @@ -0,0 +1,49 @@ +messages: +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 407 Proxy Authentication Required' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Proxy-Authenticate: Digest realm="invite-record-call.scenarios.test", nonce="[^"]+"' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 183 Progress' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' + - 'v=0' + - 'o=sems \d+ \d+ IN IP4' + - 's=sems' + - 'c=IN IP4' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'SIP/2.0 180 Ringing' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' + - 'Contact: ' +- - 'SIP/2.0 486 Busy Here' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' diff --git a/scenarios/invite_record_call/sipp_scenario02.xml b/scenarios/invite_record_call/sipp_scenario02.xml new file mode 100644 index 00000000..03c1a4d4 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario02.xml @@ -0,0 +1,112 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=2]%///[call_id] + CSeq: 1 INVITE + Contact: + 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=2]%///[call_id] + CSeq: 1 ACK + Contact: + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=2]%///[call_id] + CSeq: 2 INVITE + Contact: + Max-Forwards: 70 + [field1 file="caller.csv" line=2] + 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=1]%///[call_id] + CSeq: 2 ACK + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario03.xml b/scenarios/invite_record_call/sipp_scenario03.xml new file mode 100644 index 00000000..7357b23e --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario03.xml @@ -0,0 +1,112 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=3]%///[call_id] + CSeq: 1 INVITE + Contact: + 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=3]%///[call_id] + CSeq: 1 ACK + Contact: + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=3]%///[call_id] + CSeq: 2 INVITE + Contact: + Max-Forwards: 70 + [field1 file="caller.csv" line=3] + 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=1]%///[call_id] + CSeq: 2 ACK + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario03_test.yml.tt2 b/scenarios/invite_record_call/sipp_scenario03_test.yml.tt2 new file mode 100644 index 00000000..7c21f50c --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario03_test.yml.tt2 @@ -0,0 +1,52 @@ +messages: +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 407 Proxy Authentication Required' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Proxy-Authenticate: Digest realm="invite-record-call.scenarios.test", nonce="[^"]+"' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' +- - 'SIP/2.0 100 Trying' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP LB' + - 'Content-Length:\s+0' +- - 'SIP/2.0 183 Progress' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' + - 'v=0' + - 's=sems' + - 'c=IN IP4 192.168.8.180' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'SIP/2.0 180 Ringing' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Content-Length:\s+0' + - 'Contact: ' +- - 'SIP/2.0 486 Busy Here' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Server: Sipwise NGCP Proxy' + - 'Content-Length:\s+0' diff --git a/scenarios/invite_record_call/sipp_scenario_responder01.xml b/scenarios/invite_record_call/sipp_scenario_responder01.xml new file mode 100644 index 00000000..46c717c2 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario_responder01.xml @@ -0,0 +1,47 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario_responder01_test.yml.tt2 b/scenarios/invite_record_call/sipp_scenario_responder01_test.yml.tt2 new file mode 100644 index 00000000..dc794fa8 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario_responder01_test.yml.tt2 @@ -0,0 +1,24 @@ +messages: +- - 'INVITE sip:[% scenarios.1.responders.0.username %]@[% scenarios.1.responders.0.ip %]:[% scenarios.1.responders.0.port %] SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-Asserted-Identity: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' + - 'v=0' + - 'o=user1 \d+ \d+ IN IP4' + - 's=-' + - 'c=IN IP4' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'ACK sip:[% scenarios.1.responders.0.username %]@[% scenarios.1.responders.0.ip %]:[% scenarios.1.responders.0.port %] SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Content-Length:\s+0' diff --git a/scenarios/invite_record_call/sipp_scenario_responder02.xml b/scenarios/invite_record_call/sipp_scenario_responder02.xml new file mode 100644 index 00000000..46c717c2 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario_responder02.xml @@ -0,0 +1,47 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario_responder03.xml b/scenarios/invite_record_call/sipp_scenario_responder03.xml new file mode 100644 index 00000000..46c717c2 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario_responder03.xml @@ -0,0 +1,47 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + diff --git a/scenarios/invite_record_call/sipp_scenario_responder03_test.yml.tt2 b/scenarios/invite_record_call/sipp_scenario_responder03_test.yml.tt2 new file mode 100644 index 00000000..8ff76875 --- /dev/null +++ b/scenarios/invite_record_call/sipp_scenario_responder03_test.yml.tt2 @@ -0,0 +1,26 @@ +messages: +- - 'INVITE sip:[% scenarios.3.responders.0.username %]@[% scenarios.3.responders.0.ip %]:[% scenarios.3.responders.0.port %] SIP/2.0' + - 'Record-Route: ' + - 'Record-Route: ' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-Asserted-Identity: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' + - 'v=0' + - 'o=user1 53655765 2353687637 IN IP4 192.168.8.180' + - 's=-' + - 'c=IN IP4 192.168.8.180' + - 't=0 0' + - 'm=audio \d+ RTP/AVP 8' + - 'a=rtpmap:8 PCMA/8000' + - 'a=sendrecv' + - 'a=rtcp:\d+' + - 'a=ptime:50' +- - 'ACK sip:[% scenarios.3.responders.0.username %]@[% scenarios.3.responders.0.ip %]:[% scenarios.3.responders.0.port %] SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Content-Length:\s+0'