TT#91151 add tests for pubsub

Change-Id: Id5bfe175aacf33a5b768ed3837d67517676939a9
pull/1346/head
Richard Fuchs 4 years ago
parent f04332915b
commit 4c1d43d7ee

@ -21,7 +21,7 @@ BEGIN {
@ISA = qw(Exporter); @ISA = qw(Exporter);
our @EXPORT = qw(autotest_start new_call offer answer ft tt snd srtp_snd rtp rcv srtp_rcv our @EXPORT = qw(autotest_start new_call offer answer ft tt snd srtp_snd rtp rcv srtp_rcv
srtp_dec escape rtpm rtpmre reverse_tags new_tt crlf sdp_split rtpe_req offer_answer srtp_dec escape rtpm rtpmre reverse_tags new_tt crlf sdp_split rtpe_req offer_answer
autotest_init); autotest_init subscribe_request subscribe_answer publish);
}; };
@ -117,13 +117,9 @@ sub rtpe_req {
is $resp->{result}, 'ok', "$name - '$cmd' status"; is $resp->{result}, 'ok', "$name - '$cmd' status";
return $resp; return $resp;
} }
sub offer_answer { sub sdp_match {
my ($cmd, $name, $req, $sdps) = @_; my ($cmd, $name, $sdp, $exp) = @_;
my ($sdp_in, $exp_sdp_out) = sdp_split($sdps); my $regexp = "^\Q$exp\E\$";
$req->{'from-tag'} = $ft;
$req->{sdp} = $sdp_in;
my $resp = rtpe_req($cmd, $name, $req);
my $regexp = "^\Q$exp_sdp_out\E\$";
$regexp =~ s/\\\?/./gs; $regexp =~ s/\\\?/./gs;
$regexp =~ s/PORT/(\\d{1,5})/gs; $regexp =~ s/PORT/(\\d{1,5})/gs;
$regexp =~ s/ICEBASE/([0-9a-zA-Z]{16})/gs; $regexp =~ s/ICEBASE/([0-9a-zA-Z]{16})/gs;
@ -137,11 +133,21 @@ sub offer_answer {
$regexp =~ s/LOOPER/([0-9a-f]{12})/gs; $regexp =~ s/LOOPER/([0-9a-f]{12})/gs;
$regexp =~ s/FINGERPRINT256/([0-9a-fA-F:]{95})/gs; $regexp =~ s/FINGERPRINT256/([0-9a-fA-F:]{95})/gs;
$regexp =~ s/FINGERPRINT/([0-9a-fA-F:]{59})/gs; $regexp =~ s/FINGERPRINT/([0-9a-fA-F:]{59})/gs;
my $crlf = crlf($resp->{sdp}); $regexp =~ s/SDP_VERSION/\\d+ \\d+/gs;
$regexp =~ s/RTPE_VERSION/rtpengine-\\S+/gs;
my $crlf = crlf($sdp);
like $crlf, qr/$regexp/s, "$name - output '$cmd' SDP"; like $crlf, qr/$regexp/s, "$name - output '$cmd' SDP";
my @matches = $crlf =~ qr/$regexp/s; my @matches = $crlf =~ qr/$regexp/s;
return @matches; return @matches;
} }
sub offer_answer {
my ($cmd, $name, $req, $sdps) = @_;
my ($sdp_in, $exp_sdp_out) = sdp_split($sdps);
$req->{'from-tag'} = $ft;
$req->{sdp} = $sdp_in;
my $resp = rtpe_req($cmd, $name, $req);
return sdp_match($cmd, $name, $resp->{sdp}, $exp_sdp_out);
}
sub offer { sub offer {
return offer_answer('offer', @_); return offer_answer('offer', @_);
} }
@ -150,6 +156,20 @@ sub answer {
$req->{'to-tag'} = $tt; $req->{'to-tag'} = $tt;
return offer_answer('answer', $name, $req, $sdps); return offer_answer('answer', $name, $req, $sdps);
} }
sub subscribe_request {
my ($name, $req, $sdp_exp) = @_;
my $resp = rtpe_req('subscribe request', $name, $req);
my @matches = sdp_match('subscribe request', $name, $resp->{sdp}, $sdp_exp);
return ($resp->{'from-tag'}, $resp->{'to-tag'}, @matches);
}
sub subscribe_answer {
my ($name, $req, $sdp) = @_;
$req->{sdp} = $sdp;
my $resp = rtpe_req('subscribe answer', $name, $req);
}
sub publish {
return offer_answer('publish', @_);
}
sub snd { sub snd {
my ($sock, $dest, $packet, $addr) = @_; my ($sock, $dest, $packet, $addr) = @_;
$sock->send($packet, 0, pack_sockaddr_in($dest, inet_aton($addr // '203.0.113.1'))) or die; $sock->send($packet, 0, pack_sockaddr_in($dest, inet_aton($addr // '203.0.113.1'))) or die;

@ -85,7 +85,7 @@ COMMONOBJS= str.o auxlib.o rtplib.o loglib.o
include ../lib/common.Makefile include ../lib/common.Makefile
.PHONY: all-tests unit-tests daemon-tests all-daemon-tests \ .PHONY: all-tests unit-tests daemon-tests all-daemon-tests \
daemon-tests-main daemon-tests-jb daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-main daemon-tests-jb daemon-tests-dtx daemon-tests-dtx-cn daemon-tests-pubsub
TESTS= test-bitstr aes-crypt aead-aes-crypt test-const_str_hash.strhash TESTS= test-bitstr aes-crypt aead-aes-crypt test-const_str_hash.strhash
ifeq ($(with_transcoding),yes) ifeq ($(with_transcoding),yes)
@ -111,7 +111,7 @@ daemon-tests: tests-preload.so
$(MAKE) -C ../daemon $(MAKE) -C ../daemon
$(MAKE) all-daemon-tests $(MAKE) all-daemon-tests
all-daemon-tests: daemon-tests-main daemon-tests-jb all-daemon-tests: daemon-tests-main daemon-tests-jb daemon-tests-pubsub
daemon-tests-main: daemon-tests-main:
rm -rf fake-$@-sockets rm -rf fake-$@-sockets
@ -145,6 +145,14 @@ daemon-tests-dtx-cn:
test "$$(ls fake-$@-sockets)" = "" test "$$(ls fake-$@-sockets)" = ""
rmdir fake-$@-sockets rmdir fake-$@-sockets
daemon-tests-pubsub:
rm -rf fake-$@-sockets
mkdir fake-$@-sockets
LD_PRELOAD=../t/tests-preload.so RTPE_BIN=../daemon/rtpengine TEST_SOCKET_PATH=./fake-$@-sockets \
perl -I../perl auto-daemon-tests-pubsub.pl
test "$$(ls fake-$@-sockets)" = ""
rmdir fake-$@-sockets
test-bitstr: test-bitstr.o test-bitstr: test-bitstr.o
spandsp_send_fax_pcm: spandsp_send_fax_pcm.o spandsp_send_fax_pcm: spandsp_send_fax_pcm.o

File diff suppressed because it is too large Load Diff

@ -259,7 +259,7 @@ rcv($sock_b, $port_a, rtpm(13, 3001, 5160, $ssrc, "654321"));
($sock_a, $sock_b) = new_call([qw(198.51.100.14 6000)], [qw(198.51.100.14 6002)]); ($sock_a, $sock_b) = new_call([qw(198.51.100.14 6000)], [qw(198.51.100.14 6002)]);
($port_a, undef, $srtp_key_a) = offer('echo=fwd', ($port_a) = offer('echo=fwd',
{ 'media-echo' => 'fw' }, <<SDP); { 'media-echo' => 'fw' }, <<SDP);
v=0 v=0
o=- 1545997027 1 IN IP4 198.51.100.1 o=- 1545997027 1 IN IP4 198.51.100.1
@ -310,7 +310,7 @@ rcv($sock_b, $port_a, rtpm(0, 2000, 4000, -1, "\x00" x 160));
($sock_a, $sock_b) = new_call([qw(198.51.100.14 6004)], [qw(198.51.100.14 6006)]); ($sock_a, $sock_b) = new_call([qw(198.51.100.14 6004)], [qw(198.51.100.14 6006)]);
($port_a, undef, $srtp_key_a) = offer('echo=bkw', ($port_a) = offer('echo=bkw',
{ 'media-echo' => 'bk' }, <<SDP); { 'media-echo' => 'bk' }, <<SDP);
v=0 v=0
o=- 1545997027 1 IN IP4 198.51.100.1 o=- 1545997027 1 IN IP4 198.51.100.1

Loading…
Cancel
Save