AnyEvent-SIP
view release on metacpan or search on metacpan
t/14_bugfix_0.51.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 12;
do './testlib.pl' || do './t/testlib.pl' || die "no testlib";
use AnyEvent::SIP 'compat';
use Net::SIP ':all';
use Net::SIP::SDP;
use Data::Dumper;
my $HOST = '127.0.0.1';
my ($luac,$luas,$lproxy);
for ( $luac,$luas,$lproxy) {
my ($sock,$addr) = create_socket_to( $HOST );
$_ = { sock => $sock, addr => $addr };
}
diag( "UAS on $luas->{addr} " );
diag( "UAC on $luac->{addr} " );
diag( "PROXY on $lproxy->{addr} " );
# start Proxy
my $proxy = fork_sub( 'proxy', $lproxy );
fd_grep_ok( 'Listening',$proxy );
# start UAS
my $uas = fork_sub( 'uas', $luas, $lproxy->{addr} );
fd_grep_ok( 'Listening',$uas );
# start UAC once UAS is ready
my $uac = fork_sub( 'uac', $luac, $lproxy->{addr} );
fd_grep_ok( 'Started',$uac );
fd_grep_ok( 'Call accepted',$uas );
# then re-invite
fd_grep_ok( 'Starting ReInvite', $uas );
fd_grep_ok( 'Got ReInvite', $uac );
# BYE from UAS
fd_grep_ok( 'Send BYE',$uas );
fd_grep_ok( 'Received BYE',$uac );
fd_grep_ok( 'BYE done',$uas );
killall();
# --------------------------------------------------------------
# PROXY
# --------------------------------------------------------------
sub proxy {
my $lsock = shift;
my $proxy = Net::SIP::Simple->new( leg => $lsock );
$proxy->create_chain([
$proxy->create_registrar,
$proxy->create_stateless_proxy,
]);
print "Listening\n";
$proxy->loop;
}
# --------------------------------------------------------------
# UAC
# --------------------------------------------------------------
sub uac {
my ($lsock,$paddr) = @_;
my $ua = Simple->new(
leg => $lsock->{leg},
( run in 1.067 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )