TT#101300 add support for location mappings

* invite_locmap_offline
* invite_locmap_add
* invite_locmap_replace

Change-Id: I67b1a298fb5d96feab5bae1d29df05e713659331
mr9.5.1
donat zenichev 4 years ago committed by Victor Seva
parent b8cc633abc
commit 43705a53a5

@ -115,6 +115,11 @@ create_voip_prefs() {
echo "$(date) - Setting preferences"
"${BIN_DIR}/set_preferences.pl" "${SCEN_CHECK_DIR}/prefs.json"
fi
if [ -f "${SCEN_CHECK_DIR}/locmap.yml" ]; then
echo "$(date) - Setting location mappings"
"${BIN_DIR}/set_subscribers_location_map.pl" "${SCEN_CHECK_DIR}/locmap.yml"
fi
}
# $1 domain

@ -0,0 +1,109 @@
#!/usr/bin/perl
#
# Copyright: 2020 Sipwise Development Team <support@sipwise.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# On Debian systems, the complete text of the GNU General
# Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
#
use strict;
use warnings;
use English;
use YAML::XS;
use Getopt::Long;
use Cwd 'abs_path';
use Config::Tiny;
use Sipwise::API qw(all);
use Data::Dumper;
my $config = Config::Tiny->read('/etc/default/ngcp-api');
my $opts;
if ($config) {
$opts = {};
$opts->{host} = $config->{_}->{NGCP_API_IP};
$opts->{port} = $config->{_}->{NGCP_API_PORT};
$opts->{sslverify} = $config->{_}->{NGCP_API_SSLVERIFY};
}
my $api = Sipwise::API->new($opts);
$opts = $api->opts;
sub usage {
return "Usage:\n$PROGRAM_NAME locmap.yml\n".
"Options:\n".
" -d debug\n".
" -h this help\n";
}
my $help = 0;
GetOptions(
"h|help" => \$help,
"d|debug" => \$opts->{verbose}
) or die("Error in command line arguments\n".usage());
die(usage()) unless (!$help);
die("Wrong number of arguments\n".usage()) unless ($#ARGV == 0);
sub get_subscriber_id
{
my $subscriber = shift;
my $domain = shift;
my $subs_id = $api->check_subscriber_exists({
domain => $domain,
username => $subscriber});
if($subs_id) {
return $subs_id;
}
else {
die("Error: No subscriber ${subscriber}\@${domain} found");
}
return;
}
sub set_locmap
{
my $subs_id = shift;
my $values = shift;
my $res = $api->create_locationmapping($values);
if($opts->{verbose}) {
print Dumper $res;
}
if($res) {
print "location mappings created for subscriber with id $subs_id\n";
} else {
die("Error: location mappings failed for subscriber with id $subs_id");
}
return;
}
sub main {
my $r = YAML::XS::LoadFile(abs_path($ARGV[0]));
for my $key (keys %{$r})
{
my @fields = split /@/, $key;
my $subscriber_id = get_subscriber_id($fields[0], $fields[1]);
for my $val (@{$r->{$key}})
{
$val->{subscriber_id} = $subscriber_id;
set_locmap($subscriber_id, $val);
}
}
return;
}
main();

@ -1023,4 +1023,11 @@ sub delete_banneduser {
return $self->_delete($urldata);
}
sub create_locationmapping {
my ($self, $data) = @_;
my $urldata = '/api/subscriberlocationmappings/';
return $self->_create($data, $urldata);
}
1;

@ -0,0 +1,46 @@
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 %]@invite-locmap-add.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 407 Proxy Authentication Required',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Proxy-Authenticate: Digest realm="invite-locmap-add.scenarios.test", nonce=".+"',
'Content-Length: 0',
]

@ -0,0 +1,251 @@
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_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:
- 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:
- 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_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_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:
- 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:
- 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:
- 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:
- 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|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:
- 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:
- 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:
- 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:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'INVITE sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Proxy-Authorization: Digest username="[% scenarios.0.username %]",realm="invite-locmap-add.scenarios.test",uri="sip:127.0.0.1:5060",nonce=".+",response=".+",algorithm=MD5'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
- 'P-NGCP-Src-Ip: [% scenarios.0.ip %]'
- 'P-NGCP-Src-Port: \d+'
- 'P-NGCP-Src-Proto: udp'
- 'P-NGCP-Src-Af: 4'
- 'P-Sock-Info: udp:127.0.0.1:5060'
- 'P-LB-Uptime: \d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 101 Connecting',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'INVITE sip:[% scenarios.0.responders.0.username %]@[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %] SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>',
]
- [
'INVITE sip:[% scenarios.0.responders.1.username %]@[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %] SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>',
]

@ -0,0 +1,21 @@
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 100'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Content-Length: 0'
sip_out: []

@ -0,0 +1,42 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_LEG_B:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'INVITE sip:[% scenarios.0.responders.0.username %]@[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %] SIP/2.0'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
sip_out:
- [
'SIP/2.0 100',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'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: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
]

@ -0,0 +1,25 @@
flow:
- start|DEFAULT_ONREPLY:
- start|REPLY_ROUTE_LEG_B:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'SIP/2.0 180 Ringing'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=UDP>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %];transport=UDP>',
'Content-Length: 0',
]

@ -0,0 +1,30 @@
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'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Length: 0',
]

@ -0,0 +1,42 @@
flow:
- start|DEFAULT_ROUTE:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_LEG_B:
- start|ROUTE_INITVARS:
- return|ROUTE_INITVARS:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'INVITE sip:[% scenarios.0.responders.1.username %]@[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %] SIP/2.0'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'Server: Sipwise NGCP Proxy',
'Content-Length: 0',
]
- [
'INVITE sip:[% scenarios.0.responders.1.username %]@[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %] SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ INVITE',
'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
]

@ -0,0 +1,16 @@
flow:
- start|DEFAULT_ONREPLY:
- start|REPLY_ROUTE_LEG_B:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'SIP/2.0 100 Trying'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Content-Length: 0'
sip_out: []

@ -0,0 +1,25 @@
flow:
- start|DEFAULT_ONREPLY:
- start|REPLY_ROUTE_LEG_B:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'SIP/2.0 180 Ringing'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>',
'Content-Length: 0',
]

@ -0,0 +1,30 @@
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'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Length: 0',
]

@ -0,0 +1,29 @@
flow:
- start|DEFAULT_ONREPLY:
- start|REPLY_ROUTE_LEG_B:
- start|ROUTE_ENTRY:
- return|ROUTE_ENTRY:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- start|dialog:start:
- return|dialog:start:
- return|dialog:start:
sip_in:
- 'SIP/2.0 200 OK'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
]

@ -0,0 +1,44 @@
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:
- start|dialog:start:
- return|dialog:start:
- return|dialog:start:
sip_in:
- 'SIP/2.0 200 OK'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
]
- [
'CANCEL sip:[% scenarios.0.responders.0.username %]@[% scenarios.0.responders.0.ip %]:[% scenarios.0.responders.0.port %] SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>',
'CSeq: \d+ CANCEL',
'Content-Length: 0',
'Reason: SIP;cause=200;text="Call completed elsewhere"',
]

@ -0,0 +1,41 @@
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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_RESTORE_CLUSTERSET:
- return|ROUTE_RESTORE_CLUSTERSET:
- start|ROUTE_WITHINDLG_RTPENGINE:
- return|ROUTE_WITHINDLG_RTPENGINE:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Length: 0'
sip_out:
- [
'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ ACK',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Length: 0',
]

@ -0,0 +1,10 @@
flow:
- start|DEFAULT_ONREPLY:
- return|DEFAULT_ONREPLY:
sip_in:
- 'SIP/2.0 200 canceling'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ CANCEL'
- 'Content-Length: 0'
sip_out: []

@ -0,0 +1,37 @@
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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'ACK sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP SIP/2.0'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Content-Length: 0'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
sip_out:
- [
'ACK sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ ACK',
'Content-Length: 0',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
]

@ -0,0 +1,49 @@
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|dialog:end:
- return|dialog:end:
- return|dialog:end:
- start|ROUTE_STOP_RTPPROXY:
- return|ROUTE_STOP_RTPPROXY:
- start|ROUTE_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'BYE sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP SIP/2.0'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]
- [
'BYE sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP SIP/2.0',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'P-Asserted-Identity: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>',
'Content-Length: 0',
]

@ -0,0 +1,30 @@
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 200 OK'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>'
- 'Content-Length: \s+0'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.1.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Contact: <sip:[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %];transport=UDP>',
'Content-Length: \s+0',
]

@ -0,0 +1,28 @@
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 200 OK'
- 'From: <sip:[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-add.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]

@ -0,0 +1,11 @@
cdr:
- source_user: '[% scenarios.0.username %]'
source_domain: 'invite-locmap-add.scenarios.test'
source_cli: '[% invite_locmap_add_scenarios_test.testuser1000.phone_number %]'
destination_user: '[% scenarios.0.responders.0.username %]'
destination_domain: 'invite-locmap-add.scenarios.test'
destination_user_dialed: '[% scenarios.0.responders.0.username %]'
destination_user_in: '[% scenarios.0.responders.0.username %]'
call_type: 'call'
call_status: 'ok'
call_code: '200'

@ -0,0 +1,7 @@
---
testuser1001@invite-locmap-add.scenarios.test:
- caller_pattern: .+
callee_pattern: .+
enabled: 1
location: sip:testuser1002@invite-locmap-add.scenarios.test
mode: add

@ -0,0 +1,52 @@
---
test_uuid: invite_locmap_add
domains:
'invite-locmap-add.scenarios.test':
reseller_id: 1
customers:
'customer.test':
contacts:
- email: "customer.test@spce.test"
reseller_id: 1
details:
status: 'active'
type: 'sipaccount'
billing_profile_id: 1
reseller_id: 1
subscribers:
invite-locmap-add.scenarios.test:
testuser1002:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1002
testuser1001:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1001
testuser1000:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1000
alias_numbers:
- cc: 34
ac: 96
sn: 5711942
scenarios:
- ip: 127.126.0.1
username: testuser1000
domain: invite-locmap-add.scenarios.test
responders:
- ip: 127.1.0.1
username: testuser1001
domain: invite-locmap-add.scenarios.test
register: 'yes'
- ip: 127.1.0.2
username: testuser1002
domain: invite-locmap-add.scenarios.test
register: 'yes'

@ -0,0 +1,138 @@
<?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:[field0 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 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:[field0 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:[field0 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 response="180" optional="true"/>
<recv response="183" optional="true"/>
<recv response="200" rrs="true" rtd="3"/>
<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:[field0 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="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:[field0 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 response="200" crlf="true" rtd="4"/>
<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,43 @@
<?xml version="1.0" encoding="UTF-8" ?>
<scenario name="Sipwise NGCP Benchmark UAS Responder">
<recv request="INVITE" rtd="true"/>
<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>
<recv request="CANCEL"/>
<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,72 @@
<?xml version="1.0" encoding="UTF-8" ?>
<scenario name="Sipwise NGCP Benchmark UAS Responder">
<recv request="INVITE" rtd="true"/>
<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"/>
<recv request="BYE"/>
<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,46 @@
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 %]@invite-locmap-offline.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 407 Proxy Authentication Required',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Proxy-Authenticate: Digest realm="invite-locmap-offline.scenarios.test", nonce=".+"',
'Content-Length: 0',
]

@ -0,0 +1,9 @@
flow:
- start|sl:filtered-ack:
sip_in:
- 'ACK sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Content-Length: 0'
sip_out: []

@ -0,0 +1,189 @@
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_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:
- 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:
- 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_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_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:
- 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:
- 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:
- 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:
- 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:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'INVITE sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Proxy-Authorization: Digest username="[% scenarios.0.username %]",realm="invite-locmap-offline.scenarios.test",uri="sip:127.0.0.1:5060",nonce=".+",response=".+",algorithm=MD5'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 101 Connecting',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'INVITE sip:[% scenarios.0.responders.1.username %]@[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %] SIP/2.0',
'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>',
'CSeq: \d+ INVITE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'P-Asserted-Identity: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>',
]

@ -0,0 +1,30 @@
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'
- 'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Length: 0',
]

@ -0,0 +1,36 @@
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:
- start|dialog:start:
- return|dialog:start:
- return|dialog:start:
sip_in:
- 'SIP/2.0 200 OK'
- 'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
]

@ -0,0 +1,41 @@
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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_RESTORE_CLUSTERSET:
- return|ROUTE_RESTORE_CLUSTERSET:
- start|ROUTE_WITHINDLG_RTPENGINE:
- return|ROUTE_WITHINDLG_RTPENGINE:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Length: 0'
sip_out:
- [
'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0',
'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ ACK',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Length: 0',
]

@ -0,0 +1,52 @@
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|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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]
- [
'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0',
'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Length: 0',
'P-Asserted-Identity: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>',
]

@ -0,0 +1,28 @@
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 200 OK'
- 'From: <sip:[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-offline.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]

@ -0,0 +1,10 @@
cdr:
- source_user: '[% scenarios.0.username %]'
source_domain: 'invite-locmap-offline.scenarios.test'
source_cli: '[% invite_locmap_offline_scenarios_test.testuser1000.phone_number %]'
destination_user: '[% scenarios.0.responders.0.username %]'
destination_domain: 'invite-locmap-offline.scenarios.test'
destination_user_dialed: '[% scenarios.0.responders.0.username %]'
call_type: 'call'
call_status: 'ok'
call_code: '200'

@ -0,0 +1,7 @@
---
testuser1001@invite-locmap-offline.scenarios.test:
- caller_pattern: .+
callee_pattern: .+
enabled: 1
location: sip:testuser1002@invite-locmap-offline.scenarios.test
mode: offline

@ -0,0 +1,53 @@
---
test_uuid: invite_locmap_offline
domains:
'invite-locmap-offline.scenarios.test':
reseller_id: 1
customers:
'customer.test':
contacts:
- email: "customer.test@spce.test"
reseller_id: 1
details:
status: 'active'
type: 'sipaccount'
billing_profile_id: 1
reseller_id: 1
subscribers:
invite-locmap-offline.scenarios.test:
testuser1002:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1002
testuser1001:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1001
testuser1000:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1000
alias_numbers:
- cc: 34
ac: 96
sn: 5711942
scenarios:
- ip: 127.126.0.1
username: testuser1000
domain: invite-locmap-offline.scenarios.test
responders:
- ip: 127.1.0.1
username: testuser1001
domain: invite-locmap-offline.scenarios.test
register: 'no'
active: 'no'
- ip: 127.1.0.2
username: testuser1002
domain: invite-locmap-offline.scenarios.test
register: 'yes'

@ -0,0 +1,139 @@
<?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:[field0 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 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:[field0 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:[field0 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 response="180" optional="true"/>
<recv response="183" optional="true"/>
<recv response="200" rrs="true" rtd="3"/>
<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:[field0 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="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:[field0 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 response="200" crlf="true" rtd="4"/>
<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,73 @@
<?xml version="1.0" encoding="UTF-8" ?>
<scenario name="Sipwise NGCP Benchmark UAS Responder">
<recv request="INVITE" rtd="true"/>
<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"/>
<recv request="BYE"/>
<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,46 @@
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 %]@invite-locmap-replace.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 407 Proxy Authentication Required',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Proxy-Authenticate: Digest realm="invite-locmap-replace.scenarios.test", nonce=".+"',
'Content-Length: 0',
]

@ -0,0 +1,9 @@
flow:
- start|sl:filtered-ack:
sip_in:
- 'ACK sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Content-Length: 0'
sip_out: []

@ -0,0 +1,189 @@
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_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:
- 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:
- 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_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_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:
- 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:
- 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:
- 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:
- 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:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'INVITE sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>'
- 'CSeq: \d+ INVITE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Proxy-Authorization: Digest username="[% scenarios.0.username %]",realm="invite-locmap-replace.scenarios.test",uri="sip:127.0.0.1:5060",nonce=".+",response=".+",algorithm=MD5'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'SIP/2.0 101 Connecting',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>',
'CSeq: \d+ INVITE',
'Content-Length: 0',
]
- [
'INVITE sip:[% scenarios.0.responders.1.username %]@[% scenarios.0.responders.1.ip %]:[% scenarios.0.responders.1.port %] SIP/2.0',
'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>',
'CSeq: \d+ INVITE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
'P-Asserted-Identity: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>',
]

@ -0,0 +1,30 @@
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'
- 'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 180 Ringing',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Length: 0',
]

@ -0,0 +1,36 @@
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:
- start|dialog:start:
- return|dialog:start:
- return|dialog:start:
sip_in:
- 'SIP/2.0 200 OK'
- 'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ INVITE'
- 'Contact: <sip:127.0.0.1:508[08];transport=udp>'
- 'Content-Type: application/sdp'
- 'Content-Length:\s+\d+'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ INVITE',
'Contact: <sip:127.0.0.1:508[08];transport=udp>',
'Content-Type: application/sdp',
'Content-Length:\s+\d+',
]

@ -0,0 +1,41 @@
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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_RESTORE_CLUSTERSET:
- return|ROUTE_RESTORE_CLUSTERSET:
- start|ROUTE_WITHINDLG_RTPENGINE:
- return|ROUTE_WITHINDLG_RTPENGINE:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ ACK'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Length: 0'
sip_out:
- [
'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0',
'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ ACK',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Length: 0',
]

@ -0,0 +1,52 @@
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|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_PREPARE_UA:
- return|ROUTE_PREPARE_UA:
- start|ROUTE_OUTBOUND:
- start|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- exit|DEFAULT_SEND:
- start|ROUTE_EXIT:
- start|ROUTE_RUNTIME:
- return|ROUTE_RUNTIME:
- exit|ROUTE_EXIT:
sip_in:
- 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0'
- 'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 100 Trying',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]
- [
'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0',
'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Contact: sip:[% scenarios.0.username %]@[% scenarios.0.ip %]:[% scenarios.0.port %]',
'Content-Length: 0',
'P-Asserted-Identity: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>',
]

@ -0,0 +1,28 @@
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 200 OK'
- 'From: <sip:[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+'
- 'CSeq: \d+ BYE'
- 'Content-Length: 0'
sip_out:
- [
'SIP/2.0 200 OK',
'From: <sip:[% scenarios.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'To: <sip:[% scenarios.0.responders.0.username %]@invite-locmap-replace.scenarios.test>;tag=[\w-]+',
'CSeq: \d+ BYE',
'Content-Length: 0',
]

@ -0,0 +1,10 @@
cdr:
- source_user: '[% scenarios.0.username %]'
source_domain: 'invite-locmap-replace.scenarios.test'
source_cli: '[% invite_locmap_replace_scenarios_test.testuser1000.phone_number %]'
destination_user: '[% scenarios.0.responders.0.username %]'
destination_domain: 'invite-locmap-replace.scenarios.test'
destination_user_dialed: '[% scenarios.0.responders.0.username %]'
call_type: 'call'
call_status: 'ok'
call_code: '200'

@ -0,0 +1,7 @@
---
testuser1001@invite-locmap-replace.scenarios.test:
- caller_pattern: .+
callee_pattern: .+
enabled: 1
location: sip:testuser1002@invite-locmap-replace.scenarios.test
mode: replace

@ -0,0 +1,53 @@
---
test_uuid: invite_locmap_replace
domains:
'invite-locmap-replace.scenarios.test':
reseller_id: 1
customers:
'customer.test':
contacts:
- email: "customer.test@spce.test"
reseller_id: 1
details:
status: 'active'
type: 'sipaccount'
billing_profile_id: 1
reseller_id: 1
subscribers:
invite-locmap-replace.scenarios.test:
testuser1002:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1002
testuser1001:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1001
testuser1000:
customer: 'customer.test'
password: testuser
cc: 43
ac: 1
sn: 1000
alias_numbers:
- cc: 34
ac: 96
sn: 5711942
scenarios:
- ip: 127.126.0.1
username: testuser1000
domain: invite-locmap-replace.scenarios.test
responders:
- ip: 127.1.0.1
username: testuser1001
domain: invite-locmap-replace.scenarios.test
active: 'no'
register: 'yes'
- ip: 127.1.0.2
username: testuser1002
domain: invite-locmap-replace.scenarios.test
register: 'yes'

@ -0,0 +1,139 @@
<?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:[field0 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 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:[field0 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:[field0 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 response="180" optional="true"/>
<recv response="183" optional="true"/>
<recv response="200" rrs="true" rtd="3"/>
<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:[field0 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="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:[field0 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 response="200" crlf="true" rtd="4"/>
<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,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<scenario name="Sipwise NGCP Benchmark UAS Responder">
<recv request="INVITE" rtd="true"/>
<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"/>
<recv request="BYE"/>
<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>
Loading…
Cancel
Save