mirror of https://github.com/sipwise/rtpengine.git
Change-Id: I2113b76d97f5cf6cc8927f92b8a178795322a77epull/1918/head
parent
ee707993f4
commit
135a95ef02
@ -0,0 +1,190 @@
|
|||||||
|
#!/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;
|
||||||
Loading…
Reference in new issue