Module: tools
Branch: master
Commit: c0619f7f7abd6cb3a509d5584e58f9b2dffcb678
URL: https://source.winehq.org/git/tools.git/?a=commit;h=c0619f7f7abd6cb3a509d55…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Wed Jan 6 23:29:54 2021 +0100
testbot/build: Remove unneeded Reconfig vs. WineReconfig differences.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/bin/build/Reconfig.pl | 1 +
testbot/bin/build/WineReconfig.pl | 17 ++++++++---------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/testbot/bin/build/Reconfig.pl b/testbot/bin/build/Reconfig.pl
index 458b5da..9e1043a 100755
--- a/testbot/bin/build/Reconfig.pl
+++ b/testbot/bin/build/Reconfig.pl
@@ -152,6 +152,7 @@ if (defined $Usage)
print "Where:\n";
print " --update Update Wine's source code.\n";
print " --build Update the Wine builds.\n";
+ print "If none of the above actions is specified they are all performed.\n";
print " MISSIONS Is a colon-separated list of missions. By default the following\n";
print " missions are run.\n";
print " - exe32: Build the 32 bit Windows test executables.\n";
diff --git a/testbot/bin/build/WineReconfig.pl b/testbot/bin/build/WineReconfig.pl
index bd9ff57..75a21b3 100755
--- a/testbot/bin/build/WineReconfig.pl
+++ b/testbot/bin/build/WineReconfig.pl
@@ -168,15 +168,15 @@ if (defined $Usage)
}
print "Usage: $Name0 [--update] [--build [--no-rm]] [--addons] [--help] [MISSIONS]\n";
print "\n";
- print "Performs all the tasks needed for the host to be ready to test new patches: update the Wine source and addons, and rebuild the Wine binaries.\n";
+ print "Performs all the tasks needed for the host to be ready to run Wine tests: update the Wine source and addons, and rebuild the Wine binaries.\n";
print "\n";
print "Where:\n";
print " --update Update Wine's source code.\n";
print " --build Update the Wine builds.\n";
print " --addons Update the Gecko and Mono Wine addons.\n";
print "If none of the above actions is specified they are all performed.\n";
- print " MISSIONS Is a colon-separated list of missions. By default the\n";
- print " following missions are run.\n";
+ print " MISSIONS Is a colon-separated list of missions. By default the following\n";
+ print " missions are run.\n";
print " - win32: Build the regular 32 bit Wine.\n";
print " - wow32: Build the 32 bit WoW Wine.\n";
print " - wow64: Build the 64 bit WoW Wine.\n";
@@ -185,21 +185,20 @@ if (defined $Usage)
exit 0;
}
-if (! -d "$DataDir/staging" and ! mkdir "$DataDir/staging")
+if ($DataDir =~ /'/)
{
- LogMsg "Unable to create '$DataDir/staging': $!\n";
+ LogMsg "The install path contains invalid characters\n";
exit(1);
}
-
-if ($DataDir =~ /'/)
+if (! -d "$DataDir/staging" and ! mkdir "$DataDir/staging")
{
- LogMsg "The install path contains invalid characters\n";
+ LogMsg "Unable to create '$DataDir/staging': $!\n";
exit(1);
}
#
-# Run the builds and/or tests
+# Run the builds
#
exit(1) if ($OptBuild and !BuildNativeTestAgentd());
Module: tools
Branch: master
Commit: e2888e5b253fee41bb4d77bdac3c61335050870b
URL: https://source.winehq.org/git/tools.git/?a=commit;h=e2888e5b253fee41bb4d77b…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Wed Jan 6 23:29:46 2021 +0100
testbot/WineReconfig: Do not prepare wineprefixes in advance.
This avoids test failures when the patch changes the initial Wine
registry. Call CleanupWinePrefixes() after successful builds to ensure
a clean transition and remove any stray wineprefix.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48671
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/bin/build/WineReconfig.pl | 47 ++++++++-------------------------------
1 file changed, 9 insertions(+), 38 deletions(-)
diff --git a/testbot/bin/build/WineReconfig.pl b/testbot/bin/build/WineReconfig.pl
index f9f6792..bd9ff57 100755
--- a/testbot/bin/build/WineReconfig.pl
+++ b/testbot/bin/build/WineReconfig.pl
@@ -3,7 +3,7 @@
#
# Updates the Wine source from Git and rebuilds it.
#
-# Copyright 2018 Francois Gouget
+# Copyright 2018-2021 Francois Gouget
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -65,12 +65,10 @@ sub UpdateWineBuilds($$)
# WinePrefix helpers
#
-sub UpdateWinePrefixes($)
+sub CleanupWinePrefixes()
{
- my ($TaskMissions) = @_;
-
- # Make sure no obsolete wineprefix is left behind in case WineReconfig
- # is called with a different set of targets
+ # The TestBot used to prepare WinePrefixes in advance.
+ # Make sure no such obsolete wineprefix is left behind.
foreach my $Dir (glob("'$DataDir/wineprefix-*'"))
{
if (basename($Dir) =~ /^(wineprefix-[a-zA-Z0-9\(a)_.-]+)$/) # untaint
@@ -78,27 +76,6 @@ sub UpdateWinePrefixes($)
rmtree("$DataDir/$1");
}
}
-
- # Set up brand new WinePrefixes ready for use for testing.
- # This way we do it once instead of doing it for every test, thus saving
- # time. Note that this requires using a different wineprefix for each
- # mission.
- foreach my $Mission (@{$TaskMissions->{Missions}})
- {
- next if ($Mission->{test} eq "build");
-
- my $BaseName = SetupWineEnvironment($Mission);
- InfoMsg "\nRecreating the $BaseName wineprefix\n";
-
- # Wait for the wineprefix creation to complete so it is really done
- # before the snapshot gets updated.
- my $ErrMessage = CreateWinePrefix($Mission, "wait");
- if (defined $ErrMessage)
- {
- LogMsg "$ErrMessage\n";
- return 0;
- }
- }
return 1;
}
@@ -107,7 +84,7 @@ sub UpdateWinePrefixes($)
# Setup and command line processing
#
-my ($Usage, $OptUpdate, $OptBuild, $OptAddOns, $OptWinePrefix, $MissionStatement);
+my ($Usage, $OptUpdate, $OptBuild, $OptAddOns, $MissionStatement);
my $OptBuildFlags = $Build::Utils::FROM_SCRATCH;
while (@ARGV)
{
@@ -128,10 +105,6 @@ while (@ARGV)
{
$OptAddOns = 1;
}
- elsif ($Arg eq "--wineprefix")
- {
- $OptWinePrefix = 1;
- }
elsif ($Arg =~ /^(?:-\?|-h|--help)$/)
{
$Usage = 0;
@@ -159,9 +132,9 @@ while (@ARGV)
my $TaskMissions;
if (!defined $Usage)
{
- if (!$OptUpdate and !$OptBuild and !$OptAddOns and !$OptWinePrefix)
+ if (!$OptUpdate and !$OptBuild and !$OptAddOns)
{
- $OptUpdate = $OptBuild = $OptAddOns = $OptWinePrefix = 1;
+ $OptUpdate = $OptBuild = $OptAddOns = 1;
}
$MissionStatement ||= "win32:wow32:wow64";
my ($ErrMessage, $Missions) = ParseMissionStatement($MissionStatement);
@@ -193,8 +166,7 @@ if (defined $Usage)
Error "try '$Name0 --help' for more information\n";
exit $Usage;
}
- print "Usage: $Name0 [--update] [--build [--no-rm]] [--addons] [--wineprefix]\n";
- print " [--help] [MISSIONS]\n";
+ print "Usage: $Name0 [--update] [--build [--no-rm]] [--addons] [--help] [MISSIONS]\n";
print "\n";
print "Performs all the tasks needed for the host to be ready to test new patches: update the Wine source and addons, and rebuild the Wine binaries.\n";
print "\n";
@@ -202,7 +174,6 @@ if (defined $Usage)
print " --update Update Wine's source code.\n";
print " --build Update the Wine builds.\n";
print " --addons Update the Gecko and Mono Wine addons.\n";
- print " --wineprefix Update the wineprefixes.\n";
print "If none of the above actions is specified they are all performed.\n";
print " MISSIONS Is a colon-separated list of missions. By default the\n";
print " following missions are run.\n";
@@ -236,7 +207,7 @@ exit(1) if ($OptBuild and !BuildTestLauncher());
exit(1) if ($OptUpdate and !GitPull("wine"));
exit(1) if ($OptAddOns and !UpdateAddOns());
exit(1) if ($OptBuild and !UpdateWineBuilds($TaskMissions, $OptBuildFlags));
-exit(1) if ($OptWinePrefix and !UpdateWinePrefixes($TaskMissions));
+exit(1) if ($OptBuild and !CleanupWinePrefixes());
LogMsg "ok\n";
exit;
Module: tools
Branch: master
Commit: b264e96049a41a7814faeba2c20dc8538505fb05
URL: https://source.winehq.org/git/tools.git/?a=commit;h=b264e96049a41a7814faeba…
Author: Francois Gouget <fgouget(a)free.fr>
Date: Wed Jan 6 14:00:17 2021 +0100
testbot: Fix the spelling of comments, documentation and web pages.
Signed-off-by: Francois Gouget <fgouget(a)free.fr>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/lib/WineTestBot/Activity.pm | 2 +-
testbot/lib/WineTestBot/Engine/Scheduler.pm | 2 +-
testbot/lib/WineTestBot/PatchUtils.pm | 2 +-
testbot/lib/WineTestBot/Steps.pm | 2 +-
testbot/lib/WineTestBot/Tasks.pm | 2 +-
testbot/web/Activity.pl | 2 +-
testbot/web/Munin.pl | 2 +-
testbot/web/Stats.pl | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/testbot/lib/WineTestBot/Activity.pm b/testbot/lib/WineTestBot/Activity.pm
index eba45a0..2a1e21f 100644
--- a/testbot/lib/WineTestBot/Activity.pm
+++ b/testbot/lib/WineTestBot/Activity.pm
@@ -68,7 +68,7 @@ for the specified timestamp. Entries have the following structure:
vm => <VMObject>,
status => <VMStatus>,
value => <RecordValue>,
- task => <TaskObjectIfAppopriate>,
+ task => <TaskObjectIfAppropriate>,
start => <StartTimestamp>,
end => <EndTimestamp>,
rows => <NbRows>,
diff --git a/testbot/lib/WineTestBot/Engine/Scheduler.pm b/testbot/lib/WineTestBot/Engine/Scheduler.pm
index c28e143..800d136 100644
--- a/testbot/lib/WineTestBot/Engine/Scheduler.pm
+++ b/testbot/lib/WineTestBot/Engine/Scheduler.pm
@@ -884,7 +884,7 @@ sub _RevertVMs($$)
# Note that during regular operation we get dirty VMs before they are
# assigned a process to shut them down. This makes it possible to pick
# the best future VM while we still know which VM is hot.
- # In constrast on startup the dirty VMs all have processes checking their
+ # In contrast on startup the dirty VMs all have processes checking their
# status, hence the dirtychild check to ensure we are not prevented from
# preparing the best VM (e.g. build): it delays preparing the future VMs
# until either there are no dirty VM or a VM got prepared for a task
diff --git a/testbot/lib/WineTestBot/PatchUtils.pm b/testbot/lib/WineTestBot/PatchUtils.pm
index 44b3f97..df31a09 100644
--- a/testbot/lib/WineTestBot/PatchUtils.pm
+++ b/testbot/lib/WineTestBot/PatchUtils.pm
@@ -373,7 +373,7 @@ sub GetPatchImpacts($)
}
elsif ($Line eq LastPartSeparator())
{
- # All the diffs so far belongs to previous parts of this patchset.
+ # All the diffs so far belong to previous parts of this patchset.
# But:
# - Only the last part must be taken into account to determine if a
# rebuild and testing is needed.
diff --git a/testbot/lib/WineTestBot/Steps.pm b/testbot/lib/WineTestBot/Steps.pm
index c9ce343..0943375 100644
--- a/testbot/lib/WineTestBot/Steps.pm
+++ b/testbot/lib/WineTestBot/Steps.pm
@@ -30,7 +30,7 @@ A Job is composed of one or more Steps that each perform one operation. A
Step is in turn composed of one WineTestBot::Task object for each VM that the
Step should be run on.
-A Step's lifecyle is as follows:
+A Step's lifecycle is as follows:
=over
=item *
diff --git a/testbot/lib/WineTestBot/Tasks.pm b/testbot/lib/WineTestBot/Tasks.pm
index 5a79ff9..141fee0 100644
--- a/testbot/lib/WineTestBot/Tasks.pm
+++ b/testbot/lib/WineTestBot/Tasks.pm
@@ -31,7 +31,7 @@ performing that Step in a WineTestBot::VM virtual machine. For instance a Step
responsible for running a given test would have one Task object for each
virtual machine that the test must be performed in.
-A Task's lifecyle is as follows:
+A Task's lifecycle is as follows:
=over
=item *
diff --git a/testbot/web/Activity.pl b/testbot/web/Activity.pl
index d616a7c..9444779 100644
--- a/testbot/web/Activity.pl
+++ b/testbot/web/Activity.pl
@@ -290,7 +290,7 @@ sub GenerateFooter($)
print "<span class='Record-running'>running</span> a task (in which case it links to it),<br>\n";
print "<span class='Record-dirty'>dirty</span> while the server is powering off the VM after a task or while it assesses its state on startup.</p>\n";
- print "<p>If no time is indicated then the VM remained in that state for less than 2 seconds. The tasks column indicates the number of runnable / queued tasks before that scheduling round. If any task needs to run on a maintenance, retired or deleted VM is is shown as +N. A long horizontal bar indicates the TestBot server was restarted. </p>\n";
+ print "<p>If no time is indicated then the VM remained in that state for less than 2 seconds. The tasks column indicates the number of runnable / queued tasks before that scheduling round. If any task needs to run on a maintenance, retired or deleted VM it is shown as +N. A long horizontal bar indicates the TestBot server was restarted. </p>\n";
print "<p>This <span class='Record Record-running Record-timeout'>border</span> indicates that the task timed out,<br>\n";
print "this <span class='Record Record-running Record-error'>border</span> denotes a transient (network?) error so the task will be re-run,<br>\n";
print "and this <span class='Record Record-running Record-boterror'>border</span> indicates a TestBot error.<br>\n";
diff --git a/testbot/web/Munin.pl b/testbot/web/Munin.pl
index 35160a1..c2464d0 100644
--- a/testbot/web/Munin.pl
+++ b/testbot/web/Munin.pl
@@ -82,7 +82,7 @@ happened in the past 5 minutes. However we have to report on infrequent events:
- New jobs arrive infrequently: around one per hour currently, and it is
not rare for two of them to arrive at the same time. If we were to naively
extrapolate 1 new job in the past 5 minutes as a rate of 12 jobs per hour
- we'd get a graph with exagerated swings. But note that things would converge
+ we'd get a graph with exaggerated swings. But note that things would converge
on a meaningful value as Munin averages things out for the monthly or yearly
graphs.
- We could instead record when the last job arrived and derive a rate by
diff --git a/testbot/web/Stats.pl b/testbot/web/Stats.pl
index f453891..4a70cb0 100644
--- a/testbot/web/Stats.pl
+++ b/testbot/web/Stats.pl
@@ -426,7 +426,7 @@ sub GenerateFooter($)
print "<p>The <b>Job rate</b> and <b>Task rate</b> show the average hourly rate at which jobs / tasks are submitted to the TestBot. The <b>Revert rate</b> shows how many reverts have been done per hour to run those tasks. Note that the job and task rates provide a first approximation upper limit on the average time a job or task can take to complete.</p>\n";
print "<p>The <b>Busy time</b> indicates how long the TestBot had at least one pending task and the <b>Busy %</b> shows how much of the wall clock time this represents. Note that the busy percentage and average <b>Job completion</b> times can be optimized by balancing the load on the different VM hosts.</p>\n";
print "<p>The average and maximum time statistics show how long the VMs spend in each state of their lifecycle. A VM starts in the powered off or dirty state. It is then <b>reverted</b> to a clean state with the right configuration for the tests. Then it goes into the <b>sleep</b> state during which it gets ready to run the tests. Depending on the VM configuration this may be immediate or may require booting the VM first. Then it goes into the <b>run</b> state while the tests are being uploaded, run, and the results retrieved. This means the test itself takes less time to run than indicated in this statistic. Also note that the <b>WineTest</b> and <b>Wine update</b> tasks are tallied separately because they take much longer than regular tasks. Once the tests complete the VM is marked <b>dirty</b> while it waits for the TestBot to decide whether to power it off, or immediately revert it for the next task.</p>\n";
- print "<p>The errors section shows how many <b>Timeouts</b> occurred, that is how many tasks failed to complete within the alloted time; how many failed due to a <b>TestBot error</b>; and how many had to be rerun due to a <b>Transient error</b> such as a network connection issue.</p>\n";
+ print "<p>The errors section shows how many <b>Timeouts</b> occurred, that is how many tasks failed to complete within the allotted time; how many failed due to a <b>TestBot error</b>; and how many had to be rerun due to a <b>Transient error</b> such as a network connection issue.</p>\n";
print "</td></tr></tbody>\n";
print "</tbody></table></div>\n";