From 5e656b0c9ba1c48da1382a4517777f7f059ad879 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 17 Aug 2026 10:11:29 -0400 Subject: [PATCH] MT#55283 tests for I0ded946, I49dcd93, I5423928 Change-Id: I6ab0c680740a34bc4828153090acc69167960b7e (cherry picked from commit 6388d49456ae26515a2f4ad31a0269ea49edc733) --- t/auto-daemon-tests-dtls.pl | 1468 ++++++++++++++++++++++++++++++++++- 1 file changed, 1466 insertions(+), 2 deletions(-) diff --git a/t/auto-daemon-tests-dtls.pl b/t/auto-daemon-tests-dtls.pl index cea99d7e4..fb508b0d0 100644 --- a/t/auto-daemon-tests-dtls.pl +++ b/t/auto-daemon-tests-dtls.pl @@ -54,6 +54,1471 @@ sub mux_input { +($sock_a) = new_call([qw(198.51.100.35 3060)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change B', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change B', { + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_a); +@components = ([$sock_a, $port_b]); +$dtls->connect(); +$mux->loop(); + + +rtpe_req('delete', 'delete'); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.35 3056)], [qw(198.51.100.35 3058)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change A/B', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_b]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change A/B', { + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_b); +@components = ([$sock_b, $port_b]); +$dtls->connect(); +$mux->loop(); + + +rtpe_req('delete', 'delete'); + + + + +($sock_a, $sock_b) = new_call([qw(198.51.100.35 3052)], [qw(198.51.100.35 3054)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change A', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_b]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive port change A', { + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_b); +@components = ([$sock_b, $port_b]); +$dtls->connect(); +$mux->loop(); + + +rtpe_req('delete', 'delete'); + + + + +($sock_a) = new_call([qw(198.51.100.35 3050)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw force passive', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +offer('re-invite bkw force passive', { + 'rtcp-mux' => 'demux', + DTLS => 'passive', +}, <new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw passive', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +offer('re-invite bkw passive', { + 'rtcp-mux' => 'demux', +}, <new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +offer('re-invite bkw', { + 'transport-protocol' => 'RTP/AVP', + SDES => 'off', + 'rtcp-mux' => 'demux', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->accept(); +$mux->loop(); + + +offer('re-invite bkw', { + 'rtcp-mux' => 'demux', +}, <new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +($port_a, $port_ax, undef, $tls_id_a) = offer('re-invite fwd with B port change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + + +($port_b, $port_bx, undef, $tls_id_b) = offer('re-invite fwd with B port change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +answer('re-invite fwd with B port change', { }, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + +rtpe_req('delete', 'delete'); + + + +($sock_a) = new_call([qw(198.51.100.35 3040)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +($port_a, $port_ax, undef, $tls_id_a) = offer('re-invite fwd with role change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + + +($port_b, $port_bx, undef, $tls_id_b) = offer('re-invite fwd with role change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +answer('re-invite fwd with role change', { }, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->accept(); +$mux->loop(); + + + +rtpe_req('delete', 'delete'); + + + +($sock_a) = new_call([qw(198.51.100.35 3038)]); + +$mux = IO::Multiplex->new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +($port_a, $port_ax, undef, $tls_id_a) = offer('re-invite fwd passive', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->accept(); +$mux->loop(); + + + +($port_b, $port_bx, undef, $tls_id_b) = offer('re-invite fwd passive', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +($port_a, $port_ax, undef, $tls_id_a) = offer('re-invite fwd', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + + +($port_b, $port_bx, undef, $tls_id_b) = offer('re-invite fwd', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <new(); +$mux->set_callback_object(__PACKAGE__); +$dtls = NGCP::Rtpclient::DTLS::Group->new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + +($port_a, $port_ax, undef, $tls_id_a) = offer('re-invite fwd with A port change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <add($sock_a); +@components = ([$sock_a, $port_a]); +$dtls->connect(); +$mux->loop(); + + + +($port_b, $port_bx, undef, $tls_id_b) = offer('re-invite fwd with A port change', { + 'transport-protocol' => 'RTP/SAVP', + SDES => 'off', + 'rtcp-mux' => 'require', +}, <new($mux, $dtls_func, [[$sock_a]]); +$fingerprint = $dtls->[0]->fingerprint(); + + +answer('re-invite fwd with A port change', { }, <add($sock_a); +@components = ([$sock_a, $port_b]); +$dtls->connect(); +$mux->loop(); + + + + +rtpe_req('delete', 'delete'); + + + ($sock_a) = new_call([qw(198.51.100.35 3032)]); $mux = IO::Multiplex->new(); @@ -70,7 +1535,7 @@ $fingerprint = $dtls->[0]->fingerprint(); v=0 o=- 1545997027 1 IN IP4 198.51.100.23 s=tester -c=IN IP4 198.51.100.35 +c=IN IP4 198.51.100.99 t=0 0 m=audio 3000 RTP/AVP 0 ----------------------------------- @@ -110,7 +1575,6 @@ rtpe_req('delete', 'delete'); -done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit; ($sock_a) = new_call([qw(198.51.100.35 3028)]);