Francois Gouget : testbot/WineRunTask: Detect test timeouts and set the task status accordingly.
Alexandre Julliard
julliard at winehq.org
Mon Apr 1 09:53:41 CDT 2013
Module: tools
Branch: master
Commit: 4e09d313b4c2607107b0b6106dcad9501a24eaad
URL: http://source.winehq.org/git/tools.git/?a=commit;h=4e09d313b4c2607107b0b6106dcad9501a24eaad
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Fri Mar 29 14:04:15 2013 +0100
testbot/WineRunTask: Detect test timeouts and set the task status accordingly.
Also simplify the error handling code.
---
testbot/bin/WineRunTask.pl | 72 ++++++++++++++++++++++++-------------------
1 files changed, 40 insertions(+), 32 deletions(-)
diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index 991e143..4428b6b 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -314,52 +314,60 @@ if (!$TA->SendFileFromString($Script, "script.bat", $TestAgent::SENDFILE_EXE))
my $Pid = $TA->Run(["./script.bat"], 0);
if (!$Pid or !defined $TA->Wait($Pid, $Timeout))
{
- $ErrMessage = $TA->GetLastError();
+ $ErrMessage = "Failure running script in VM: " . $TA->GetLastError();
}
-my $LogErrMessage;
-if (!$TA->GetFile($RptFileName, $FullLogFileName))
-{
- $LogErrMessage = $TA->GetLastError();
-}
-elsif ($Step->Type eq "suite")
+my $NewStatus = "boterror";
+if ($TA->GetFile($RptFileName, $FullLogFileName))
{
- chmod 0664, $FullLogFileName;
+ my $TestFailures = CountFailures($FullLogFileName);
+ if (!defined $TestFailures)
+ {
+ if (($ErrMessage || "") =~ /timed out waiting for the child process/)
+ {
+ LogTaskError("The test timed out\n", $FullErrFileName);
+ $ErrMessage = undef;
+ }
+ else
+ {
+ LogTaskError("No test summary line found\n", $FullErrFileName);
+ }
+ $TestFailures = 1;
+ }
+ $Task->TestFailures($TestFailures);
+ $NewStatus = "completed";
+
+ if ($Step->Type eq "suite")
+ {
+ chmod 0664, $FullLogFileName;
+ }
+ else
+ {
+ chmod 0664, $FullLogFileName;
+ my $LatestNameBase = "$DataDir/latest/" . $VM->Name . "_" .
+ ($Step->FileType eq "exe64" ? "64" : "32");
+ unlink("${LatestNameBase}.log");
+ unlink("${LatestNameBase}.err");
+ link("$DataDir/jobs/" . $Job->Id . "/" . $Step->No . "/" . $Task->No . "/log",
+ "${LatestNameBase}.log");
+ }
}
-else
+elsif (!defined $ErrMessage)
{
- chmod 0664, $FullLogFileName;
- my $LatestNameBase = "$DataDir/latest/" . $VM->Name . "_" .
- ($Step->FileType eq "exe64" ? "64" : "32");
- unlink("${LatestNameBase}.log");
- unlink("${LatestNameBase}.err");
- link("$DataDir/jobs/" . $Job->Id . "/" . $Step->No . "/" . $Task->No . "/log",
- "${LatestNameBase}.log");
+ $ErrMessage = "Can't copy log from VM: " . $TA->GetLastError();
}
TakeScreenshot $VM, $FullScreenshotFileName;
-if (defined($ErrMessage))
-{
- FatalError "Failure running script in VM: $ErrMessage\n",
- $FullErrFileName, $Job, $Step, $Task;
-}
-if (defined($LogErrMessage))
+if (defined $ErrMessage)
{
- FatalError "Can't copy log from VM: $LogErrMessage\n",
- $FullErrFileName, $Job, $Step, $Task;
+ FatalError "$ErrMessage\n", $FullErrFileName, $Job, $Step, $Task;
}
$TA->Disconnect();
-$Task->Status("completed");
+$Task->Status($NewStatus);
$Task->ChildPid(undef);
$Task->Ended(time);
-my $TestFailures = CountFailures($FullLogFileName);
-if (!defined $TestFailures)
-{
- LogTaskError("No test summary line found\n", $FullErrFileName);
- $TestFailures = 1;
-}
-$Task->TestFailures($TestFailures);
+
$Task->Save();
$Job->UpdateStatus();
More information about the wine-cvs
mailing list