#!/usr/local/bin/perl -w use strict; sub findVersion { my $pv = `perl -v`; my ($v) = $pv =~ /v(\d+\.\d+)\.\d+/; $v ? $v : 0; } use Test::More tests => 20; BEGIN { use_ok('GRID::Machine', 'is_operative') }; my $test_exception_installed; BEGIN { $test_exception_installed = 1; eval { require Test::Exception }; $test_exception_installed = 0 if $@; } my $host = $ENV{GRID_REMOTE_MACHINE} || ''; SKIP: { skip "Remote not operative or Test::Exception isn't installed or no linux", 19 unless $test_exception_installed and $host && is_operative('ssh', $host) and ( $^O =~ /linux|darwin/); my $m; Test::Exception::lives_ok { $m = GRID::Machine->new(host => $host); } 'No fatals creating a GRID::Machine object'; my $i; my $pid; my $RDR; my $WTR; Test::Exception::lives_ok { $RDR = IO::Handle->new(); } "No fatals creating a IO::Handle for reading"; Test::Exception::lives_ok { $WTR = IO::Handle->new(); } "No fatals creating a IO::Handle for writing"; Test::Exception::lives_ok { $pid = $m->open2($RDR, $WTR, 'sort -n'); } "No fatals opening a bidirectional pipe and launching a remote process"; for($i=10; $i>=0;$i--) { Test::Exception::lives_ok { $WTR->print("$i\n"); } "No fatals sending to output pipe $i"; } Test::Exception::lives_ok { $WTR->close(); } 'No fatals closing output pipe'; my @lines; my $result = [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n" ]; Test::Exception::lives_ok { (@lines = <$RDR>); } "No fatals receiving from input pipe"; Test::Exception::lives_ok { $RDR->close(); } 'No fatals closing input pipe'; is_deeply(\@lines, $result, "The answer received by input pipe is the same as the expected result"); } # end SKIP block