[PATCH] testbot/LibvirtTool: Set up new live snapshots with the latest TestAgentd.

Francois Gouget fgouget at codeweavers.com
Thu Sep 26 06:36:23 CDT 2019


Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 testbot/bin/LibvirtTool.pl     | 46 +++++++++++++++++++++++++++++++---
 testbot/bin/WineRunReconfig.pl |  3 ++-
 testbot/lib/Build/Utils.pm     |  7 ++++++
 3 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/testbot/bin/LibvirtTool.pl b/testbot/bin/LibvirtTool.pl
index 936c38608..37f95e9f1 100755
--- a/testbot/bin/LibvirtTool.pl
+++ b/testbot/bin/LibvirtTool.pl
@@ -365,9 +365,9 @@ sub CheckOff()
   return ChangeStatus("dirty", "off", "done");
 }
 
-sub SetupTestAgentd($$$)
+sub SetupTestAgentd($$$$)
 {
-  my ($VM, $Booting, $ResetStartCount) = @_;
+  my ($VM, $Booting, $UpgradeTestAgentd, $ResetStartCount) = @_;
 
   Debug(Elapsed($Start), " Setting up the $VMKey TestAgent server\n");
   LogMsg "Setting up the $VMKey TestAgent server\n";
@@ -380,6 +380,46 @@ sub SetupTestAgentd($$$)
     FatalError("Could not connect to the $VMKey TestAgent: $ErrMessage\n");
   }
 
+  # Upgrade TestAgentd
+  if ($UpgradeTestAgentd and ($VM->Type eq "win32" or $VM->Type eq "win64"))
+  {
+    Debug(Elapsed($Start), " Upgrading the $VMKey TestAgent server from $Version\n");
+    LogMsg "Upgrading the $VMKey TestAgent server from $Version\n";
+    if ($Version !~ / ([0-9]+)\.([0-9]+)$/)
+    {
+      FatalError("Unsupported TestAgent server version: $Version\n");
+    }
+    # We want 'TestAgentd --detach --show-restarts' on Windows but this was
+    # not supported before this version and changing how the server is started
+    # is too complex.
+    $Version = sprintf("%02d.%02d", $1, $2);
+    if ($Version lt "01.07")
+    {
+      FatalError("The TestAgent server is too old to be upgraded: $Version\n");
+    }
+
+    if (!$TA->Upgrade("$DataDir/latest/TestAgentd.exe"))
+    {
+      my $ErrMessage = $TA->GetLastError();
+      FatalError("Could not upgrade the $VMKey TestAgent: $ErrMessage\n");
+    }
+    # Give the server enough time to restart, thus (maybe) avoiding a timeout
+    # on the first (re)connection attempt.
+    sleep(1);
+    $Version = $TA->GetVersion();
+    if (!$Version)
+    {
+      my $ErrMessage = $TA->GetLastError();
+      FatalError("Could not connect to the new $VMKey TestAgent: $ErrMessage\n");
+    }
+    LogMsg "Upgraded the $VMKey TestAgent server to $Version\n";
+
+    # Note that the privileged TestAgent server (if any) is usually run with
+    # --set-time-only which means it cannot be upgraded since the restart RPC
+    # is blacklisted. But that also means it's unlikely to need upgrading.
+    # A side effect is that it will force TestAgentd.exe.old to stay around.
+  }
+
   if ($ResetStartCount)
   {
     # If SetProperty() is not supported neither is --show-restarts.
@@ -516,7 +556,7 @@ sub Revert()
 
   # Set up the TestAgent server. Note that setting the locale will require a
   # reboot so reset start.count in that case.
-  SetupTestAgentd($VM, $Booting, $SetLocale);
+  SetupTestAgentd($VM, $Booting, ($CreateSnapshot or $SetLocale), $SetLocale);
 
   if ($CreateSnapshot)
   {
diff --git a/testbot/bin/WineRunReconfig.pl b/testbot/bin/WineRunReconfig.pl
index f4238873e..ddb2208e2 100755
--- a/testbot/bin/WineRunReconfig.pl
+++ b/testbot/bin/WineRunReconfig.pl
@@ -464,7 +464,8 @@ FatalTAError(undef, $TAError) if (defined $TAError);
 if ($NewStatus eq "completed")
 {
   use File::Copy;
-  foreach my $FileName ("../src/TestLauncher/TestLauncher32.exe",
+  foreach my $FileName ("../src/testagentd/TestAgentd.exe",
+                        "../src/TestLauncher/TestLauncher32.exe",
                         "../src/TestLauncher/TestLauncher64.exe",
                         "latest/winefiles.txt",
                         "latest/wine-parentsrc.txt")
diff --git a/testbot/lib/Build/Utils.pm b/testbot/lib/Build/Utils.pm
index 50d573523..9a4590677 100644
--- a/testbot/lib/Build/Utils.pm
+++ b/testbot/lib/Build/Utils.pm
@@ -215,6 +215,9 @@ sub BuildNativeTestAgentd()
 
 sub BuildWindowsTestAgentd()
 {
+  my $WindowsTestAgentd = "$::RootDir/src/testagentd/TestAgentd.exe";
+  my $Before = GetMTime($WindowsTestAgentd);
+
   InfoMsg "\nRebuilding the Windows TestAgentd\n";
   my $CPUCount = GetCPUCount();
   system("cd '$::RootDir/src/testagentd' && set -x && ".
@@ -225,6 +228,10 @@ sub BuildWindowsTestAgentd()
     return !1;
   }
 
+  if ($Before != GetMTime($WindowsTestAgentd))
+  {
+    LogMsg "Updated TestAgentd.exe\n";
+  }
   return 1;
 }
 
-- 
2.20.1




More information about the wine-devel mailing list