Message ID | 20240906180549.792832-2-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Convert Avocado tests based on LinuxKernelTest class | expand |
On 6/9/24 20:05, Thomas Huth wrote: > Copy the LinuxKernelTest from tests/acceptance/boot_linux_console.py > to be able to convert the related tests to the functional test framework > in the following patches. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/functional/qemu_test/__init__.py | 1 + > tests/functional/qemu_test/linuxkernel.py | 41 +++++++++++++++++++++++ > 2 files changed, 42 insertions(+) > create mode 100644 tests/functional/qemu_test/linuxkernel.py > +++ b/tests/functional/qemu_test/linuxkernel.py > @@ -0,0 +1,41 @@ > +# Test class for testing the boot process of a Linux kernel > +class LinuxKernelTest(QemuSystemTest): > + def extract_from_deb(self, deb_path, path): > + """ > + Extracts a file from a deb package into the test workdir > + > + :param deb_path: path to the deb archive > + :param path: path within the deb archive of the file to be extracted > + :returns: path of the extracted file > + """ I originally put this one in qemu_test.utils thinking we could have a non-Linux test using Debian artifacts. Probably over-engineering, besides we can move that later, so: Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py index f33282efe8..67f87be9c4 100644 --- a/tests/functional/qemu_test/__init__.py +++ b/tests/functional/qemu_test/__init__.py @@ -12,3 +12,4 @@ interrupt_interactive_console_until_pattern, wait_for_console_pattern, \ exec_command, exec_command_and_wait_for_pattern, get_qemu_img from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest +from .linuxkernel import LinuxKernelTest diff --git a/tests/functional/qemu_test/linuxkernel.py b/tests/functional/qemu_test/linuxkernel.py new file mode 100644 index 0000000000..fdd5307629 --- /dev/null +++ b/tests/functional/qemu_test/linuxkernel.py @@ -0,0 +1,41 @@ +# Test class for testing the boot process of a Linux kernel +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + +import os + +from .testcase import QemuSystemTest +from .cmd import run_cmd, wait_for_console_pattern +from .utils import archive_extract + +class LinuxKernelTest(QemuSystemTest): + KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 ' + + def wait_for_console_pattern(self, success_message, vm=None): + wait_for_console_pattern(self, success_message, + failure_message='Kernel panic - not syncing', + vm=vm) + + def extract_from_deb(self, deb_path, path): + """ + Extracts a file from a deb package into the test workdir + + :param deb_path: path to the deb archive + :param path: path within the deb archive of the file to be extracted + :returns: path of the extracted file + """ + cwd = os.getcwd() + os.chdir(self.workdir) + (stdout, stderr, ret) = run_cmd(['ar', 't', deb_path]) + file_path = stdout.split()[2] + run_cmd(['ar', 'x', deb_path, file_path]) + archive_extract(file_path, self.workdir) + os.chdir(cwd) + # Return complete path to extracted file. Because callers to + # extract_from_deb() specify 'path' with a leading slash, it is + # necessary to use os.path.relpath() as otherwise os.path.join() + # interprets it as an absolute path and drops the self.workdir part. + return os.path.normpath(os.path.join(self.workdir, + os.path.relpath(path, '/'))) +
Copy the LinuxKernelTest from tests/acceptance/boot_linux_console.py to be able to convert the related tests to the functional test framework in the following patches. Signed-off-by: Thomas Huth <thuth@redhat.com> --- tests/functional/qemu_test/__init__.py | 1 + tests/functional/qemu_test/linuxkernel.py | 41 +++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/functional/qemu_test/linuxkernel.py