#!/usr/bin/env perl
use 5.010;
use warnings;
use strict;
use Log::Log4perl;
my $string = "
log4perl.rootLogger = INFO, root
log4perl.appender.root = Log::Log4perl::Appender::Screen
log4perl.appender.root.stderr = 1
log4perl.appender.root.layout = SimpleLayout";
Log::Log4perl->init(\$string);
use Test::More;
use Tapper::Config;
use TAP::DOM;
use Data::DPath 'dpath';
use Tapper::TestSuite::HWTrack;
$ENV{TAPPER_TESTRUN} = 10;
$ENV{TAPPER_HOSTNAME} = 'foobarhost';
my $track = Tapper::TestSuite::HWTrack->new();
isa_ok($track, 'Tapper::TestSuite::HWTrack');
my $report = $track->generate();
my $server = IO::Socket::INET->new(Listen => 5);
ok($server, 'create socket');
$ENV{TAPPER_REPORT_SERVER} = 'localhost';
$ENV{TAPPER_REPORT_PORT} = $server->sockport;
diag "use port ".$ENV{TAPPER_REPORT_PORT};
my $retval;
my $pid=fork();
if ($pid==0) {
$server->close();
sleep(2); #bad and ugly to prevent race condition
$retval = $track->send($report);
# Can't make this a test since the test counter istn't handled correctly after fork
die $retval if $retval;
exit 0;
} else {
my $content;
eval{
$SIG{ALRM}=sub{die("timeout of 60 seconds reached while waiting for file upload test.");};
alarm(60);
my $msg_sock = $server->accept();
while (my $line=<$msg_sock>) {
$content.=$line;
diag $line;
}
alarm(0);
};
is($@, '', 'Getting report from hwtrack');
my $dom = TAP::DOM->new(tap => $content);
my $res = $dom ~~ dpath '//description[value ~~ /Getting hardware information/]/../_children//data';
ok(scalar @$res, 'File content from upload');
$res = $dom ~~ dpath '//as_string[value =~ /Tapper-Machine-Name/]';
{
is(scalar @$res, 1, 'One entry contains machine name');
last if not ref $res eq 'ARRAY';
is($res->[0], "# Tapper-Machine-Name: $ENV{TAPPER_HOSTNAME}", 'File content from upload');
}
waitpid($pid,0);
}
done_testing();