Ensures that progress_watermark and progress_time are updated
Ensure that progress_watermark adn progress_time are updated when progress is made, even if progress_watermark is set to 0 in the first iteration due to info.data_remaining being equals to 0. Closes-Bug: #1591240 Change-Id: I36c38a4ef049c995f715f2a8274c77fd8504b546
This commit is contained in:
parent
974b158f4f
commit
6283b16ceb
nova
@ -8278,15 +8278,15 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_NONE),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED),
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED),
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED),
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED),
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED),
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
"thread-finish",
|
||||
"domain-stop",
|
||||
libvirt_guest.JobInfo(
|
||||
@ -8297,6 +8297,41 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
fake_times, self.EXPECT_ABORT,
|
||||
expected_mig_status='cancelled')
|
||||
|
||||
def test_live_migration_monitor_progress_zero_data_remaining(self):
|
||||
self.flags(live_migration_completion_timeout=1000000,
|
||||
live_migration_progress_timeout=150,
|
||||
group='libvirt')
|
||||
# Each one of these fake times is used for time.time()
|
||||
# when a new domain_info_records entry is consumed.
|
||||
fake_times = [0, 40, 80, 120, 160, 200, 240, 280, 320]
|
||||
|
||||
# A normal sequence where see all the normal job states
|
||||
domain_info_records = [
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_NONE),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=0),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=90),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=70),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=50),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=30),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=10),
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_UNBOUNDED, data_remaining=0),
|
||||
"thread-finish",
|
||||
"domain-stop",
|
||||
libvirt_guest.JobInfo(
|
||||
type=fakelibvirt.VIR_DOMAIN_JOB_FAILED),
|
||||
]
|
||||
|
||||
self._test_live_migration_monitoring(domain_info_records,
|
||||
fake_times, self.EXPECT_FAILURE)
|
||||
|
||||
def test_live_migration_downtime_steps(self):
|
||||
self.flags(live_migration_downtime=400, group='libvirt')
|
||||
self.flags(live_migration_downtime_steps=10, group='libvirt')
|
||||
|
@ -6065,6 +6065,7 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
abort = False
|
||||
|
||||
if ((progress_watermark is None) or
|
||||
(progress_watermark == 0) or
|
||||
(progress_watermark > info.data_remaining)):
|
||||
progress_watermark = info.data_remaining
|
||||
progress_time = now
|
||||
|
Loading…
x
Reference in New Issue
Block a user