BGPmon-core-2
view release on metacpan or search on metacpan
t/06-bgpmon-fetch-client.t view on Meta::CPAN
use warnings;
use strict;
use POSIX;
use BGPmon::Fetch::Client qw(connect_bgpmon read_xml_message close_connection is_connected get_error_code messages_read set_timeout);
my $resp = `pwd`;
my $location = 't/';
if($resp =~ m/bgpmon-tools\/BGPmon-core\/t/){
$location = '';
use Test::More;
}
else{
use Test::More skip_all => "Only run for development";
#use Test::More;
}
my $server = '127.0.0.1';
my $xml_msg = '<BGP_MONITOR_MESSAGE xmlns:xsi="http://www.w3.org/2001/XMLSchema" xmlns="urn:ietf:params:xml:ns:bgp_monitor" xmlns:bgp="urn:ietf:params:xml:ns:xfb" xmlns:ne="urn:ietf:params:xml:ns:network_elements"><SOURCE><ADDRESS afi="1">129.250.0.1...
sub server {
my $p = shift;
my $socket = new IO::Socket::INET (
LocalHost => '127.0.0.1',
LocalPort => $p,
Proto => 'tcp',
Listen => 5,
Reuse => 1,
) or die "Error creating socket: $!";
my $client_socket = $socket->accept();
# Write <xml> tag on client socket.
$client_socket->send("<xml>");
sleep(1);
# Write XML message on client socket.
for (my $i = 0; $i < 100; $i++) {
$client_socket->send($xml_msg);
}
$socket->close();
}
# No server running, check if connected.
my $ret = is_connected();
ok($ret == 0, "actual: $ret expected 0");
# Read should fail.
my $msg = read_xml_message();
my $error_code = get_error_code('read_xml_message');
ok($error_code == 202, "actual: $error_code, expected: 202");
# Generate random port no.
my $port = int(rand(30000)) + 1024;
# Run stub server
my $pid = fork();
if ($pid == 0) {
# Start server
server($port);
} else {
# Give some time for the server to fire up.
sleep(1);
# Try connecting.
$ret = connect_bgpmon('127.0.0.1', $port);
$error_code = get_error_code('connect_bgpmon');
ok($ret == 0, "actual: $ret, expected: 0");
ok($error_code == 0, "actual: $error_code, expected: 0");
# Read an XML message.
$msg = read_xml_message();
ok($msg eq $xml_msg);
wait;
close_connection();
}
# Start server again, but this time we will kill the server prematurely.
$pid = fork();
if ($pid == 0) {
server($port + 100);
( run in 1.125 second using v1.01-cache-2.11-cpan-140bd7fdf52 )