diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index 9d02b1d79..bd1a7e412 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -122,7 +122,7 @@ sub rcv { my $addr = $sock->recv($p, 65535, 0) or die; alarm(0); my ($hdr_mark, $pt, $seq, $ts, $ssrc, $payload) = unpack('CCnNN a*', $p); - print("rtp recv $pt $seq $ts $ssrc\n"); + print("rtp recv $pt $seq $ts $ssrc " . unpack('H*', $payload) . "\n"); if ($cb) { $p = $cb->($hdr_mark, $pt, $seq, $ts, $ssrc, $payload, $p, $cb_arg); } @@ -158,7 +158,7 @@ sub escape { } sub rtpm { my ($pt, $seq, $ts, $ssrc, $payload) = @_; - print("rtp matcher $pt $seq $ts $ssrc\n"); + print("rtp matcher $pt $seq $ts $ssrc " . unpack('H*', $payload) . "\n"); my $re = ''; $re .= escape(pack('C', 0x80)); $re .= escape(pack('C', $pt)); @@ -1969,8 +1969,8 @@ rcv($sock_a, $port_b, rtpm(0, 4002, 5800, $ssrc, "\x88" x 400)); ($sock_a, $sock_b) = new_call([qw(198.51.100.1 3016)], [qw(198.51.100.3 3018)]); -($port_a) = offer('ptime=50 in, change to 30, response 30, change to 50', { - ICE => 'remove', replace => ['origin'], ptime => 30 }, < 'remove', replace => ['origin'], ptime => 30, 'ptime-reverse' => 50 }, < 'remove', replace => ['origin'], ptime => 50 }, < 'remove', replace => ['origin'] }, < 'remove', replace => ['origin'], ptime => 30 }, < 'remove', replace => ['origin'] }, < 'remove', replace => ['origin'], ptime => 30, 'ptime-reverse' => 50 }, < 'remove', replace => ['origin'] }, <B: 2x 50 ms -> 3x 30 ms (plus 10 ms left) +snd($sock_a, $port_b, rtp(0, 1000, 3000, 0x1234, "\00" x 400)); +($ssrc) = rcv($sock_b, $port_a, rtpm(0, 1000, 3000, -1, "\00" x 240)); +snd($sock_a, $port_b, rtp(0, 1001, 3400, 0x1234, "\00" x 400)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3240, $ssrc, "\00" x 240)); +rcv($sock_b, $port_a, rtpm(0, 1002, 3480, $ssrc, "\00" x 240)); +# A->B: add another 20 ms for another full 30 ms +snd($sock_a, $port_b, rtp(0, 1002, 3800, 0x1234, "\00" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1003, 3720, $ssrc, "\00" x 240)); + +# B->A: 4x 30 ms -> 2x 50 ms (plus 20 ms left) +snd($sock_b, $port_a, rtp(0, 4000, 5000, 0x4567, "\x88" x 240)); +Time::HiRes::usleep(20000); # 20 ms, needed to ensure that packet 1000 is received first +snd($sock_b, $port_a, rtp(0, 4001, 5240, 0x4567, "\x88" x 240)); +($ssrc) = rcv($sock_a, $port_b, rtpm(0, 4000, 5000, -1, "\x88" x 400)); +snd($sock_b, $port_a, rtp(0, 4002, 5480, 0x4567, "\x88" x 240)); +snd($sock_b, $port_a, rtp(0, 4003, 5720, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4001, 5400, $ssrc, "\x88" x 400)); +# B->A: add another 30 ms for another full 50 ms +snd($sock_b, $port_a, rtp(0, 4004, 5960, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4002, 5800, $ssrc, "\x88" x 400)); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.1 3016)], [qw(198.51.100.3 3018)]); + +($port_a) = offer('ptime=50 in, change to 30, reverse to 20, default response', { + ICE => 'remove', replace => ['origin'], ptime => 30, 'ptime-reverse' => 20 }, < 'remove', replace => ['origin'] }, <B: 2x 50 ms -> 3x 30 ms (plus 10 ms left) +snd($sock_a, $port_b, rtp(0, 1000, 3000, 0x1234, "\00" x 400)); +($ssrc) = rcv($sock_b, $port_a, rtpm(0, 1000, 3000, -1, "\00" x 240)); +snd($sock_a, $port_b, rtp(0, 1001, 3400, 0x1234, "\00" x 400)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3240, $ssrc, "\00" x 240)); +rcv($sock_b, $port_a, rtpm(0, 1002, 3480, $ssrc, "\00" x 240)); +# A->B: add another 20 ms for another full 30 ms +snd($sock_a, $port_b, rtp(0, 1002, 3800, 0x1234, "\00" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1003, 3720, $ssrc, "\00" x 240)); + +# B->A: 4x 30 ms -> 6x 20 ms +snd($sock_b, $port_a, rtp(0, 4000, 5000, 0x4567, "\x88" x 240)); +($ssrc) = rcv($sock_a, $port_b, rtpm(0, 4000, 5000, -1, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4001, 5240, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4001, 5160, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4002, 5320, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4002, 5480, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4003, 5480, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4003, 5720, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4004, 5640, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4005, 5800, $ssrc, "\x88" x 160)); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.1 3016)], [qw(198.51.100.3 3018)]); + +($port_a) = offer('ptime=50 in, change to 30, reverse to 20, response 40', { + ICE => 'remove', replace => ['origin'], ptime => 30, 'ptime-reverse' => 20 }, < 'remove', replace => ['origin'] }, <B: 2x 50 ms -> 3x 30 ms (plus 10 ms left) +snd($sock_a, $port_b, rtp(0, 1000, 3000, 0x1234, "\00" x 400)); +($ssrc) = rcv($sock_b, $port_a, rtpm(0, 1000, 3000, -1, "\00" x 240)); +snd($sock_a, $port_b, rtp(0, 1001, 3400, 0x1234, "\00" x 400)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3240, $ssrc, "\00" x 240)); +rcv($sock_b, $port_a, rtpm(0, 1002, 3480, $ssrc, "\00" x 240)); +# A->B: add another 20 ms for another full 30 ms +snd($sock_a, $port_b, rtp(0, 1002, 3800, 0x1234, "\00" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1003, 3720, $ssrc, "\00" x 240)); + +# B->A: 4x 30 ms -> 6x 20 ms +snd($sock_b, $port_a, rtp(0, 4000, 5000, 0x4567, "\x88" x 240)); +($ssrc) = rcv($sock_a, $port_b, rtpm(0, 4000, 5000, -1, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4001, 5240, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4001, 5160, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4002, 5320, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4002, 5480, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4003, 5480, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4003, 5720, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4004, 5640, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4005, 5800, $ssrc, "\x88" x 160)); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.1 3016)], [qw(198.51.100.3 3018)]); + +($port_a) = offer('ptime=30 in, no change, reverse to 20, response 40', { + ICE => 'remove', replace => ['origin'], 'ptime-reverse' => 20 }, < 'remove', replace => ['origin'] }, <B: 2x 50 ms -> 3x 30 ms (plus 10 ms left) +snd($sock_a, $port_b, rtp(0, 1000, 3000, 0x1234, "\00" x 400)); +($ssrc) = rcv($sock_b, $port_a, rtpm(0, 1000, 3000, -1, "\00" x 240)); +snd($sock_a, $port_b, rtp(0, 1001, 3400, 0x1234, "\00" x 400)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3240, $ssrc, "\00" x 240)); +rcv($sock_b, $port_a, rtpm(0, 1002, 3480, $ssrc, "\00" x 240)); +# A->B: add another 20 ms for another full 30 ms +snd($sock_a, $port_b, rtp(0, 1002, 3800, 0x1234, "\00" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1003, 3720, $ssrc, "\00" x 240)); + +# B->A: 4x 30 ms -> 6x 20 ms +snd($sock_b, $port_a, rtp(0, 4000, 5000, 0x4567, "\x88" x 240)); +($ssrc) = rcv($sock_a, $port_b, rtpm(0, 4000, 5000, -1, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4001, 5240, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4001, 5160, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4002, 5320, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4002, 5480, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4003, 5480, $ssrc, "\x88" x 160)); +snd($sock_b, $port_a, rtp(0, 4003, 5720, 0x4567, "\x88" x 240)); +rcv($sock_a, $port_b, rtpm(0, 4004, 5640, $ssrc, "\x88" x 160)); +rcv($sock_a, $port_b, rtpm(0, 4005, 5800, $ssrc, "\x88" x 160)); + + + + END { if ($rtpe_pid) { kill('INT', $rtpe_pid) or die;