diff --git a/virttest/env_process.py b/virttest/env_process.py index 3ae5a3f7fb..9a0f212fd2 100644 --- a/virttest/env_process.py +++ b/virttest/env_process.py @@ -46,6 +46,7 @@ from virttest.test_setup.gcov import ResetQemuGCov from virttest.test_setup.kernel import ReloadKVMModules from virttest.test_setup.libvirt_setup import LibvirtdDebugLogConfig +from virttest.test_setup.memory import HugePagesSetup from virttest.test_setup.migration import MigrationEnvSetup from virttest.test_setup.networking import ( BridgeConfig, @@ -1023,6 +1024,7 @@ def preprocess(test, params, env): _setup_manager.register(CheckVirtioWinVersion) _setup_manager.register(CheckLibvirtVersion) _setup_manager.register(LogVersionInfo) + _setup_manager.register(HugePagesSetup) _setup_manager.do_setup() vm_type = params.get("vm_type") @@ -1031,24 +1033,6 @@ def preprocess(test, params, env): libvirtd_inst = None - # If guest is configured to be backed by hugepages, setup hugepages in host - if params.get("hugepage") == "yes": - params["setup_hugepages"] = "yes" - - if params.get("setup_hugepages") == "yes": - global _pre_hugepages_surp - h = test_setup.HugePageConfig(params) - _pre_hugepages_surp = h.ext_hugepages_surp - suggest_mem = h.setup() - if suggest_mem is not None: - params["mem"] = suggest_mem - if not params.get("hugepage_path"): - params["hugepage_path"] = h.hugepage_path - if vm_type == "libvirt": - if libvirtd_inst is None: - libvirtd_inst = utils_libvirtd.Libvirtd() - libvirtd_inst.restart() - if params.get("setup_thp") == "yes": thp = test_setup.TransparentHugePageConfig(test, params, env) thp.setup() @@ -1534,21 +1518,6 @@ def postprocess(test, params, env): libvirtd_inst = None vm_type = params.get("vm_type") - if params.get("setup_hugepages") == "yes": - global _post_hugepages_surp - try: - h = test_setup.HugePageConfig(params) - h.cleanup() - if vm_type == "libvirt": - if libvirtd_inst is None: - libvirtd_inst = utils_libvirtd.Libvirtd() - libvirtd_inst.restart() - except Exception as details: - err += "\nHP cleanup: %s" % str(details).replace("\\n", "\n ") - LOG.error(details) - else: - _post_hugepages_surp = h.ext_hugepages_surp - if params.get("setup_thp") == "yes": try: thp = test_setup.TransparentHugePageConfig(test, params, env) diff --git a/virttest/test_setup/memory.py b/virttest/test_setup/memory.py new file mode 100644 index 0000000000..959e37bc1f --- /dev/null +++ b/virttest/test_setup/memory.py @@ -0,0 +1,27 @@ +from virttest import env_process, test_setup, utils_libvirtd +from virttest.test_setup.core import Setuper + + +class HugePagesSetup(Setuper): + def setup(self): + # If guest is configured to be backed by hugepages, setup hugepages in host + if self.params.get("hugepage") == "yes": + self.params["setup_hugepages"] = "yes" + if self.params.get("setup_hugepages") == "yes": + h = test_setup.HugePageConfig(self.params) + env_process._pre_hugepages_surp = h.ext_hugepages_surp + suggest_mem = h.setup() + if suggest_mem is not None: + self.params["mem"] = suggest_mem + if not self.params.get("hugepage_path"): + self.params["hugepage_path"] = h.hugepage_path + if self.params.get("vm_type") == "libvirt": + utils_libvirtd.Libvirtd().restart() + + def cleanup(self): + if self.params.get("setup_hugepages") == "yes": + h = test_setup.HugePageConfig(self.params) + h.cleanup() + if self.params.get("vm_type") == "libvirt": + utils_libvirtd.Libvirtd().restart() + env_process._post_hugepages_surp = h.ext_hugepages_surp