diff --git a/perl/NGCP/Rtpengine/AutoTest.pm b/perl/NGCP/Rtpengine/AutoTest.pm index 7a201ec76..5d0353280 100644 --- a/perl/NGCP/Rtpengine/AutoTest.pm +++ b/perl/NGCP/Rtpengine/AutoTest.pm @@ -26,10 +26,15 @@ BEGIN { our @EXPORT = qw(autotest_start new_call new_call_nc offer answer ft tt cid snd snd_no srtp_snd rtp rcv srtp_rcv rcv_no rcv_maybe srtp_dec escape rtpm rtpmre reverse_tags new_ft new_tt crlf sdp_split rtpe_req offer_answer autotest_init subscribe_request subscribe_answer publish create create_answer - use_json rtpe_raw_req); + use_json rtpe_raw_req last_resp); }; +my $last_response; +sub last_resp { + return $last_response; +} + my $rtpe_stdout; my $rtpe_stderr; my $rtpe_pid; @@ -183,6 +188,7 @@ sub offer_answer { $req->{'from-tag'} //= $ft; $req->{sdp} = $sdp_in; my $resp = rtpe_req($cmd, $name, $req); + $last_response = $resp; return sdp_match($cmd, $name, $resp->{sdp}, $exp_sdp_out); } sub offer { diff --git a/t/Makefile b/t/Makefile index 7d0dc1d18..6994920ca 100644 --- a/t/Makefile +++ b/t/Makefile @@ -86,7 +86,7 @@ include ../lib/common.Makefile daemon-tests-measure-rtp daemon-tests-mos-legacy daemon-tests-mos-fullband daemon-tests-config-file \ daemon-tests-templ-def daemon-tests-templ-def-offer daemon-tests-t38 daemon-tests-evs-dtx \ 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-dtx-no-shift daemon-tests-rtcp daemon-tests-redis-subscribe daemon-tests-rtp-ext daemon-tests-ssrc \ daemon-tests-bundle daemon-tests-dtls daemon-tests-rollback \ daemon-tests-rollback-redis \ daemon-tests-recording daemon-tests-create daemon-tests-alias \ @@ -139,7 +139,7 @@ daemon-tests: daemon-tests-main daemon-tests-jb daemon-tests-pubsub daemon-tests daemon-tests-sdp-manipulations daemon-tests-sdes-manipulations \ daemon-tests-sdp-orig-replacements daemon-tests-moh daemon-tests-evs-dtx daemon-tests-transform \ daemon-tests-transcode-config daemon-tests-codec-prefs daemon-tests-http daemon-tests-heuristic \ - daemon-tests-asymmetric daemon-tests-rtcp daemon-tests-redis-subscribe daemon-tests-rtp-ext \ + daemon-tests-asymmetric daemon-tests-rtcp daemon-tests-redis-subscribe daemon-tests-rtp-ext daemon-tests-ssrc \ daemon-tests-bundle daemon-tests-dtls daemon-tests-rollback daemon-tests-rollback-redis \ daemon-tests-recording daemon-tests-create \ daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-dtx-no-shift \ @@ -295,6 +295,9 @@ daemon-tests-rtcp: daemon-test-deps daemon-tests-rtp-ext: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-rtp-ext.pl +daemon-tests-ssrc: daemon-test-deps + ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-ssrc.pl + daemon-tests-bundle: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-bundle.pl diff --git a/t/auto-daemon-tests-ssrc.pl b/t/auto-daemon-tests-ssrc.pl new file mode 100755 index 000000000..ec7d70a9e --- /dev/null +++ b/t/auto-daemon-tests-ssrc.pl @@ -0,0 +1,97 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use NGCP::Rtpengine::Test; +use NGCP::Rtpengine::AutoTest; +use Test::More; +use POSIX; + + +autotest_start(qw(--config-file=none -t -1 -i 203.0.113.1 -n 2223 -f -L 7 -E --log-level-internals=7)) + or die; + + +my ($sock_a, $sock_ax, $sock_b, $sock_bx, $port_a, $port_ax, $port_b, $port_bx, $resp, $ssrcs); + + +# the chosen egress SSRC is reported per media in the offer response + +($sock_a, $sock_ax, $sock_b, $sock_bx) = new_call( + [qw(198.51.100.1 7000)], + [qw(198.51.100.1 7001)], + [qw(198.51.100.3 7002)], + [qw(198.51.100.3 7003)], +); + +($port_a, $port_ax) = offer('egress SSRC reported', { flags => ['fixed egress SSRC'] }, <{'egress SSRC'}; + +is ref($ssrcs), 'ARRAY', 'egress SSRC list present in offer response'; +is scalar(@{$ssrcs // []}), 1, 'one egress SSRC entry per m= section'; +is $ssrcs->[0]->{index}, 1, 'egress SSRC entry carries media index'; +is $ssrcs->[0]->{type}, 'audio', 'egress SSRC entry carries media type'; +ok(($ssrcs->[0]->{SSRC} // 0) > 0, 'egress SSRC entry carries a non-zero SSRC'); + + +my $egress = $ssrcs->[0]->{SSRC}; + +($port_b, $port_bx) = answer('egress SSRC reported', { }, <