tests/functional: Move the check for the parameters from avocado to functional

test_x86_64_pc in tests/avocado/boot_linux_console.py only checks
whether the kernel parameters have correctly been passed to the
kernel in the guest by looking for them in the console output of the
guest. Let's move that to the functional test framework now, but
instead of doing it in a separate test, let's do it for all tuxrun
tests instead, so it is done automatically for all targets that have
a tuxrun test.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250414113031.151105-3-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2025-04-14 13:30:16 +02:00
parent 22baa5f340
commit bc65ae6961
2 changed files with 5 additions and 38 deletions

View file

@ -9,17 +9,9 @@
# later. See the COPYING file in the top-level directory. # later. See the COPYING file in the top-level directory.
import os import os
import lzma
import gzip
import shutil import shutil
from avocado import skip
from avocado import skipUnless
from avocado import skipUnless
from avocado_qemu import QemuSystemTest from avocado_qemu import QemuSystemTest
from avocado_qemu import exec_command
from avocado_qemu import exec_command_and_wait_for_pattern
from avocado_qemu import interrupt_interactive_console_until_pattern
from avocado_qemu import wait_for_console_pattern from avocado_qemu import wait_for_console_pattern
from avocado.utils import process from avocado.utils import process
from avocado.utils import archive from avocado.utils import archive
@ -68,29 +60,3 @@ class LinuxKernelTest(QemuSystemTest):
process.run("rpm2cpio %s | cpio -id %s" % (rpm, path), shell=True) process.run("rpm2cpio %s | cpio -id %s" % (rpm, path), shell=True)
os.chdir(cwd) os.chdir(cwd)
return os.path.normpath(os.path.join(self.workdir, path)) return os.path.normpath(os.path.join(self.workdir, path))
class BootLinuxConsole(LinuxKernelTest):
"""
Boots a Linux kernel and checks that the console is operational and the
kernel command line is properly passed from QEMU to the kernel
"""
timeout = 90
def test_x86_64_pc(self):
"""
:avocado: tags=arch:x86_64
:avocado: tags=machine:pc
"""
kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/29/Everything/x86_64/os/images/pxeboot'
'/vmlinuz')
kernel_hash = '23bebd2680757891cf7adedb033532163a792495'
kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
self.vm.set_console()
kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0'
self.vm.add_args('-kernel', kernel_path,
'-append', kernel_command_line)
self.vm.launch()
console_pattern = 'Kernel command line: %s' % kernel_command_line
self.wait_for_console_pattern(console_pattern)

View file

@ -77,12 +77,12 @@ class TuxRunBaselineTest(QemuSystemTest):
blockdev = "driver=raw,file.driver=file," \ blockdev = "driver=raw,file.driver=file," \
+ f"file.filename={disk},node-name=hd0" + f"file.filename={disk},node-name=hd0"
kcmd_line = self.KERNEL_COMMON_COMMAND_LINE self.kcmd_line = self.KERNEL_COMMON_COMMAND_LINE
kcmd_line += f" root=/dev/{self.root}" self.kcmd_line += f" root=/dev/{self.root}"
kcmd_line += f" console={self.console}" self.kcmd_line += f" console={self.console}"
self.vm.add_args('-kernel', kernel, self.vm.add_args('-kernel', kernel,
'-append', kcmd_line, '-append', self.kcmd_line,
'-blockdev', blockdev) '-blockdev', blockdev)
# Sometimes we need extra devices attached # Sometimes we need extra devices attached
@ -103,6 +103,7 @@ class TuxRunBaselineTest(QemuSystemTest):
wait to exit cleanly. wait to exit cleanly.
""" """
ps1='root@tuxtest:~#' ps1='root@tuxtest:~#'
self.wait_for_console_pattern(self.kcmd_line)
self.wait_for_console_pattern('tuxtest login:') self.wait_for_console_pattern('tuxtest login:')
exec_command_and_wait_for_pattern(self, 'root', ps1) exec_command_and_wait_for_pattern(self, 'root', ps1)
exec_command_and_wait_for_pattern(self, 'cat /proc/interrupts', ps1) exec_command_and_wait_for_pattern(self, 'cat /proc/interrupts', ps1)