Test::TCP man page on Alpinelinux

Man page or keyword search:  
man Server   18016 pages
apropos Keyword Search (all sections)
Output format
Alpinelinux logo
[printable version]

Test::TCP(3)	      User Contributed Perl Documentation	  Test::TCP(3)

NAME
       Test::TCP - testing TCP program

SYNOPSIS
	   use Test::TCP;

	   my $server = Test::TCP->new(
	       code => sub {
		   my $port = shift;
		   ...
	       },
	   );
	   my $client = MyClient->new(host => '127.0.0.1', port => $server->port);
	   undef $server; # kill child process on DESTROY

       Using memcached:

	   use Test::TCP;

	   my $memcached = Test::TCP->new(
	       code => sub {
		   my $port = shift;

		   exec $bin, '-p' => $port;
		   die "cannot execute $bin: $!";
	       },
	   );
	   my $memd = Cache::Memcached->new({servers => ['127.0.0.1:' . $memcached->port]});
	   ...

       And functional interface is available:

	   use Test::TCP;
	   test_tcp(
	       client => sub {
		   my ($port, $server_pid) = @_;
		   # send request to the server
	       },
	       server => sub {
		   my $port = shift;
		   # run server
	       },
	   );

DESCRIPTION
       Test::TCP is test utilities for TCP/IP programs.

METHODS
       test_tcp
	   Functional interface.

	       test_tcp(
		   client => sub {
		       my $port = shift;
		       # send request to the server
		   },
		   server => sub {
		       my $port = shift;
		       # run server
		   },
		   # optional
		   port => 8080,
		   max_wait => 3, # seconds
	       );

       wait_port
	       wait_port(8080);

	   Waits for a particular port is available for connect.

OO-ish interface
       my $server = Test::TCP->new(%args);
	   Create new instance of Test::TCP.

	   Arguments are following:

	   $args{auto_start}: Boolean
	       Call "$server->start()" after create instance.

	       Default: true

	   $args{code}: CodeRef
	       The callback function. Argument for callback function is:
	       "$code->($pid)".

	       This parameter is required.

	   $args{max_wait} : Number
	       Will wait for at most $max_wait seconds before checking port.

	       See also Net::EmptyPort.

	       Default: 10

       $server->start()
	   Start the server process. Normally, you don't need to call this
	   method.

       $server->stop()
	   Stop the server process.

       my $pid = $server->pid();
	   Get the pid of child process.

       my $port = $server->port();
	   Get the port number of child process.

FAQ
       How to invoke two servers?
	   You can call test_tcp() twice!

	       test_tcp(
		   client => sub {
		       my $port1 = shift;
		       test_tcp(
			   client => sub {
			       my $port2 = shift;
			       # some client code here
			   },
			   server => sub {
			       my $port2 = shift;
			       # some server2 code here
			   },
		       );
		   },
		   server => sub {
		       my $port1 = shift;
		       # some server1 code here
		   },
	       );

	   Or use OO-ish interface instead.

	       my $server1 = Test::TCP->new(code => sub {
		   my $port1 = shift;
		   ...
	       });
	       my $server2 = Test::TCP->new(code => sub {
		   my $port2 = shift;
		   ...
	       });

	       # your client code here.
	       ...

       How do you test server program written in other languages like
       memcached?
	   You can use "exec()" in child process.

	       use strict;
	       use warnings;
	       use utf8;
	       use Test::More;
	       use Test::TCP 1.08;
	       use File::Which;

	       my $bin = scalar which 'memcached';
	       plan skip_all => 'memcached binary is not found' unless defined $bin;

	       my $memcached = Test::TCP->new(
		   code => sub {
		       my $port = shift;

		       exec $bin, '-p' => $port;
		       die "cannot execute $bin: $!";
		   },
	       );

	       use Cache::Memcached;
	       my $memd = Cache::Memcached->new({servers => ['127.0.0.1:' . $memcached->port]});
	       $memd->set(foo => 'bar');
	       is $memd->get('foo'), 'bar';

	       done_testing;

AUTHOR
       Tokuhiro Matsuno <tokuhirom@gmail.com>

THANKS TO
       kazuhooku

       dragon3

       charsbar

       Tatsuhiko Miyagawa

       lestrrat

SEE ALSO
LICENSE
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.18.2			  2014-05-14			  Test::TCP(3)
[top]

List of man pages available for Alpinelinux

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net