testbot: Cleanup uses of GetKeys(), GetItem(), GetKey() and CreateCollection().

Francois Gouget fgouget at codeweavers.com
Tue Oct 30 22:47:17 CDT 2012


Specifically:
- Use GetItems() instead of GetKeys() where appropriate. This way the code is simpler and we avoid one call to GetItem() for each iteration.
- Don't call GetKey() when we already have the object's key in a variable.
- Don't store the result of CreateCollection() in a variable if we are only going to use it once.
---
 testbot/bin/CheckForWinetestUpdate.pl       |   11 +++-----
 testbot/bin/Engine.pl                       |   17 +++++-------
 testbot/bin/Janitor.pl                      |   38 +++++++++------------------
 testbot/bin/RevertVM.pl                     |    3 +--
 testbot/bin/WineRunBuild.pl                 |   10 +++----
 testbot/bin/WineRunReconfig.pl              |    4 +--
 testbot/bin/WineRunTask.pl                  |    4 +--
 testbot/bin/WineSendLog.pl                  |    3 +--
 testbot/lib/WineTestBot/Branches.pm         |    8 ++----
 testbot/lib/WineTestBot/CGI/Sessions.pm     |    6 +----
 testbot/lib/WineTestBot/Jobs.pm             |   35 +++++++-----------------
 testbot/lib/WineTestBot/Patches.pm          |   12 ++++-----
 testbot/lib/WineTestBot/PendingPatchSets.pm |    3 +--
 testbot/lib/WineTestBot/StepsTasks.pm       |    8 ++----
 testbot/lib/WineTestBot/Tasks.pm            |    4 +--
 testbot/lib/WineTestBot/Users.pm            |    6 ++---
 testbot/lib/WineTestBot/VMs.pm              |    9 +++----
 testbot/web/JobDetails.pl                   |    5 ++--
 testbot/web/Submit.pl                       |   24 +++++++----------
 19 files changed, 67 insertions(+), 143 deletions(-)

diff --git a/testbot/bin/CheckForWinetestUpdate.pl b/testbot/bin/CheckForWinetestUpdate.pl
index f8a9128..89c828f 100755
--- a/testbot/bin/CheckForWinetestUpdate.pl
+++ b/testbot/bin/CheckForWinetestUpdate.pl
@@ -89,9 +89,8 @@ sub AddJob
   $VMs->FilterNotOffline();
   foreach my $VMKey (@{$VMs->SortKeysBySortOrder($VMs->GetKeys())})
   {
-    my $VM = $VMs->GetItem($VMKey);
     my $Task = $Tasks->Add();
-    $Task->VM($VM);
+    $Task->VM($VMs->GetItem($VMKey));
     $Task->Timeout($SuiteTimeout);
     $HasTasks = 1;
   }
@@ -128,14 +127,12 @@ sub AddReconfigJob
   $NewStep->InStaging(!1);
 
   # Add a task for the build VM
-  my $Tasks = $NewStep->Tasks;
   my $VMs = CreateVMs();
   $VMs->AddFilter("Type", ["build"]);
   $VMs->AddFilter("Role", ["base"]);
-  my $BuildKey = ${$VMs->GetKeys()}[0];
-  my $VM = $VMs->GetItem($BuildKey);
-  my $Task = $Tasks->Add();
-  $Task->VM($VM);
+  my $BuildVM = ${$VMs->GetItems()}[0];
+  my $Task = $NewStep->Tasks->Add();
+  $Task->VM($BuildVM);
   $Task->Timeout($ReconfigTimeout);
 
   # Now save the whole thing
diff --git a/testbot/bin/Engine.pl b/testbot/bin/Engine.pl
index f188212..7bd14a1 100755
--- a/testbot/bin/Engine.pl
+++ b/testbot/bin/Engine.pl
@@ -61,8 +61,7 @@ sub HandleJobSubmit
 {
   my $JobKey = $_[0];
 
-  my $Jobs = CreateJobs();
-  my $Job = $Jobs->GetItem($JobKey);
+  my $Job = CreateJobs()->GetItem($JobKey);
   if (! $Job)
   {
     LogMsg "JobSubmit for nonexistent job $JobKey\n";
@@ -73,10 +72,8 @@ sub HandleJobSubmit
   $JobKey = $1;
 
   my $ErrMessage;
-  my $Steps = $Job->Steps;
-  foreach my $StepKey (@{$Steps->GetKeys()})
+  foreach my $Step (@{$Job->Steps->GetItems()})
   {
-    my $Step = $Steps->GetItem($StepKey);
     $ErrMessage = $Step->HandleStaging($JobKey);
     if (defined($ErrMessage))
     {
@@ -339,12 +336,11 @@ sub HandleWinePatchWebNotification
   }
 
   my $MaxExistingWebPatchId = 0;
-  my $Patches = CreatePatches();
-  foreach my $PatchKey (@{$Patches->GetKeys()})
+  foreach my $Patch (@{CreatePatches()->GetItems()})
   {
-    if ($MaxExistingWebPatchId < $Patches->GetItem($PatchKey)->WebPatchId)
+    if ($MaxExistingWebPatchId < $Patch->WebPatchId)
     {
-      $MaxExistingWebPatchId = $Patches->GetItem($PatchKey)->WebPatchId;
+      $MaxExistingWebPatchId = $Patch->WebPatchId;
     }
   }
 
@@ -423,8 +419,7 @@ sub HandleGetScreenshot
   }
   my $VMName = $1;
 
-  my $VMs = CreateVMs();
-  my $VM = $VMs->GetItem($VMName);
+  my $VM = CreateVMs()->GetItem($VMName);
   if (! defined($VM))
   {
     LogMsg "Unknown VM $VMName for screenshot\n";
diff --git a/testbot/bin/Janitor.pl b/testbot/bin/Janitor.pl
index e978aa3..57aa172 100755
--- a/testbot/bin/Janitor.pl
+++ b/testbot/bin/Janitor.pl
@@ -46,9 +46,8 @@ if ($JobPurgeDays != 0)
 {
   my $DeleteBefore = time() - $JobPurgeDays * 86400;
   my $Jobs = CreateJobs();
-  foreach my $JobKey (@{$Jobs->GetKeys()})
+  foreach my $Job (@{$Jobs->GetItems()})
   {
-    my $Job = $Jobs->GetItem($JobKey);
     if (defined($Job->Ended) && $Job->Ended < $DeleteBefore)
     {
       LogMsg "Deleting job ", $Job->Id, "\n";
@@ -65,15 +64,13 @@ if ($JobPurgeDays != 0)
 
 # Delete PatchSets that are more than a day old
 my $DeleteBefore = time() - 1 * 86400;
-my $Sets = WineTestBot::PendingPatchSets::CreatePendingPatchSets();
-foreach my $SetKey (@{$Sets->GetKeys()})
+my $Sets = CreatePendingPatchSets();
+foreach my $Set (@{$Sets->GetItems()})
 {
-  my $Set = $Sets->GetItem($SetKey);
-  my $Parts = $Set->Parts;
   my $MostRecentPatch;
-  foreach my $PartKey (@{$Parts->GetKeys()})
+  foreach my $Part (@{$Set->Parts->GetItems()})
   {
-    my $Patch = $Parts->GetItem($PartKey)->Patch;
+    my $Patch = $Part->Patch;
     if (! defined($MostRecentPatch) ||
         $MostRecentPatch->Received < $Patch->Received)
     {
@@ -95,9 +92,8 @@ if ($JobPurgeDays != 0)
 {
   $DeleteBefore = time() - $JobPurgeDays * 86400;
   my $Patches = CreatePatches();
-  foreach my $PatchKey (@{$Patches->GetKeys()})
+  foreach my $Patch (@{$Patches->GetItems()})
   {
-    my $Patch = $Patches->GetItem($PatchKey);
     if ($Patch->Received < $DeleteBefore)
     {
       my $Jobs = CreateJobs();
@@ -123,17 +119,13 @@ if ($JobArchiveDays != 0)
   my $ArchiveBefore = time() - $JobArchiveDays * 86400;
   my $Jobs = CreateJobs();
   $Jobs->FilterNotArchived();
-  foreach my $JobKey (@{$Jobs->GetKeys()})
+  foreach my $Job (@{$Jobs->GetItems()})
   {
-    my $Job = $Jobs->GetItem($JobKey);
     if (defined($Job->Ended) && $Job->Ended < $ArchiveBefore)
     {
       LogMsg "Archiving job ", $Job->Id, "\n";
-
-      my $Steps = $Job->Steps;
-      foreach my $StepKey (@{$Steps->GetKeys()})
+      foreach my $Step (@{$Job->Steps->GetItems()})
       {
-        my $Step = $Steps->GetItem($StepKey);
         unlink "$DataDir/jobs/" . $Job->Id . "/" . $Step->No . "/" .
                $Step->FileName;
       }
@@ -153,21 +145,15 @@ map { $DeleteList{$_} = 1 } @{$VMs->GetKeys()};
 
 if (%DeleteList)
 {
-  my $Jobs = CreateJobs();
-  foreach my $JobKey (@{$Jobs->GetKeys()})
+  foreach my $Job (@{CreateJobs()->GetItems()})
   {
-    my $Job = $Jobs->GetItem($JobKey);
-    my $Steps = $Job->Steps;
-    foreach my $StepKey (@{$Steps->GetKeys()})
+    foreach my $Step (@{$Job->Steps->GetItems()})
     {
-      my $Step = $Steps->GetItem($StepKey);
-      my $Tasks = $Step->Tasks;
-      foreach my $TaskKey (@{$Tasks->GetKeys()})
+      foreach my $Task (@{$Step->Tasks->GetItems()})
       {
-        my $Task = $Tasks->GetItem($TaskKey);
         if (exists $DeleteList{$Task->VM->Name})
         {
-          LogMsg "Keeping the ", $Task->VM->Name, " VM for task (", join(":", $JobKey, $StepKey, $TaskKey), ")\n";
+          LogMsg "Keeping the ", $Task->VM->Name, " VM for task ", join("/", @{$Task->GetMasterKey()}), "\n";
           delete $DeleteList{$Task->VM->Name};
         }
       }
diff --git a/testbot/bin/RevertVM.pl b/testbot/bin/RevertVM.pl
index 7104a28..8fbc22a 100755
--- a/testbot/bin/RevertVM.pl
+++ b/testbot/bin/RevertVM.pl
@@ -76,8 +76,7 @@ if (! $VMKey)
   die "Usage: RevertVM.pl VMName";
 }
 
-my $VMs = CreateVMs();
-my $VM = $VMs->GetItem($VMKey);
+my $VM = CreateVMs()->GetItem($VMKey);
 if (! defined($VM))
 {
   FatalError "VM $VMKey doesn't exist";
diff --git a/testbot/bin/WineRunBuild.pl b/testbot/bin/WineRunBuild.pl
index 65da630..40c46e4 100755
--- a/testbot/bin/WineRunBuild.pl
+++ b/testbot/bin/WineRunBuild.pl
@@ -154,8 +154,7 @@ else
   FatalError "Invalid TaskNo $TaskNo\n";
 }
 
-my $Jobs = CreateJobs();
-my $Job = $Jobs->GetItem($JobId);
+my $Job = CreateJobs()->GetItem($JobId);
 if (! defined($Job))
 {
   FatalError "Job $JobId doesn't exist\n";
@@ -189,9 +188,8 @@ my $FullErrFileName = "$TaskDir/err";
 
 my $BaseName;
 my $Run64 = !1;
-foreach my $StepKey (@{$Job->Steps->GetKeys()})
+foreach my $OtherStep (@{$Job->Steps->GetItems()})
 {
-  my $OtherStep = $Job->Steps->GetItem($StepKey);
   if ($OtherStep->No != $StepNo)
   {
     my $OtherFileName = $OtherStep->FileName;
@@ -267,9 +265,8 @@ if (defined($ErrMessage))
 my $NewStatus = ProcessRawlog($FullRawlogFileName, $FullLogFileName,
                               $FullErrFileName) ? "completed" : "failed";
 
-foreach my $StepKey (@{$Job->Steps->GetKeys()})
+foreach my $OtherStep (@{$Job->Steps->GetItems()})
 {
-  my $OtherStep = $Job->Steps->GetItem($StepKey);
   if ($OtherStep->No != $StepNo)
   {
     my $OtherFileName = $OtherStep->FileName;
@@ -311,7 +308,6 @@ $VM->Save();
 $Task = undef;
 $Step = undef;
 $Job = undef;
-$Jobs = undef;
 
 TaskComplete($JobId, $StepNo, $TaskNo);
 
diff --git a/testbot/bin/WineRunReconfig.pl b/testbot/bin/WineRunReconfig.pl
index ba03fbd..67bb07b 100755
--- a/testbot/bin/WineRunReconfig.pl
+++ b/testbot/bin/WineRunReconfig.pl
@@ -154,8 +154,7 @@ else
   FatalError "Invalid TaskNo $TaskNo\n";
 }
 
-my $Jobs = CreateJobs();
-my $Job = $Jobs->GetItem($JobId);
+my $Job = CreateJobs()->GetItem($JobId);
 if (! defined($Job))
 {
   FatalError "Job $JobId doesn't exist\n";
@@ -248,7 +247,6 @@ $VM->Save();
 $Task = undef;
 $Step = undef;
 $Job = undef;
-$Jobs = undef;
 
 TaskComplete($JobId, $StepNo, $TaskNo);
 
diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index edcfd81..ef9d78c 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -194,8 +194,7 @@ else
   FatalError "Invalid TaskNo $TaskNo\n";
 }
 
-my $Jobs = CreateJobs();
-my $Job = $Jobs->GetItem($JobId);
+my $Job = CreateJobs()->GetItem($JobId);
 if (! defined($Job))
 {
   FatalError "Job $JobId doesn't exist\n";
@@ -359,7 +358,6 @@ $VM->Save();
 $Task = undef;
 $Step = undef;
 $Job = undef;
-$Jobs = undef;
 
 TaskComplete($JobId, $StepNo, $TaskNo);
 
diff --git a/testbot/bin/WineSendLog.pl b/testbot/bin/WineSendLog.pl
index 768e129..b039e2e 100755
--- a/testbot/bin/WineSendLog.pl
+++ b/testbot/bin/WineSendLog.pl
@@ -524,8 +524,7 @@ else
   FatalError "Invalid JobId $JobId\n";
 }
 
-my $Jobs = CreateJobs();
-my $Job = $Jobs->GetItem($JobId);
+my $Job = CreateJobs()->GetItem($JobId);
 if (! defined($Job))
 {
   FatalError "Job $JobId doesn't exist\n";
diff --git a/testbot/lib/WineTestBot/Branches.pm b/testbot/lib/WineTestBot/Branches.pm
index ec80543..56f9965 100644
--- a/testbot/lib/WineTestBot/Branches.pm
+++ b/testbot/lib/WineTestBot/Branches.pm
@@ -62,13 +62,9 @@ sub GetDefaultBranch
 {
   my $self = shift;
 
-  foreach my $Key (@{$self->GetKeys()})
+  foreach my $Branch (@{$self->GetItems()})
   {
-    my $Branch = $self->GetItem($Key);
-    if ($Branch->IsDefault)
-    {
-      return $Branch;
-    }
+    return $Branch if ($Branch->IsDefault);
   }
 
   return undef;
diff --git a/testbot/lib/WineTestBot/CGI/Sessions.pm b/testbot/lib/WineTestBot/CGI/Sessions.pm
index cd423bf..6cf8b71 100644
--- a/testbot/lib/WineTestBot/CGI/Sessions.pm
+++ b/testbot/lib/WineTestBot/CGI/Sessions.pm
@@ -82,11 +82,7 @@ sub DeleteNonPermanentSessions
 
   $self->AddFilter("User", [$User]);
   $self->AddFilter("Permanent", [!1]);
-
-  foreach my $Key (@{$self->GetKeys()})
-  {
-    $self->DeleteItem($self->GetItem($Key));
-  }
+  map { $self->DeleteItem($_); } @{$self->GetItems()};
 }
 
 sub NewSession
diff --git a/testbot/lib/WineTestBot/Jobs.pm b/testbot/lib/WineTestBot/Jobs.pm
index de66023..f4be9dc 100644
--- a/testbot/lib/WineTestBot/Jobs.pm
+++ b/testbot/lib/WineTestBot/Jobs.pm
@@ -120,25 +120,22 @@ sub UpdateStatus
 {
   my $self = shift;
 
-  my $Steps = $self->Steps;
   my $HasQueuedStep = !1;
   my $HasRunningStep = !1;
   my $HasCompletedStep = !1;
   my $HasFailedStep = !1;
-  my @SortedSteps = sort { $a->No <=> $b->No } @{$Steps->GetItems()};
+  my @SortedSteps = sort { $a->No <=> $b->No } @{$self->Steps->GetItems()};
   foreach my $Step (@SortedSteps)
   {
     my $Status = $Step->Status;
     if ($Status eq "queued" || $Status eq "running")
     {
-      my $Tasks = $Step->Tasks;
       my $HasQueuedTask = !1;
       my $HasRunningTask = !1;
       my $HasCompletedTask = !1;
       my $HasFailedTask = !1;
-      foreach my $TaskKey (@{$Tasks->GetKeys()})
+      foreach my $Task (@{$Step->Tasks->GetItems()})
       {
-        my $Task = $Tasks->GetItem($TaskKey);
         $Status = $Task->Status;
         if ($HasFailedStep && $Status eq "queued")
         {
@@ -216,17 +213,13 @@ sub Cancel
 {
   my $self = shift;
 
-  my $Steps = $self->Steps;
-  foreach my $StepKey (@{$Steps->GetKeys()})
+  foreach my $Step (@{$self->Steps->GetItems()})
   {
-    my $Step = $Steps->GetItem($StepKey);
     my $Status = $Step->Status;
     if ($Status eq "queued" || $Status eq "running")
     {
-      my $Tasks = $Step->Tasks;
-      foreach my $TaskKey (@{$Tasks->GetKeys()})
+      foreach my $Task (@{$Step->Tasks->GetItems()})
       {
-        my $Task = $Tasks->GetItem($TaskKey);
         if ($Task->Status eq "queued")
         {
           $Task->Status("skipped");
@@ -236,16 +229,13 @@ sub Cancel
     }
   }
 
-  foreach my $StepKey (@{$Steps->GetKeys()})
+  foreach my $Step (@{$self->Steps->GetItems()})
   {
-    my $Step = $Steps->GetItem($StepKey);
     my $Status = $Step->Status;
     if ($Status eq "queued" || $Status eq "running")
     {
-      my $Tasks = $Step->Tasks;
-      foreach my $TaskKey (@{$Tasks->GetKeys()})
+      foreach my $Task (@{$Step->Tasks->GetItems()})
       {
-        my $Task = $Tasks->GetItem($TaskKey);
         if ($Task->Status eq "running")
         {
           if (defined($Task->ChildPid))
@@ -546,11 +536,9 @@ sub Schedule
 {
   my $self = shift;
 
-  my $VMs = CreateVMs();
   my %Hosts;
-  foreach my $VMKey (@{$VMs->GetKeys()})
+  foreach my $VM (@{CreateVMs()->GetItems()})
   {
-    my $VM = $VMs->GetItem($VMKey);
     my $Host = $VM->GetHost();
     $Hosts{$Host}->{$VM->VirtURI} = 1;
   }
@@ -588,15 +576,13 @@ sub Check
   my $self = shift;
 
   $self->AddFilter("Status", ["queued", "running"]);
-  foreach my $JobKey (@{$self->GetKeys()})
+  foreach my $Job (@{$self->GetItems()})
   {
-    my $Job = $self->GetItem($JobKey);
-    my $Steps = $Job->Steps;
     my $HasQueuedStep = !1;
     my $HasRunningStep = !1;
     my $HasCompletedStep = !1;
     my $HasFailedStep = !1;
-    my @SortedSteps = sort { $a->No <=> $b->No } @{$Steps->GetItems()};
+    my @SortedSteps = sort { $a->No <=> $b->No } @{$Job->Steps->GetItems()};
     foreach my $Step (@SortedSteps)
     {
       my $Status = $Step->Status;
@@ -607,9 +593,8 @@ sub Check
         my $HasRunningTask = !1;
         my $HasCompletedTask = !1;
         my $HasFailedTask = !1;
-        foreach my $TaskKey (@{$Tasks->GetKeys()})
+        foreach my $Task (@{$Tasks->GetItems()})
         {
-          my $Task = $Tasks->GetItem($TaskKey);
           my $Dead = !1;
           if (defined($Task->ChildPid) && ! kill 0 => $Task->ChildPid)
           {
diff --git a/testbot/lib/WineTestBot/Patches.pm b/testbot/lib/WineTestBot/Patches.pm
index d7dca4e..2852242 100644
--- a/testbot/lib/WineTestBot/Patches.pm
+++ b/testbot/lib/WineTestBot/Patches.pm
@@ -175,7 +175,7 @@ sub Submit
     $Users->AddFilter("EMail", [$self->FromEMail]);
     if (! $Users->IsEmpty())
     {
-      $User = $Users->GetItem(@{$Users->GetKeys()}[0]);
+      $User = @{$Users->GetItems()}[0];
     }
   }
   if (! defined($User))
@@ -220,14 +220,12 @@ sub Submit
     $NewStep->DebugLevel(0);
   
     # Add build task
-    my $Tasks = $NewStep->Tasks;
     my $VMs = CreateVMs();
     $VMs->AddFilter("Type", ["build"]);
     $VMs->AddFilter("Role", ["base"]);
-    my $BuildKey = ${$VMs->GetKeys()}[0];
-    my $VM = $VMs->GetItem($BuildKey);
-    my $Task = $Tasks->Add();
-    $Task->VM($VM);
+    my $BuildVM = ${$VMs->GetItems()}[0];
+    my $Task = $NewStep->Tasks->Add();
+    $Task->VM($BuildVM);
     $Task->Timeout($BuildTimeout);
   
     foreach my $TestSet (keys %{$Targets{$BaseName}})
@@ -250,9 +248,9 @@ sub Submit
           $NewStep->FileName("$FileName.exe");
           $NewStep->FileType("exe$Bits");
           $NewStep->InStaging(!1);
-          $Tasks = $NewStep->Tasks;
 
           # And a task for each VM
+          my $Tasks = $NewStep->Tasks;
           my $SortedKeys = $VMs->SortKeysBySortOrder($VMs->GetKeys());
           foreach my $VMKey (@$SortedKeys)
           {
diff --git a/testbot/lib/WineTestBot/PendingPatchSets.pm b/testbot/lib/WineTestBot/PendingPatchSets.pm
index 1a6b9e5..49dad4a 100644
--- a/testbot/lib/WineTestBot/PendingPatchSets.pm
+++ b/testbot/lib/WineTestBot/PendingPatchSets.pm
@@ -316,9 +316,8 @@ sub CheckForCompleteSet
   my $self = shift;
 
   my $ErrMessage;
-  foreach my $SetKey (@{$self->GetKeys()})
+  foreach my $Set (@{$self->GetItems()})
   {
-    my $Set = $self->GetItem($SetKey);
     if ($Set->CheckComplete())
     {
       my $Patch = $Set->Parts->GetItem($Set->TotalParts)->Patch;
diff --git a/testbot/lib/WineTestBot/StepsTasks.pm b/testbot/lib/WineTestBot/StepsTasks.pm
index 4ffd812..810d5c4 100644
--- a/testbot/lib/WineTestBot/StepsTasks.pm
+++ b/testbot/lib/WineTestBot/StepsTasks.pm
@@ -122,14 +122,10 @@ sub _initialize
 
   $self->SUPER::_initialize(@_);
 
-  my $Steps = $Job->Steps;
-  foreach my $StepKey (@{$Steps->GetKeys()})
+  foreach my $Step (@{$Job->Steps->GetItems()})
   {
-    my $Step = $Steps->GetItem($StepKey);
-    my $Tasks = $Step->Tasks;
-    foreach my $TaskKey (@{$Tasks->GetKeys()})
+    foreach my $Task (@{$Step->Tasks->GetItems()})
     {
-      my $Task = $Tasks->GetItem($TaskKey);
       my $StepTask = $self->CreateItem();
       $StepTask->Id(100 * $Step->No + $Task->No);
       $StepTask->StepNo($Step->No);
diff --git a/testbot/lib/WineTestBot/Tasks.pm b/testbot/lib/WineTestBot/Tasks.pm
index 2630ee2..f0ff98c 100644
--- a/testbot/lib/WineTestBot/Tasks.pm
+++ b/testbot/lib/WineTestBot/Tasks.pm
@@ -82,8 +82,7 @@ sub Run
   my $Pid = fork;
   if (defined($Pid) && ! $Pid)
   {
-    my $Jobs = WineTestBot::Jobs::CreateJobs();
-    my $Job = $Jobs->GetItem($JobId);
+    my $Job = WineTestBot::Jobs::CreateJobs()->GetItem($JobId);
     my $Step = $Job->Steps->GetItem($StepNo);
     my $RunScript;
     if ($Step->Type eq "build")
@@ -100,7 +99,6 @@ sub Run
     }
     $Step = undef;
     $Job = undef;
-    $Jobs = undef;
     $ENV{PATH} = "/usr/bin:/bin";
     delete $ENV{ENV};
     exec($RunScript, $JobId, $StepNo, $self->No);
diff --git a/testbot/lib/WineTestBot/Users.pm b/testbot/lib/WineTestBot/Users.pm
index d5ed7d3..2e6eedc 100644
--- a/testbot/lib/WineTestBot/Users.pm
+++ b/testbot/lib/WineTestBot/Users.pm
@@ -291,8 +291,7 @@ sub HasRole
   my $self = shift;
   my $RoleName = shift;
 
-  my $Roles = $self->Roles;
-  return defined($Roles->GetItem($RoleName));
+  return defined($self->Roles->GetItem($RoleName));
 }
 
 package WineTestBot::Users;
@@ -412,8 +411,7 @@ sub GetBatchUser
 {
   my $class = shift;
 
-  my $Users = $class->CreateUsers();
-  return $Users->GetItem("batch");
+  return $class->CreateUsers()->GetItem("batch");
 }
 
 sub SetCurrentUser
diff --git a/testbot/lib/WineTestBot/VMs.pm b/testbot/lib/WineTestBot/VMs.pm
index ad6d1b0..4cc64d7 100644
--- a/testbot/lib/WineTestBot/VMs.pm
+++ b/testbot/lib/WineTestBot/VMs.pm
@@ -556,10 +556,9 @@ sub CountRevertingRunningVMs
   my $RevertingVMs = 0;
   my $RunningVMs = 0;
 
-  foreach my $VMKey (@{$self->GetKeys()})
+  foreach my $VM (@{$self->GetItems()})
   {
-    my $VMStatus = $self->GetItem($VMKey)->Status;
-
+    my $VMStatus = $VM->Status;
     if ($VMStatus eq "reverting")
     {
       $RevertingVMs++;
@@ -578,11 +577,9 @@ sub CountPoweredOnNonBaseVMs
   my $self = shift;
 
   my $PowerdOnVMs = 0;
-  foreach my $VMKey (@{$self->GetKeys()})
+  foreach my $VM (@{$self->GetItems()})
   {
-    my $VM = $self->GetItem($VMKey);
     my $VMStatus = $VM->Status;
-
     if ($VM->Role ne "base" &&
         ($VMStatus eq "reverting" ||
          $VMStatus eq "sleeping" ||
diff --git a/testbot/web/JobDetails.pl b/testbot/web/JobDetails.pl
index ea07014..2ca81b8 100644
--- a/testbot/web/JobDetails.pl
+++ b/testbot/web/JobDetails.pl
@@ -169,10 +169,9 @@ sub GeneratePage
 {
   my $self = shift;
 
-  foreach my $Key (@{$self->{Collection}->GetKeys()})
+  foreach my $Job (@{$self->{Collection}->GetItems()})
   {
-    my $Item = $self->{Collection}->GetItem($Key);
-    if ($Item->Status eq "queued" || $Item->Status eq "running")
+    if ($Job->Status eq "queued" || $Job->Status eq "running")
     {
       $self->{Request}->headers_out->add("Refresh", "30");
       last;
diff --git a/testbot/web/Submit.pl b/testbot/web/Submit.pl
index 233583c..d774b9a 100644
--- a/testbot/web/Submit.pl
+++ b/testbot/web/Submit.pl
@@ -155,7 +155,7 @@ sub GenerateFields
       {
         my $Branch = $Branches->GetItem($Key);
         print "<option value='", $self->CGI->escapeHTML($Key), "'";
-        if ($Branch->GetKey() eq $SelectedBranchKey)
+        if ($Key eq $SelectedBranchKey)
         {
           print " selected";
         }
@@ -215,7 +215,6 @@ sub GenerateFields
         $VMs->AddFilter("Role", ["winetest", "extra"]);
         foreach my $VMKey (@{$VMs->GetKeys()})
         {
-          my $VM = $VMs->GetItem($VMKey);
           my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
           if (defined $self->GetParam($FieldName))
           {
@@ -253,7 +252,7 @@ sub GenerateFields
       foreach my $VMKey (@$SortedKeys)
       {
         my $VM = $VMs->GetItem($VMKey);
-        my $FieldName = "vm_" . $self->CGI->escapeHTML($VM->GetKey());
+        my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
         print "<div class='ItemProperty'><label>",
               $self->CGI->escapeHTML($VM->Name);
         if ($VM->Description)
@@ -278,8 +277,7 @@ sub GenerateFields
       my $VMs = CreateVMs();
       foreach my $VMKey (@{$VMs->GetKeys()})
       {
-        my $VM = $VMs->GetItem($VMKey);
-        my $FieldName = "vm_" . $self->CGI->escapeHTML($VM->GetKey());
+        my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
         if ($self->GetParam($FieldName))
         {
           print "<div><input type='hidden' name='$FieldName' value='on'>",
@@ -377,8 +375,7 @@ sub DisplayProperty
         $VMs->AddFilter("Type", ["win64"]);
         foreach my $VMKey (@{$VMs->GetKeys()})
         {
-          my $VM = $VMs->GetItem($VMKey);
-          my $FieldName = "vm_" . $self->CGI->escapeHTML($VM->GetKey());
+          my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
           if ($self->GetParam($FieldName))
           {
             $Show64 = 1;
@@ -447,8 +444,7 @@ sub Validate
     my $VMs = CreateVMs();
     foreach my $VMKey (@{$VMs->GetKeys()})
     {
-      my $VM = $VMs->GetItem($VMKey);
-      my $FieldName = "vm_" . $self->CGI->escapeHTML($VM->GetKey());
+      my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
       if ($self->GetParam($FieldName))
       {
         $VMSelected = 1;
@@ -839,14 +835,12 @@ sub OnSubmit
     $BuildStep->DebugLevel(0);
 
     # ...with a build task
-    my $Tasks = $BuildStep->Tasks;
     my $VMs = CreateVMs();
     $VMs->AddFilter("Type", ["build"]);
     $VMs->AddFilter("Role", ["base"]);
-    my $BuildKey = ${$VMs->GetKeys()}[0];
-    my $VM = $VMs->GetItem($BuildKey);
-    my $Task = $Tasks->Add();
-    $Task->VM($VM);
+    my $BuildVM = ${$VMs->GetItems()}[0];
+    my $Task = $BuildStep->Tasks->Add();
+    $Task->VM($BuildVM);
     $Task->Timeout($BuildTimeout);
   }
 
@@ -864,7 +858,7 @@ sub OnSubmit
     foreach my $VMKey (@$SortedKeys)
     {
       my $VM = $VMs->GetItem($VMKey);
-      my $FieldName = "vm_" . $self->CGI->escapeHTML($VM->GetKey());
+      my $FieldName = "vm_" . $self->CGI->escapeHTML($VMKey);
       next if (!$self->GetParam($FieldName)); # skip unselected VMs
 
       if (!$Tasks)
-- 
1.7.10.4




More information about the wine-patches mailing list