testbot/VMs: Add a function for filtering out offline VMs.

Francois Gouget fgouget at codeweavers.com
Tue Oct 30 22:46:21 CDT 2012


This reduces code duplication and avoids spreading knowledge about the all the VM states everywhere.
---
 testbot/bin/CheckForWinetestUpdate.pl |    3 +--
 testbot/bin/Engine.pl                 |   11 ++++-------
 testbot/lib/WineTestBot/Patches.pm    |    3 +--
 testbot/lib/WineTestBot/VMs.pm        |    7 +++++++
 testbot/web/Submit.pl                 |    4 ++--
 5 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/testbot/bin/CheckForWinetestUpdate.pl b/testbot/bin/CheckForWinetestUpdate.pl
index 5ca5aa9..f8a9128 100755
--- a/testbot/bin/CheckForWinetestUpdate.pl
+++ b/testbot/bin/CheckForWinetestUpdate.pl
@@ -86,8 +86,7 @@ sub AddJob
       $VMs->AddFilter("Type", ["win32", "win64"]);
       $VMs->AddFilter("Role", ["winetest"]);
   }
-  # Don't schedule the 'offline' ones
-  $VMs->AddFilter("Status", ["reverting", "sleeping", "idle", "running", "dirty"]);
+  $VMs->FilterNotOffline();
   foreach my $VMKey (@{$VMs->SortKeysBySortOrder($VMs->GetKeys())})
   {
     my $VM = $VMs->GetItem($VMKey);
diff --git a/testbot/bin/Engine.pl b/testbot/bin/Engine.pl
index b3cfbee..f188212 100755
--- a/testbot/bin/Engine.pl
+++ b/testbot/bin/Engine.pl
@@ -490,14 +490,11 @@ sub InitVMs()
   # On startup we don't know what state the VMs are in. So consider them all
   # to be dirty.
   my $VMs = CreateVMs();
-  foreach my $VMKey (@{$VMs->GetKeys()})
+  $VMs->FilterNotOffline();
+  foreach my $VM (@{$VMs->GetItems()})
   {
-    my $VM = $VMs->GetItem($VMKey);
-    if ($VM->Status ne "offline")
-    {
-        $VM->Status("dirty");
-        $VM->Save();
-    }
+    $VM->Status('dirty');
+    $VM->Save();
   }
 }
 
diff --git a/testbot/lib/WineTestBot/Patches.pm b/testbot/lib/WineTestBot/Patches.pm
index c9e0145..d7dca4e 100644
--- a/testbot/lib/WineTestBot/Patches.pm
+++ b/testbot/lib/WineTestBot/Patches.pm
@@ -238,8 +238,7 @@ sub Submit
         $VMs = CreateVMs();
         $VMs->AddFilter("Type", $Bits eq "32" ? ["win32", "win64"] : ["win64"]);
         $VMs->AddFilter("Role", ["base"]);
-        # Don't schedule the 'offline' ones
-        $VMs->AddFilter("Status", ["reverting", "sleeping", "idle", "running", "dirty"]);
+        $VMs->FilterNotOffline();
         if (@{$VMs->GetKeys()})
         {
           # Create the corresponding Step
diff --git a/testbot/lib/WineTestBot/VMs.pm b/testbot/lib/WineTestBot/VMs.pm
index c616b09..ad6d1b0 100644
--- a/testbot/lib/WineTestBot/VMs.pm
+++ b/testbot/lib/WineTestBot/VMs.pm
@@ -618,6 +618,13 @@ sub SortKeysBySortOrder
   return \@SortedKeys;
 }
 
+sub FilterNotOffline($)
+{
+  my ($self) = @_;
+  # All but the offline ones
+  $self->AddFilter("Status", ["dirty", "reverting", "sleeping", "idle", "running"]);
+}
+
 sub FilterHypervisor
 {
   my $self = shift;
diff --git a/testbot/web/Submit.pl b/testbot/web/Submit.pl
index d8b222d..233583c 100644
--- a/testbot/web/Submit.pl
+++ b/testbot/web/Submit.pl
@@ -238,8 +238,8 @@ sub GenerateFields
       {
           $VMs->AddFilter("Type", ["win32", "win64"]);
       }
-      # Don't even show the 'offline' ones
-      $VMs->AddFilter("Status", ["reverting", "sleeping", "idle", "running", "dirty"]);
+      # Scheduling jobs on offline VMs is not allowed
+      $VMs->FilterNotOffline();
       if ($self->{ShowAll})
       {
         # All but the retired and deleted ones
-- 
1.7.10.4




More information about the wine-patches mailing list