Agent-TCLI
view release on metacpan or search on metacpan
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
B<timeout_counter> will only contain numeric values.
=cut
my @timeout_counter :Field
:Type('numeric')
:All('timeout_counter');
=item timeout_retries
The number of times to retry the timeout. Increments are in 5 second blocks. Default is 6 or 30 seconds.
Timeout checks periodically to make sure we're still running requests. It begins the countdown when
all requests have been dispatched, so that we don't wait forever for something to complete. This is user adjustable.
B<timeout_retries> will only contain numeric values.
=cut
my @timeout_retries :Field
:Type('numeric')
:Arg('name'=>'timeout_retries','default'=>6)
:Acc('timeout_retries');
=item timeout_id
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
$self->Verbose($self->alias.":run: running (".$self->depth_requests.") requests " );
# requests still left in queue (How could there not be?)
if ( $self->depth_requests > 0 )
{
# Whatever's left in the queue is bigger than us little synchronous
# calls. Send it over to the big Dispatch.
$poe_kernel->post($self->alias, 'Dispatch', 1 );
}
# set running state for Timeout.
$self->running(1);
$poe_kernel->run;
}
=item preinit
This private Object::InsideOut (OIO) method is used for object initialization.
=cut
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
_stop
_shutdown
_child
_default
Dispatch
SendChangeContext
SendRequest
PostResponse
Timeout
)],
],
);
$args->{'peers'} = [ Agent::TCLI::User->new({
'id' => 'test-master@localhost',
'protocol' => 'test',
'auth' => 'master',
})] unless defined($args->{'peers'});
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
my $postback = $request->shift_postback;
$request->push_sender($self->alias);
$request->push_postback('PostResponse');
$kernel->call( $sender => $postback => $request );
}
return( );
}
=item Timeout
B<Timeout> is a POE event handler that makes sure that a test script completes
and no requests leave the system waiting too long for a response. It takes
an argument of the delay, in seconds, that it will wait until checking again.
=cut
sub Timeout {
my ($kernel, $self, $session, $delay, ) =
@_[KERNEL, OBJECT, SESSION, ARG0, ];
$self->Verbose($self->alias.":Timeout: {".$delay.
"} run(".$self->running.") dc(".$dispatch_counter[$$self].") dr(".
$dispatch_retries[$$self].") tc(".$timeout_counter[$$self].") tr".
$timeout_retries[$$self].") requests(".$self->depth_requests.") ");
# Is Dispatch done with the queue?
# We wait until running before using an empty queue as goood enough.
if ( ( $self->running && $self->depth_requests == 0 ) ||
$dispatch_counter[$$self] == $dispatch_retries[$$self] )
{
if ( $request_count[$$self] == $requests_complete[$$self] ||
$timeout_counter[$$self] == $timeout_retries[$$self] )
{
$kernel->yield('_shutdown');
return;
}
else
{
$kernel->delay( 'Timeout', $delay, $delay, );
$timeout_counter[$$self]++;
}
}
# Dispatch now taking care of requests still in queue and we'll just wait until
# it is done.
else
{
$kernel->delay( 'Timeout', $delay, $delay, );
}
}
=item GetControl ( id )
Inherited from Agent::TCLI::Trasnport::Base
=cut
=item _shutdown
lib/Agent/TCLI/Transport/Test.pm view on Meta::CPAN
$self->requests_sent(0) ;
$self->requests_complete(0);
# initialize counters
$self->dispatch_counter(0);
$self->timeout_counter(0);
# This will call timeout in 5 seconds
# So there is a 30 seconds delay from the sending of the last test
# before we stop by default.
$timeout_id[$$self] = $kernel->delay_set( 'Timeout', 5, 5 );
# well, tha above would be true if the kernel was running gung ho. But we're
# calling timeslices willy nilly until all requests are queued, so it turns out
# that Timeout gets called in every timeslice regardless of delay, but
# this is good because it is the one queud event that keeps everything
# from stopping.
# When debugging POE Event streams, this might help.
return('_start'.$self->alias);
}
=item _stop
This POE event handler is called when POE stops a Transport.
( run in 0.245 second using v1.01-cache-2.11-cpan-a5abf4f5562 )