[tools] testbot/LibvirtTool: Allow using preconfigured non-live snapshots as a base.
Francois Gouget
fgouget at codeweavers.com
Thu Apr 14 09:59:13 CDT 2022
Don't use 'test-live' as a base because we cannot assume that rebooting
it will not break its configuration. But do use snapshots such as
'test-adm' as a base. This allows automating the creation of live
snapshots for Windows versions where a given option is not supported.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
Such as the adm option on Windows 7.
---
testbot/bin/LibvirtTool.pl | 41 ++++++++++++++++++++++----------------
1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/testbot/bin/LibvirtTool.pl b/testbot/bin/LibvirtTool.pl
index df7859dea..a9622de7d 100755
--- a/testbot/bin/LibvirtTool.pl
+++ b/testbot/bin/LibvirtTool.pl
@@ -613,27 +613,34 @@ sub PrepareVM($)
}
}
-sub GetSnapshotConfig($)
+sub GetSnapshotConfig($$)
{
- my ($Config) = @_;
-
- # Don't stack snapshots. For instance assume the snapshot name is
- # 'test-live-fr-FR-tsign' and that 'test-live-fr-FR' already exists
- # (typically because it is used by another VM):
- # - It's probably better if snapshots are independent from each other.
- # - Applying the 'tsign' flag on top of the existing snapshot requires a
- # Windows reboot. But format locale changes may not stick across reboots.
- # - Stopping the snapshot name parsing when finding an existing snapshot name
- # would lose the 'live' flag resulting in an error (or the wrong type of
- # snapshot. Avoiding this issue would result in more complexity.
- # - Finally snapshot stacking does not seem that useful.
- # - A consequence is that the base snapshot should be called 'test' and not
- # 'test-live'.
+ my ($Domain, $Config) = @_;
+
+ # Notes:
+ # - Don't use a live snapshot as a base snapshot:
+ # - It's probably better if snapshots are independent from each other.
+ # - Applying extra options on top of a live snapshot may require a reboot.
+ # But some locales changes may not survive that. So using, for instance,
+ # test-fr-FR-live as a base may break the locale.
+ # - However some options are not supported on all Windows versions. For
+ # instance 'adm' snapshots cannot be created on Windows 7 so in that case
+ # it is useful to be able to use a preconfigured test-adm as a base
+ # snapshot for test-adm-live.
+ # - Finally, although base snapshots, such as 'test', are presumably powered
+ # off, 'off' snapshots still create a new snapshot. The difference is that
+ # the 'test-off' snapshot will have an up-to-date TestAgentd server, the
+ # right desktop background, etc.
while (1)
{
+ if ($Config->{base} !~ /-live\b/ and
+ $Domain->HasSnapshot($Config->{base}))
+ {
+ last;
+ }
if ($Config->{base} =~ s/-([a-z]{2}-[A-Z]{2})$//)
{
- $Config->{locale} ||= $1; # take only the last match
+ $Config->{locale} ||= $1; # use the last locale in the snapshot name
}
elsif ($Config->{base} =~ s/-(adm|live|off|tsign|u8)$//)
{
@@ -837,7 +844,7 @@ sub Revert()
if (!$Domain->HasSnapshot($Config->{base}))
{
$Config->{create} = 1;
- GetSnapshotConfig($Config);
+ GetSnapshotConfig($Domain, $Config);
Debug(join(" ", Elapsed($Start), "Config:", map { "$_=$Config->{$_}" } sort keys %$Config), "\n");
if ($Config->{locale} and $VM->Type !~ /^win(?:32|64)$/)
{
--
2.30.2
More information about the wine-devel
mailing list