From 4c71f7f6c7a6471b35a506e8018a1bfeb14a5616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Be=C3=B1at=20Gartzia=20Arruabarrena?= Date: Wed, 16 Oct 2024 13:44:45 +0200 Subject: [PATCH] env_process: Refactor QEMU coverage report resetter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactor the piece of code in env_process.preprocess that resetted gcov before running tests or creating VMs. Don't merge it with the postprocess step related to gcov as well, as it would break the order (relative to the process() call) in which they are run. Signed-off-by: BeƱat Gartzia Arruabarrena --- virttest/env_process.py | 19 ++----------------- virttest/test_setup/gcov.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 virttest/test_setup/gcov.py diff --git a/virttest/env_process.py b/virttest/env_process.py index 2c8acac05d..2ab6925a1b 100644 --- a/virttest/env_process.py +++ b/virttest/env_process.py @@ -45,6 +45,7 @@ # lazy imports for dependencies that are not needed in all modes of use from virttest._wrappers import lazy_import from virttest.test_setup.core import SetupManager +from virttest.test_setup.gcov import ResetQemuGCov from virttest.test_setup.libvirt_setup import LibvirtdDebugLogConfig from virttest.test_setup.migration import MigrationEnvSetup from virttest.test_setup.networking import ( @@ -1014,24 +1015,8 @@ def preprocess(test, params, env): vms = list(set(params.objects("vms") + migrate_vms)) params["vms"] = " ".join(vms) - # Check if code coverage for qemu is enabled and - # if coverage reset is enabled too, reset coverage report - gcov_qemu = params.get("gcov_qemu", "no") == "yes" - gcov_qemu_reset = params.get("gcov_qemu_reset", "no") == "yes" - if gcov_qemu and gcov_qemu_reset: - qemu_builddir = os.path.join(test.bindir, "build", "qemu") - qemu_bin = os.path.join(test.bindir, "bin", "qemu") - if os.path.isdir(qemu_builddir) and os.path.isfile(qemu_bin): - os.chdir(qemu_builddir) - # Looks like libvirt process does not have permissions to write to - # coverage files, hence give write for all files in qemu source - reset_cmd = "make clean-coverage;%s -version;" % qemu_bin - reset_cmd += ( - 'find %s -name "*.gcda" -exec chmod a=rwx {} \;' % qemu_builddir - ) - a_process.system(reset_cmd, shell=True) - _setup_manager.initialize(test, params, env) + _setup_manager.register(ResetQemuGCov) _setup_manager.register(VerifyHostDMesg) _setup_manager.register(SwitchSMTOff) _setup_manager.register(CheckRunningAsRoot) diff --git a/virttest/test_setup/gcov.py b/virttest/test_setup/gcov.py new file mode 100644 index 0000000000..fa037b72bb --- /dev/null +++ b/virttest/test_setup/gcov.py @@ -0,0 +1,28 @@ +import os + +from avocado.utils import process as a_process + +from virttest.test_setup.core import Setuper + + +class ResetQemuGCov(Setuper): + def setup(self): + # Check if code coverage for qemu is enabled and + # if coverage reset is enabled too, reset coverage report + gcov_qemu = self.params.get("gcov_qemu", "no") == "yes" + gcov_qemu_reset = self.params.get("gcov_qemu_reset", "no") == "yes" + if gcov_qemu and gcov_qemu_reset: + qemu_builddir = os.path.join(self.test.bindir, "build", "qemu") + qemu_bin = os.path.join(self.test.bindir, "bin", "qemu") + if os.path.isdir(qemu_builddir) and os.path.isfile(qemu_bin): + os.chdir(qemu_builddir) + # Looks like libvirt process does not have permissions to write to + # coverage files, hence give write for all files in qemu source + reset_cmd = "make clean-coverage;%s -version;" % qemu_bin + reset_cmd += ( + 'find %s -name "*.gcda" -exec chmod a=rwx {} \;' % qemu_builddir + ) + a_process.system(reset_cmd, shell=True) + + def cleanup(self): + pass