mirror of https://github.com/sipwise/rtpengine.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
4.4 KiB
191 lines
4.4 KiB
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use NGCP::Rtpengine::Test;
|
|
use NGCP::Rtpclient::SRTP;
|
|
use NGCP::Rtpengine::AutoTest;
|
|
use Test::More;
|
|
use POSIX;
|
|
use Data::Dumper;
|
|
|
|
|
|
autotest_start(qw(--config-file=none -t -1 -i 203.0.113.1 -i 2001:db8:4321::1
|
|
-n 2223 -f -L 7 -E --log-level-internals=7))
|
|
or die;
|
|
|
|
|
|
|
|
my ($resp, $sock_a, $sock_b, $port_a, $seq, $ts, $ssrc);
|
|
|
|
|
|
($sock_a) = new_call([qw(198.51.100.14 6150)]);
|
|
|
|
$resp = rtpe_req('transform', 'simple transform',
|
|
{
|
|
media => [
|
|
{
|
|
type => 'audio',
|
|
codec => [
|
|
{
|
|
input => {
|
|
codec => 'PCMA',
|
|
'payload type' => 8,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
output => {
|
|
codec => 'PCMU',
|
|
'payload type' => 0,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
},
|
|
],
|
|
destination => {
|
|
family => 'IP4',
|
|
address => '198.51.100.14',
|
|
port => 6150,
|
|
},
|
|
},
|
|
],
|
|
}
|
|
);
|
|
|
|
is($resp->{media}[0]{address}, '203.0.113.1', 'address ok');
|
|
$port_a = $resp->{media}[0]{port};
|
|
snd($sock_a, $port_a, rtp(8, 2000, 4000, 0x3456, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(0, -1, -1, -1, "\x29" x 160));
|
|
snd($sock_a, $port_a, rtp(8, 2001, 4160, 0x3456, "\x00" x 160));
|
|
rcv($sock_a, $port_a, rtpm(0, $seq + 1, $ts + 160, $ssrc, "\x29" x 160));
|
|
|
|
rtpe_req('delete', 'delete call');
|
|
|
|
|
|
($sock_a) = new_call([qw(198.51.100.14 6152)]);
|
|
|
|
$resp = rtpe_req('transform', 'no-op transform',
|
|
{
|
|
media => [
|
|
{
|
|
type => 'audio',
|
|
codec => [
|
|
{
|
|
input => {
|
|
codec => 'G722',
|
|
'payload type' => 9,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
output => {
|
|
codec => 'G722',
|
|
'payload type' => 9,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
},
|
|
],
|
|
destination => {
|
|
family => 'IP4',
|
|
address => '198.51.100.14',
|
|
port => 6152,
|
|
},
|
|
},
|
|
],
|
|
}
|
|
);
|
|
|
|
is($resp->{media}[0]{address}, '203.0.113.1', 'address ok');
|
|
$port_a = $resp->{media}[0]{port};
|
|
snd($sock_a, $port_a, rtp(9, 2000, 4000, 0x3456, "\x00" x 160));
|
|
rcv($sock_a, $port_a, rtpm(9, 2000, 4000, 0x3456, "\x00" x 160));
|
|
snd($sock_a, $port_a, rtp(9, 2001, 4160, 0x3456, "\x00" x 160));
|
|
rcv($sock_a, $port_a, rtpm(9, 2001, 4160, 0x3456, "\x00" x 160));
|
|
|
|
rtpe_req('delete', 'delete call');
|
|
|
|
|
|
($sock_a) = new_call([qw(198.51.100.14 6154)]);
|
|
|
|
$resp = rtpe_req('transform', 'multiple transforms',
|
|
{
|
|
media => [
|
|
{
|
|
type => 'audio',
|
|
codec => [
|
|
{
|
|
input => {
|
|
codec => 'G722',
|
|
'payload type' => 9,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
output => {
|
|
codec => 'G722',
|
|
'payload type' => 9,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
},
|
|
{
|
|
input => {
|
|
codec => 'PCMA',
|
|
'payload type' => 8,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
output => {
|
|
codec => 'PCMU',
|
|
'payload type' => 0,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
},
|
|
{
|
|
input => {
|
|
codec => 'PCMU',
|
|
'payload type' => 0,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
output => {
|
|
codec => 'PCMA',
|
|
'payload type' => 8,
|
|
'clock rate' => 8000,
|
|
channels => 1,
|
|
},
|
|
},
|
|
],
|
|
destination => {
|
|
family => 'IP4',
|
|
address => '198.51.100.14',
|
|
port => 6154,
|
|
},
|
|
},
|
|
],
|
|
}
|
|
);
|
|
|
|
is($resp->{media}[0]{address}, '203.0.113.1', 'address ok');
|
|
$port_a = $resp->{media}[0]{port};
|
|
snd($sock_a, $port_a, rtp(9, 2000, 4000, 0x3456, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(9, -1, -1, -1, "\x00" x 160));
|
|
snd($sock_a, $port_a, rtp(9, 2001, 4160, 0x3456, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\x00" x 160));
|
|
|
|
snd($sock_a, $port_a, rtp(8, 2000, 4000, 0x346a, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(0, -1, -1, -1, "\x29" x 160));
|
|
snd($sock_a, $port_a, rtp(8, 2001, 4160, 0x346a, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(0, $seq + 1, $ts + 160, $ssrc, "\x29" x 160));
|
|
|
|
snd($sock_a, $port_a, rtp(0, 2000, 4000, 0x347e, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(8, -1, -1, -1, "\x2a" x 160));
|
|
snd($sock_a, $port_a, rtp(0, 2001, 4160, 0x347e, "\x00" x 160));
|
|
($seq, $ts, $ssrc) = rcv($sock_a, $port_a, rtpm(8, $seq + 1, $ts + 160, $ssrc, "\x2a" x 160));
|
|
|
|
rtpe_req('delete', 'delete call');
|
|
|
|
|
|
done_testing();
|
|
#done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit;
|