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