Skip to content

Commit

Permalink
vm_hugetlb_selftests: hugetlb kernel selftests execution in guest
Browse files Browse the repository at this point in the history
Creates a new test case that executes the hugetlb selftests from
the kernel selftests package that has been previously downloaded
and extracted, to ensure the correct behavior of this feature
at the VM level.

Signed-off-by: mcasquer <[email protected]>
  • Loading branch information
mcasquer committed Sep 12, 2024
1 parent af63fc5 commit 20a4555
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
8 changes: 8 additions & 0 deletions qemu/tests/cfg/vm_hugetlb_selftests.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- vm_hugetlb_selftests:
only Linux
only x86_64
type = vm_hugetlb_selftests
virt_test_type = qemu
setup_hugepages = yes
kernel_path = "/home/kernel"
depends_pkgs = rsync libcap-devel numactl-devel glibc-devel
44 changes: 44 additions & 0 deletions qemu/tests/vm_hugetlb_selftests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from virttest import error_context
from virttest import utils_package


@error_context.context_aware
def run(test, params, env):
"""
vm_hugetlb_selftests test
1) Download the current kernel selftests RPM
2) Extract the RPM files
3) Execute the hugetlb kernel selftests
:param test: QEMU test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment
"""
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
session = vm.wait_for_login()
kernel_path = params.get("kernel_path", "/home/kernel")
pkgs = params.objects("depends_pkgs")
if not utils_package.package_install(pkgs, session):
test.cancel("Install dependency packages failed")

session.cmd("mkdir -p %s" % kernel_path)
kernel_version = session.cmd_output("uname -r")
error_context.base_context("The kernel version: %s" % kernel_version, test.log.info)

error_context.context("Download the kernel source RPM", test.log.debug)
session.cmd("cd %s" % kernel_path)
session.cmd(
"brew download-build --rpm kernel-selftests-internal-%s.rpm" % kernel_version,
180,
)

error_context.context("Extract the RPM files", test.log.debug)
session.cmd("rpm2cpio kernel-*.rpm | cpio -div")
session.cmd("cd usr/libexec/kselftests/mm")

error_context.base_context("Execute the hugetlb selftests", test.log.info)
s, o = session.cmd_status_output("sh run_vmtests.sh -t hugetlb", 180)
if s != 0:
test.fail("Error during hugetlb selftests execution: %s" % o)

error_context.context("The hugeltb tests results: %s" % o, test.log.debug)

0 comments on commit 20a4555

Please sign in to comment.