From 0b9ea5f0ff61c195ca00ab909038d2ff8437185d Mon Sep 17 00:00:00 2001 From: Kamil Gierszewski Date: Tue, 10 Dec 2024 05:52:23 +0100 Subject: [PATCH] test-framework: code refactor in power plugin Signed-off-by: Kamil Gierszewski --- .../power_control_libvirt/__init__.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internal_plugins/power_control_libvirt/__init__.py b/internal_plugins/power_control_libvirt/__init__.py index 2823c7f..50f231b 100644 --- a/internal_plugins/power_control_libvirt/__init__.py +++ b/internal_plugins/power_control_libvirt/__init__.py @@ -1,6 +1,6 @@ # # Copyright(c) 2020-2021 Intel Corporation -# Copyright(c) 2023-2024 Huawei Technologies Co., Ltd. +# Copyright(c) 2023-2025 Huawei Technologies Co., Ltd. # SPDX-License-Identifier: BSD-3-Clause # @@ -46,18 +46,25 @@ class PowerControlPlugin: def teardown(self): pass - def power_cycle(self): - self.executor.run_expect_success(f"sudo virsh reset {TestRun.dut.virsh['vm_name']}") + def power_cycle(self, wait_for_connection: bool = False, delay_until_reboot: int = 0) -> None: + self.executor.run_expect_success(f"sudo virsh destroy {TestRun.dut.virsh['vm_name']}") TestRun.executor.disconnect() - TestRun.executor.wait_for_connection(timedelta(seconds=TestRun.dut.virsh["reboot_timeout"])) + self.executor.run_expect_success( + f"(sleep {delay_until_reboot} && sudo virsh start {TestRun.dut.virsh['vm_name']}) &" + ) + if wait_for_connection: + TestRun.executor.wait_for_connection( + timedelta(seconds=TestRun.dut.virsh["reboot_timeout"]) + ) def check_if_vm_exists(self, vm_name) -> bool: return self.executor.run(f"sudo virsh list|grep -w {vm_name}").exit_code == 0 def parse_virsh_config(self, vm_name, reboot_timeout=DEFAULT_REBOOT_TIMEOUT) -> dict | None: if not self.check_if_vm_exists(vm_name=vm_name): - raise ValueError(f"Virsh power plugin error: couldn't find VM {vm_name} on host " - f"{self.host}") + raise ValueError( + f"Virsh power plugin error: couldn't find VM {vm_name} on host {self.host}" + ) return { "vm_name": vm_name, "reboot_timeout": reboot_timeout,