use strictures 1;
use Test::More;
$ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
use Object::Remote::Connection;
use Object::Remote::FromData;
$SIG{ALRM} = sub { fail("Watchdog killed remote process in time"); die "test failed" };
my $conn = Object::Remote->connect("-", watchdog_timeout => 1);
my $remote = HangClass->new::on($conn);
isa_ok($remote, 'Object::Remote::Proxy');
is($remote->alive, 1, "Hanging test object is running");
alarm(3);
eval { $remote->hang };
like($@, qr/^Object::Remote connection lost: (?:eof|.*Broken pipe)/, "Correct error message");
done_testing;
__DATA__
package HangClass;
use Moo;
sub alive {
return 1;
}
sub hang {
while(1) {
sleep(1);
}
}