Skip to content

Commit ad51959

Browse files
authored
[VIRT] Add fixture for migratable VMs in upgrade test (RedHatQE#1970)
store migratable VIRT VMs in fixture to reduce extra API calls
1 parent 4ad106d commit ad51959

3 files changed

Lines changed: 37 additions & 37 deletions

File tree

tests/virt/upgrade/conftest.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,28 @@ def run_strategy_golden_image_data_source(admin_client, run_strategy_golden_imag
292292

293293

294294
@pytest.fixture(scope="session")
295-
def linux_boot_time_before_upgrade(vms_for_upgrade):
295+
def virt_migratable_vms(vms_for_upgrade):
296+
def _vm_is_migrateable(vm):
297+
vm_spec = vm.instance.spec
298+
vm_access_modes = (
299+
vm.get_storage_configuration()
300+
if (vm_spec.get("instancetype") or vm_spec.get("preference"))
301+
else vm.access_modes
302+
)
303+
if DataVolume.AccessMode.RWO in vm_access_modes:
304+
return False
305+
return True
306+
307+
migratable_vms = [vm for vm in vms_for_upgrade if _vm_is_migrateable(vm=vm)]
308+
309+
LOGGER.info(f"VIRT migratable vms: {[vm.name for vm in migratable_vms]}")
310+
return migratable_vms
311+
312+
313+
@pytest.fixture(scope="session")
314+
def linux_boot_time_before_upgrade(virt_migratable_vms):
296315
boot_time_dict = {}
297-
for vm in vms_for_upgrade:
316+
for vm in virt_migratable_vms:
298317
boot_time_dict[vm.name] = get_vm_boot_time(vm=vm)
299318
yield boot_time_dict
300319

tests/virt/upgrade/test_upgrade_virt.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
verify_run_strategy_vmi_status,
2121
verify_vms_ssh_connectivity,
2222
verify_windows_boot_time,
23-
vm_is_migrateable,
2423
)
2524
from tests.virt.utils import assert_migration_post_copy_mode
2625
from utilities.constants import DATA_SOURCE_NAME, DEPENDENCY_SCOPE_SESSION
@@ -102,10 +101,9 @@ def test_vm_ssh_before_upgrade(self, vms_for_upgrade):
102101
depends=[VMS_RUNNING_BEFORE_UPGRADE_TEST_NODE_ID],
103102
scope=DEPENDENCY_SCOPE_SESSION,
104103
)
105-
def test_migration_before_upgrade(self, vms_for_upgrade):
106-
for vm in vms_for_upgrade:
107-
if vm_is_migrateable(vm=vm):
108-
migrate_vm_and_verify(vm=vm, wait_for_interfaces=False, check_ssh_connectivity=False)
104+
def test_migration_before_upgrade(self, virt_migratable_vms):
105+
for vm in virt_migratable_vms:
106+
migrate_vm_and_verify(vm=vm, wait_for_interfaces=False, check_ssh_connectivity=False)
109107

110108
@pytest.mark.ocp_upgrade
111109
@pytest.mark.sno
@@ -180,10 +178,10 @@ def test_vmi_pod_image_updates_after_upgrade_optin(
180178
],
181179
scope=DEPENDENCY_SCOPE_SESSION,
182180
)
183-
def test_is_vm_running_after_upgrade(self, vms_for_upgrade, linux_boot_time_before_upgrade):
181+
def test_is_vm_running_after_upgrade(self, vms_for_upgrade, virt_migratable_vms, linux_boot_time_before_upgrade):
184182
for vm in vms_for_upgrade:
185183
vm.vmi.wait_until_running()
186-
verify_linux_boot_time(vm_list=vms_for_upgrade, initial_boot_time=linux_boot_time_before_upgrade)
184+
verify_linux_boot_time(vm_list=virt_migratable_vms, initial_boot_time=linux_boot_time_before_upgrade)
187185

188186
@pytest.mark.gating
189187
@pytest.mark.ocp_upgrade
@@ -280,11 +278,10 @@ def test_windows_vm_after_upgrade(
280278
],
281279
scope=DEPENDENCY_SCOPE_SESSION,
282280
)
283-
def test_migration_after_upgrade(self, vms_for_upgrade):
284-
for vm in vms_for_upgrade:
285-
if vm_is_migrateable(vm=vm):
286-
migrate_vm_and_verify(vm=vm)
287-
vm_console_run_commands(vm=vm, commands=["ls"], timeout=1100)
281+
def test_migration_after_upgrade(self, virt_migratable_vms):
282+
for vm in virt_migratable_vms:
283+
migrate_vm_and_verify(vm=vm)
284+
vm_console_run_commands(vm=vm, commands=["ls"], timeout=1100)
288285

289286
@pytest.mark.ocp_upgrade
290287
@pytest.mark.sno

tests/virt/upgrade/utils.py

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from datetime import datetime
44

55
import pytest
6-
from ocp_resources.datavolume import DataVolume
76
from ocp_resources.template import Template
87
from ocp_resources.virtual_machine import VirtualMachine
98
from ocp_resources.virtual_machine_instance_migration import (
@@ -165,35 +164,20 @@ def verify_run_strategy_vmi_status(run_strategy_vmi_list):
165164
return run_strategy_vmi_list
166165

167166

168-
def vm_is_migrateable(vm):
169-
vm_spec = vm.instance.spec
170-
vm_access_modes = (
171-
vm.get_storage_configuration()
172-
if (vm_spec.get("instancetype") or vm_spec.get("preference"))
173-
else vm.access_modes
174-
)
175-
if DataVolume.AccessMode.RWO in vm_access_modes:
176-
LOGGER.info(f"Cannot migrate a VM {vm.name} with RWO PVC.")
177-
return False
178-
return True
179-
180-
181167
def verify_linux_boot_time(vm_list, initial_boot_time):
182168
rebooted_vms = {}
183169
for vm in vm_list:
184-
if vm_is_migrateable(vm=vm):
185-
current_boot_time = get_vm_boot_time(vm=vm)
186-
if initial_boot_time[vm.name] != current_boot_time:
187-
rebooted_vms[vm.name] = {"initial": initial_boot_time[vm.name], "current": current_boot_time}
170+
current_boot_time = get_vm_boot_time(vm=vm)
171+
if initial_boot_time[vm.name] != current_boot_time:
172+
rebooted_vms[vm.name] = {"initial": initial_boot_time[vm.name], "current": current_boot_time}
188173
assert not rebooted_vms, f"Boot time changed for VMs:\n {rebooted_vms}"
189174

190175

191176
def verify_windows_boot_time(windows_vm, initial_boot_time):
192-
if vm_is_migrateable(vm=windows_vm):
193-
current_boot_time = get_vm_boot_time(vm=windows_vm)
194-
assert initial_boot_time == current_boot_time, (
195-
f"Boot time for Windows VM changed:\n initial: {initial_boot_time}\n current: {current_boot_time}"
196-
)
177+
current_boot_time = get_vm_boot_time(vm=windows_vm)
178+
assert initial_boot_time == current_boot_time, (
179+
f"Boot time for Windows VM changed:\n initial: {initial_boot_time}\n current: {current_boot_time}"
180+
)
197181

198182

199183
@contextmanager

0 commit comments

Comments
 (0)