diff --git a/t/Makefile b/t/Makefile index e295f309e..7f8c9d042 100644 --- a/t/Makefile +++ b/t/Makefile @@ -104,7 +104,8 @@ include ../lib/common.Makefile .PHONY: all-tests unit-tests daemon-tests daemon-tests \ daemon-tests-main daemon-tests-jb daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-pubsub \ daemon-tests-intfs daemon-tests-stats daemon-tests-delay-buffer daemon-tests-delay-timing \ - daemon-tests-evs daemon-tests-player-cache daemon-tests-redis daemon-tests-t38 daemon-tests-evs-dtx + daemon-tests-evs daemon-tests-player-cache daemon-tests-redis daemon-tests-t38 daemon-tests-evs-dtx \ + daemon-tests-measure-rtp TESTS= test-bitstr aes-crypt aead-aes-crypt test-const_str_hash.strhash ifeq ($(with_transcoding),yes) @@ -142,7 +143,7 @@ daemon-tests: daemon-tests-main daemon-tests-jb daemon-tests-pubsub daemon-tests daemon-tests-evs daemon-tests-async-tc \ daemon-tests-audio-player daemon-tests-audio-player-play-media \ daemon-tests-intfs daemon-tests-stats daemon-tests-player-cache daemon-tests-redis \ - daemon-tests-rtpp-flags + daemon-tests-rtpp-flags daemon-tests-measure-rtp daemon-test-deps: tests-preload.so $(MAKE) -C ../daemon @@ -195,6 +196,9 @@ daemon-tests-audio-player-play-media: daemon-test-deps daemon-tests-rtpp-flags: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-rtpp-flags.pl +daemon-tests-measure-rtp: daemon-test-deps + ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-measure-rtp.pl + daemon-tests-async-tc: daemon-test-deps ./auto-test-helper "$@" perl -I../perl auto-daemon-tests-async-tc.pl diff --git a/t/auto-daemon-tests-measure-rtp.pl b/t/auto-daemon-tests-measure-rtp.pl new file mode 100755 index 000000000..95773b3dd --- /dev/null +++ b/t/auto-daemon-tests-measure-rtp.pl @@ -0,0 +1,353 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use NGCP::Rtpengine::Test; +use NGCP::Rtpclient::SRTP; +use NGCP::Rtpengine::AutoTest; +use Test::More; +use NGCP::Rtpclient::ICE; +use POSIX; +use Data::Dumper; + + +autotest_start(qw(--config-file=none -t -1 -i 203.0.113.1 -i 2001:db8:4321::1 --measure-rtp --mos=LQ + -n 2223 -c 12345 -f -L 7 -E -u 2222 --silence-detect=1 --log-level-internals=7)) + or die; + + +my $extended_tests = $ENV{RTPENGINE_MOS_TESTS}; + + +my ($sock_a, $sock_b, $sock_c, $sock_d, $port_a, $port_b, $ssrc, $ssrc_b, $resp, + $sock_ax, $sock_bx, $port_ax, $port_bx, + $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, $has_recv); + + + +($sock_a, $sock_ax, $sock_b, $sock_bx) = new_call( + [qw(198.51.100.1 7160)], + [qw(198.51.100.1 7161)], + [qw(198.51.100.3 7162)], + [qw(198.51.100.3 7163)], +); + +($port_a, $port_ax) = offer('stats delete w/o from-tag and w/o delete-delay', { }, < 0 } ); +#print Dumper($resp); +is($resp->{SSRC}{0x1234}{'highest MOS'}{MOS}, '44', "0x1234 MOS"); +is($resp->{SSRC}{0x6543}{'highest MOS'}{MOS}, '44', "0x6543 MOS"); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x1234, 'ingress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x6543, 'egress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x6543, 'ingress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x1234, 'egress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{totals}{RTP}{packets}, 2, 'RTP packet count'); +is($resp->{totals}{RTP}{bytes}, 344, 'RTP octet count'); +is($resp->{totals}{RTCP}{packets}, 2, 'RTCP packet count'); +is($resp->{totals}{RTCP}{bytes}, 104, 'RTCP octet count'); + + + + +($sock_a, $sock_ax, $sock_b, $sock_bx) = new_call( + [qw(198.51.100.1 7164)], + [qw(198.51.100.1 7165)], + [qw(198.51.100.3 7166)], + [qw(198.51.100.3 7167)], +); + +($port_a, $port_ax) = offer('stats delete w/ from-tag and w/o delete-delay', { }, < 0, 'from-tag' => ft() } ); +#print Dumper($resp); +is($resp->{SSRC}{0x1234}{'highest MOS'}{MOS}, '44', "0x1234 MOS"); +is($resp->{SSRC}{0x6543}{'highest MOS'}{MOS}, '44', "0x6543 MOS"); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x1234, 'ingress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x6543, 'egress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x6543, 'ingress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x1234, 'egress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{totals}{RTP}{packets}, 2, 'RTP packet count'); +is($resp->{totals}{RTP}{bytes}, 344, 'RTP octet count'); +is($resp->{totals}{RTCP}{packets}, 2, 'RTCP packet count'); +is($resp->{totals}{RTCP}{bytes}, 104, 'RTCP octet count'); + + + + +($sock_a, $sock_ax, $sock_b, $sock_bx) = new_call( + [qw(198.51.100.1 7168)], + [qw(198.51.100.1 7169)], + [qw(198.51.100.3 7170)], + [qw(198.51.100.3 7171)], +); + +($port_a, $port_ax) = offer('stats delete w/o from-tag and w/ delete-delay', { }, < 1 } ); +#print Dumper($resp); +is($resp->{SSRC}{0x1234}{'highest MOS'}{MOS}, '44', "0x1234 MOS"); +is($resp->{SSRC}{0x6543}{'highest MOS'}{MOS}, '44', "0x6543 MOS"); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x1234, 'ingress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x6543, 'egress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x6543, 'ingress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x1234, 'egress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{totals}{RTP}{packets}, 2, 'RTP packet count'); +is($resp->{totals}{RTP}{bytes}, 344, 'RTP octet count'); +is($resp->{totals}{RTCP}{packets}, 2, 'RTCP packet count'); +is($resp->{totals}{RTCP}{bytes}, 104, 'RTCP octet count'); + + + + +($sock_a, $sock_ax, $sock_b, $sock_bx) = new_call( + [qw(198.51.100.1 7172)], + [qw(198.51.100.1 7173)], + [qw(198.51.100.3 7174)], + [qw(198.51.100.3 7175)], +); + +($port_a, $port_ax) = offer('stats delete w/ from-tag and w/ delete-delay', { }, < 1, 'from-tag' => ft() } ); +#print Dumper($resp); +is($resp->{SSRC}{0x1234}{'highest MOS'}{MOS}, '44', "0x1234 MOS"); +is($resp->{SSRC}{0x6543}{'highest MOS'}{MOS}, '44', "0x6543 MOS"); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x1234, 'ingress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x6543, 'egress SSRC'); +is($resp->{tags}{ft()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{SSRC}, 0x6543, 'ingress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'ingress SSRCs'}[0]{packets}, 1, '0x6543 packet count'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{SSRC}, 0x1234, 'egress SSRC'); +is($resp->{tags}{tt()}{medias}[0]{streams}[0]{'egress SSRCs'}[0]{packets}, 1, '0x1234 packet count'); +is($resp->{totals}{RTP}{packets}, 2, 'RTP packet count'); +is($resp->{totals}{RTP}{bytes}, 344, 'RTP octet count'); +is($resp->{totals}{RTCP}{packets}, 2, 'RTCP packet count'); +is($resp->{totals}{RTCP}{bytes}, 104, 'RTCP octet count'); + + + +#done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit; +done_testing();