From 51bfb4e318d571d5d8e8a537366e4b72c3d8434c Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 23 Jun 2026 14:22:56 -0400 Subject: [PATCH] MT#55283 tests for Ic33e97451f Change-Id: I20a171cf51850b28fe18f539e179fc8090ed3552 --- t/Makefile | 8 +- t/auto-daemon-tests-alias.pl | 461 +++++++++++++++++++++++++++++++++++ 2 files changed, 467 insertions(+), 2 deletions(-) create mode 100755 t/auto-daemon-tests-alias.pl diff --git a/t/Makefile b/t/Makefile index 141bec9d8..27424a424 100644 --- a/t/Makefile +++ b/t/Makefile @@ -82,7 +82,7 @@ include ../lib/common.Makefile daemon-tests-transform daemon-tests-http daemon-tests-heuristic daemon-tests-asymmetric \ daemon-tests-dtx-no-shift daemon-tests-rtcp daemon-tests-redis-subscribe daemon-tests-rtp-ext \ daemon-tests-bundle daemon-tests-dtls \ - daemon-tests-recording daemon-tests-create + daemon-tests-recording daemon-tests-create daemon-tests-alias TESTS := test-bitstr aes-crypt aead-aes-crypt test-const_str_hash.strhash ifeq ($(with_transcoding),yes) @@ -132,7 +132,8 @@ daemon-tests: daemon-tests-main daemon-tests-jb daemon-tests-pubsub daemon-tests daemon-tests-asymmetric daemon-tests-rtcp daemon-tests-redis-subscribe daemon-tests-rtp-ext \ daemon-tests-bundle daemon-tests-dtls \ daemon-tests-recording daemon-tests-create \ - daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-dtx-no-shift + daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-dtx-no-shift \ + daemon-tests-alias daemon-test-deps: tests-preload.so $(MAKE) -C ../daemon @@ -164,6 +165,9 @@ daemon-tests-pubsub: daemon-test-deps daemon-tests-create: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-create.pl +daemon-tests-alias: daemon-test-deps + ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-alias.pl + daemon-tests-transform: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-transform.pl diff --git a/t/auto-daemon-tests-alias.pl b/t/auto-daemon-tests-alias.pl new file mode 100755 index 000000000..f6250d2c6 --- /dev/null +++ b/t/auto-daemon-tests-alias.pl @@ -0,0 +1,461 @@ +#!/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 JSON; + + +autotest_start(qw(--config-file=none -t -1 + -i def/203.0.113.1 -i def/2001:db8:4321::1 + -i alt/203.0.113.2 -i alt/2001:db8:4321::2 + -n 2223 -f -L 7 -E --log-level-internals=7)) + or die; + + + +my ($sock_a, $sock_b, $sock_c, $sock_d, $port_a, $port_b, $port_c, $ssrc_a, $ssrc_b, $resp, + $sock_ax, $sock_bx, $port_ax, $port_bx, $port_d, $sock_e, $port_e, $sock_cx, $port_cx, + $srtp_ctx_a, $srtp_ctx_b, $srtp_ctx_a_rev, $srtp_ctx_b_rev, $ufrag_a, $ufrag_b, + @ret1, @ret2, @ret3, @ret4, $srtp_key_a, $srtp_key_b, $ts, $seq, $tag_medias, $media_labels, + $ftr, $ttr, $fts, $ttr2, $cid, $ft, $tt, $ssrc, $cid1); + +my $extended_tests = $ENV{RTPENGINE_EXTENDED_TESTS}; + + +($sock_a, $sock_b) = new_call([qw(198.51.100.11 4070)], [qw(198.51.100.11 4072)]); + +($port_a) = offer('delete alias', { }, < [], + calls => [cid(), $cid1], + tags => [ + { + from => $ft, + to => [$tt, ft(), tt()], + }, + { + from => $tt, + to => [$ft, ft(), tt()], + }, + { + from => ft(), + to => [$ft, $tt, tt()], + }, + { + from => tt(), + to => [$ft, $tt, ft()], + }, + ], +}); + + +snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_c, $port_d, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_d, $port_c, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_b, $port_a, rtp (0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_a, $port_b, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_c, $port_d, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_d, $port_c, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + +snd($sock_c, $port_d, rtp (0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_d, $port_c, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_b, $port_a, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_a, $port_b, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_d, $port_c, rtp (0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_c, $port_d, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_b, $port_a, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_a, $port_b, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +rtpe_req('delete', 'delete alias', { 'delete-delay' => 0 }); + +snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x11" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x11" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_b, $port_a, rtp (0, 3002, 5320, 0x1a04, "\x22" x 160)); +rcv($sock_a, $port_b, rtpm(0, 3002, 5320, 0x1a04, "\x22" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + +snd($sock_c, $port_d, rtp (0, 5002, 7320, 0x1234, "\x33" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_d, $port_c, rtp (0, 7002, 9320, 0x1a04, "\x44" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.12 4070)], [qw(198.51.100.12 4072)]); + +($port_a) = offer('delete alias rev', { }, < [], + calls => [cid(), $cid1], + tags => [ + { + from => $ft, + to => [$tt, ft(), tt()], + }, + { + from => $tt, + to => [$ft, ft(), tt()], + }, + { + from => ft(), + to => [$ft, $tt, tt()], + }, + { + from => tt(), + to => [$ft, $tt, ft()], + }, + ], +}); + + +snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_c, $port_d, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv($sock_d, $port_c, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_b, $port_a, rtp (0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_a, $port_b, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_c, $port_d, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv($sock_d, $port_c, rtpm(0, 3001, 5160, 0x1a04, "\x22" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + +snd($sock_c, $port_d, rtp (0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_d, $port_c, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_b, $port_a, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv($sock_a, $port_b, rtpm(0, 5001, 7160, 0x1234, "\x33" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_d, $port_c, rtp (0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_c, $port_d, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_b, $port_a, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv($sock_a, $port_b, rtpm(0, 7001, 9160, 0x1a04, "\x44" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +rtpe_req('delete', 'delete alias rev', { 'call-id' => $cid1, 'delete-delay' => 0 }); + +snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x11" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_b, $port_a, rtp (0, 3002, 5320, 0x1a04, "\x22" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + +snd($sock_c, $port_d, rtp (0, 5002, 7320, 0x1234, "\x33" x 160)); +rcv($sock_d, $port_c, rtpm(0, 5002, 7320, 0x1234, "\x33" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + +snd($sock_d, $port_c, rtp (0, 7002, 9320, 0x1a04, "\x44" x 160)); +rcv($sock_c, $port_d, rtpm(0, 7002, 9320, 0x1a04, "\x44" x 160)); +rcv_no($sock_a); +rcv_no($sock_b); +rcv_no($sock_c); +rcv_no($sock_d); + + +done_testing(); +#done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit;