[PATCH] testbot/LibvirtTool: Detect if a VM is booting after a revert.
Francois Gouget
fgouget at codeweavers.com
Fri Sep 20 08:04:21 CDT 2019
And adjust the TestAgent connection timeout accordingly.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
testbot/bin/LibvirtTool.pl | 6 +++---
testbot/lib/WineTestBot/LibvirtDomain.pm | 13 +++++++++++--
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/testbot/bin/LibvirtTool.pl b/testbot/bin/LibvirtTool.pl
index 7bd75d00e..0801c997f 100755
--- a/testbot/bin/LibvirtTool.pl
+++ b/testbot/bin/LibvirtTool.pl
@@ -379,7 +379,7 @@ sub Revert()
# Revert the VM (and power it on if necessary)
my $Domain = $VM->GetDomain();
Debug(Elapsed($Start), " Reverting $VMKey to ", $VM->IdleSnapshot, "\n");
- my $ErrMessage = $Domain->RevertToSnapshot();
+ my ($ErrMessage, $Booting) = $Domain->RevertToSnapshot();
if (defined $ErrMessage)
{
# Libvirt/QEmu is buggy and cannot revert a running VM from one hardware
@@ -393,7 +393,7 @@ sub Revert()
}
Debug(Elapsed($Start), " Reverting $VMKey to ", $VM->IdleSnapshot, "... again\n");
- $ErrMessage = $Domain->RevertToSnapshot();
+ ($ErrMessage, $Booting) = $Domain->RevertToSnapshot();
}
if (defined $ErrMessage)
{
@@ -407,7 +407,7 @@ sub Revert()
Debug(Elapsed($Start), " Verifying the TestAgent server\n");
LogMsg "Verifying the $VMKey TestAgent server\n";
my $TA = $VM->GetAgent();
- $TA->SetConnectTimeout(undef, undef, $WaitForBoot);
+ $TA->SetConnectTimeout(undef, undef, $WaitForBoot) if ($Booting);
my $Success = $TA->Ping();
$TA->Disconnect();
if (!$Success)
diff --git a/testbot/lib/WineTestBot/LibvirtDomain.pm b/testbot/lib/WineTestBot/LibvirtDomain.pm
index 4e1c4ee07..bb2276820 100644
--- a/testbot/lib/WineTestBot/LibvirtDomain.pm
+++ b/testbot/lib/WineTestBot/LibvirtDomain.pm
@@ -315,11 +315,20 @@ sub RevertToSnapshot($)
my $SnapshotName = $self->{VM}->IdleSnapshot;
my ($ErrMessage, $Domain, $Snapshot) = $self->_GetSnapshot($SnapshotName);
- return $ErrMessage if (defined $ErrMessage);
+ return ($ErrMessage, undef) if (defined $ErrMessage);
# Note that if the snapshot was of a powered off domain, this boots it up
eval { $Snapshot->revert_to(Sys::Virt::DomainSnapshot::REVERT_RUNNING) };
- return $@ ? $self->_Reset(_eval_err()) : undef;
+ return $self->_Reset(_eval_err(), undef) if ($@);
+
+ my ($State, $Reason) = $Domain->get_state();
+ if ($State != Sys::Virt::Domain::STATE_RUNNING)
+ {
+ return ($self->{VM}->Name ." is not running (".
+ _GetStateDescription($State, $Reason)
+ .") after revert to $SnapshotName", undef);
+ }
+ return (undef, $Reason != Sys::Virt::Domain::STATE_RUNNING_FROM_SNAPSHOT);
}
sub CreateSnapshot($)
--
2.20.1
More information about the wine-devel
mailing list