Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Net::Daemon::Test(3)  User Contributed Perl Documentation Net::Daemon::Test(3)

NAME
       Net::Daemon::Test - support functions for testing Net::Daemon servers

SYNOPSIS
	   # This is the server, stored	in the file "servertask".
	   #
	   # Create a subclass of Net::Daemon::Test, which in turn is
	   # a subclass	of Net::Daemon
	   use Net::Daemon::Test ();
	   package MyDaemon;
	   @MyDaemon::ISA = qw(Net::Daemon::Test);

	   sub Run {
	       # Overwrite this	and other methods, as you like.
	   }

	   my $self = Net::Daemon->new(\%attr, \@options);
	   eval	{ $self->Bind()	};
	   if ($@) {
	       die "Server cannot bind:	$!";
	   }
	   eval	{ $self->Run() };
	   if ($@) {
	       die "Unexpected server termination: $@";
	   }

	   # This is the client, the real test script, note we call the
	   # "servertask" file below:
	   #
	   # Call the Child method to spawn a child. Don't forget to use
	   # the timeout option.
	   use Net::Daemon::Test ();

	   my($handle, $port) =	eval {
	       Net::Daemon::Test->Child(5, # Number of subtests
					'servertask', '--timeout', '20')
	   };
	   if ($@) {
	       print "not ok 1 $@\n";
	       exit 0;
	   }
	   print "ok 1\n";

	   # Real tests	following here
	   ...

	   # Terminate the server
	   $handle->Terminate();

DESCRIPTION
       This module is a	frame for creating test	scripts	of Net::Daemon based
       server packages,	preferrably using Test::Harness, but that's your
       choice.

       A test consists of two parts: The client	part and the server part.  The
       test is executed	by the child part which	invokes	the server part, by
       spawning	a child	process	and invoking an	external Perl script.  (Of
       course we woultn't need this external file with fork(), but that's the
       best possibility	to make	the test scripts portable to Windows without
       requiring threads in the	test script.)

       The server part is a usual Net::Daemon application, for example a
       script like dbiproxy. The only difference is that it derives from
       Net::Daemon::Test and not from Net::Daemon, the main difference is that
       the Bind	method attempts	to allocate a port automatically. Once a port
       is allocated, the number	is stored in the file "ndtest.prt".

       After spawning the server process, the child will wait ten seconds
       (hopefully sufficient) for the creation of ndtest.prt.

AVAILABLE METHODS
   Server part
       Options Adds an option --timeout	to Net::Daemon:	The server's Run
	       method will die after at	most 20	seconds.

       Bind    (Instance method) This is mainly	the default Bind method, but
	       it attempts to find and allocate	a free port in two ways: First
	       of all, it tries	to call	Bind with port 0, most systems will
	       automatically choose a port in that case. If that seems to
	       fail, ports 30000-30049 are tried. We hope, one of these	will
	       succeed.	:-)

       Run     (Instance method) Overwrites the	Net::Daemon's method by	adding
	       a timeout.

       sub Run ($) {
	   my $self = shift;
	   $self->Run(); }

   Client part
       Child   (Class method) Attempts to spawn	a server process. The server
	       process is expected to create the file 'ndtest.prt' with	the
	       port number.

	       The method returns a process handle and a port number. The
	       process handle offers a method Terminate	that may later be used
	       to stop the server process.

AUTHOR AND COPYRIGHT
	 Net::Daemon is	Copyright (C) 1998, Jochen Wiedmann
					    Am Eisteich	9
					    72555 Metzingen
					    Germany

					    Phone: +49 7123 14887
					    Email: joe@ispsoft.de

	 All rights reserved.

       You may distribute under	the terms of either the	GNU General Public
       License or the Artistic License,	as specified in	the Perl README	file.

SEE ALSO
       Net::Daemon(3), Test::Harness(3)

perl v5.32.0			  2011-03-01		  Net::Daemon::Test(3)

NAME | SYNOPSIS | DESCRIPTION | AVAILABLE METHODS | AUTHOR AND COPYRIGHT | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Net::Daemon::Test&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help