Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

io::async::test(3pm) [debian man page]

IO::Async::Test(3pm)					User Contributed Perl Documentation				      IO::Async::Test(3pm)

NAME
"IO::Async::Test" - utility functions for use in test scripts SYNOPSIS
use Test::More tests => 1; use IO::Async::Test; use IO::Async::Loop; my $loop = IO::Async::Loop->new; testing_loop( $loop ); my $result; $loop->do_something( some => args, on_done => sub { $result = the_outcome; } ); wait_for { defined $result }; is( $result, what_we_expected, 'The event happened' ); ... my $buffer = ""; my $handle = IO::Handle-> ... wait_for_stream { length $buffer >= 10 } $handle => $buffer; is( substr( $buffer, 0, 10, "" ), "0123456789", 'Buffer was correct' ); DESCRIPTION
This module provides utility functions that may be useful when writing test scripts for code which uses "IO::Async" (as well as being used in the "IO::Async" test scripts themselves). Test scripts are often synchronous by nature; they are a linear sequence of actions to perform, interspersed with assertions which check for given conditions. This goes against the very nature of "IO::Async" which, being an asynchronisation framework, does not provide a linear stepped way of working. In order to write a test, the "wait_for" function provides a way of synchronising the code, so that a given condition is known to hold, which would typically signify that some event has occured, the outcome of which can now be tested using the usual testing primitives. Because the primary purpose of "IO::Async" is to provide IO operations on filehandles, a great many tests will likely be based around connected pipes or socket handles. The "wait_for_stream" function provides a convenient way to wait for some content to be written through such a connected stream. FUNCTIONS
testing_loop( $loop ) Set the "IO::Async::Loop" object which the "wait_for" function will loop on. wait_for( $condfunc ) Repeatedly call the "loop_once" method on the underlying loop (given to the "testing_loop" function), until the given condition function callback returns true. To guard against stalled scripts, if the loop indicates a timeout for 10 consequentive seconds, then an error is thrown. wait_for_stream( $condfunc, $handle, $buffer ) As "wait_for", but will also watch the given IO handle for readability, and whenever it is readable will read bytes in from it into the given buffer. The buffer is NOT initialised when the function is entered, in case data remains from a previous call. $buffer can also be a CODE reference, in which case it will be invoked being passed data read from the handle, whenever it is readable. AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-10-24 IO::Async::Test(3pm)

Check Out this Related Man Page

IO::Async::LoopTests(3pm)				User Contributed Perl Documentation				 IO::Async::LoopTests(3pm)

NAME
"IO::Async::LoopTests" - acceptance testing for "IO::Async::Loop" subclasses SYNOPSIS
use IO::Async::LoopTests; run_tests( 'IO::Async::Loop::Shiney', 'io' ); DESCRIPTION
This module contains a collection of test functions for running acceptance tests on IO::Async::Loop subclasses. It is provided as a facility for authors of such subclasses to ensure that the code conforms to the Loop API required by "IO::Async". TIMING
Certain tests require the use of timers or timed delays. Normally these are counted in units of seconds. By setting the environment variable "TEST_QUICK_TIMERS" to some true value, these timers run 10 times quicker, being measured in units of 0.1 seconds instead. This value may be useful when running the tests interactively, to avoid them taking too long. The slower timers are preferred on automated smoke-testing machines, to help guard against false negatives reported simply because of scheduling delays or high system load while testing. TEST_QUICK_TIMERS=1 ./Build test FUNCTIONS
run_tests( $class, @tests ) Runs a test or collection of tests against the loop subclass given. The class being tested is loaded by this function; the containing script does not need to "require" or "use" it first. This function runs "Test::More::plan" to output its expected test count; the containing script should not do this. TEST SUITES
The following test suite names exist, to be passed as a name in the @tests argument to "run_tests": io Tests the Loop's ability to watch filehandles for IO readiness timer Tests the Loop's ability to handle timer events signal Tests the Loop's ability to watch POSIX signals idle Tests the Loop's support for idle handlers child Tests the Loop's support for watching child processes by PID control Tests that the "run", "stop", "loop_once" and "loop_forever" methods behave correctly AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-10-24 IO::Async::LoopTests(3pm)
Man Page