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 )