#!/usr/bin/perl # # This script tests whether timeout actually works. use strict; use warnings; use Test::More; use Error qw(:try); use IO::Socket; use RT::Client::REST; my $server = IO::Socket::INET->new( Type => SOCK_STREAM, Reuse => 1, Listen => 10, ) or die "Could not set up TCP server: $@"; my $port = $server->sockport; my $pid = fork; if ($pid > 0) { plan tests => 8; for my $timeout (1, 2, 5, 10) { my $rt = RT::Client::REST->new( server => "http://localhost:$port", timeout => $timeout, ); my $t1 = time; my ($e, $t2); try { $rt->login(qw(username a password b)); } catch Exception::Class::Base with { $t2 = time; $e = shift; }; isa_ok($e, 'RT::Client::REST::RequestTimedOutException'); ok($t2 - $t1 >= $timeout, "Timed out after $timeout seconds"); } } elsif (defined($pid)) { my $buf; my $client = $server->accept; 1 while ($client->read($buf, 1024)); } else { die "Could not fork: $!"; } # vim:ft=perl: