Acceptance tests: add Linux initrd checking test
PATCH v2 1/1 Acceptance tests: add Linux initrd checking test
QEMU used to exits with a not accurate error message when an initrd > 2GiB was passed. That was fixed on patch:
commit f3839fda5771596152b75dd1e1a6d050e6e6e380 Author: Li Zhijian <[email protected]> Date: Thu Sep 13 18:07:13 2018 +0800 change get_image_size return type to int64_t
This change adds a regression test for that fix. It starts QEMU with a 2GiB dummy initrd, and check it evaluates the file size correctly and prints accurate message.
---
Changes in v2:
* disambiguous GB vs GiB in comments and commit msg [ehabkost]
* uses max_size variable [crosa]
* checks return code equals to 1 [ehabkost]
* checks expected message contain needed max_size [crosa]
--- tests/acceptance/linux_initrd.py | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tests/acceptance/linux_initrd.py
tests/acceptance/linux_initrd.py new file +48 -0
@@ -0,0 +1,48 @@ +# Linux initrd acceptance test. +# +# Copyright (c) 2018 Red Hat, Inc. +# +# Author: +# Wainer dos Santos Moschetta <[email protected]> +# +# 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 tempfile +from avocado.utils.process import run + +from avocado_qemu import Test + + +class LinuxInitrd(Test): + """ + Checks QEMU evaluates correctly the initrd file passed as -initrd option. + + :avocado: enable + :avocado: tags=x86_64 + """ + + timeout = 60 + + def test_with_2gib_file_should_exit_error_msg(self): + """ + Pretends to boot QEMU with an initrd file with size of 2GiB + and expect it exits with error message. + """ + kernel_url = ('https://mirrors.kernel.org/fedora/releases/28/' + 'Everything/x86_64/os/images/pxeboot/vmlinuz') + kernel_hash = '238e083e114c48200f80d889f7e32eeb2793e02a' + kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) + max_size = 2 * (1024 ** 3) - 1 + + with tempfile.NamedTemporaryFile() as initrd: + initrd.seek(max_size) + initrd.write(b'\0') + initrd.flush() + cmd = "%s -kernel %s -initrd %s" % (self.qemu_bin, kernel_path, + initrd.name) + res = run(cmd, ignore_status=True) + self.assertEqual(res.exit_status, 1) + expected_msg = r'.*initrd is too large.*max: \d+, need %s.*' % ( + max_size + 1) + self.assertRegex(res.stderr_text, expected_msg)
Signature · 1 line
2.17.2
Eduardo Habkost
AppliedQuoted 13 lines · Wainer dos Santos Moschetta
QEMU used to exits with a not accurate error message when an initrd > 2GiB was passed. That was fixed on patch:
commit f3839fda5771596152b75dd1e1a6d050e6e6e380 Author: Li Zhijian <[email protected]> Date: Thu Sep 13 18:07:13 2018 +0800 change get_image_size return type to int64_tThis change adds a regression test for that fix. It starts QEMU with a 2GiB dummy initrd, and check it evaluates the file size correctly and prints accurate message.
Quoted 6 lines
Signed-off-by Wainer dos Santos Moschetta <[email protected]>Reviewed-by Caio Carrara <[email protected]>Reviewed-by Cleber Rosa <[email protected]>Reviewed-by Eduardo Habkost <[email protected]>Reviewed-by Philippe Mathieu-Daudé <[email protected]>
Queued for 4.0, thanks!
Signature · 1 line
Eduardo
Quoted 1 line · Wainer dos Santos Moschetta
QEMU used to exits with a not accurate error message when
s/exits/exit/
s/a not accurate/an inaccurate/
Quoted 10 lines
an initrd > 2GiB was passed. That was fixed on patch:
commit f3839fda5771596152b75dd1e1a6d050e6e6e380 Author: Li Zhijian <[email protected]> Date: Thu Sep 13 18:07:13 2018 +0800 change get_image_size return type to int64_tThis change adds a regression test for that fix. It starts QEMU with a 2GiB dummy initrd, and check it evaluates the file
s/check/checks that/
Quoted 1 line
size correctly and prints accurate message.
s/accurate/an accurate/
Quoted 8 lines
Signed-off-by Wainer dos Santos Moschetta <[email protected]>Reviewed-by Caio Carrara <[email protected]>Reviewed-by Cleber Rosa <[email protected]>Reviewed-by Eduardo Habkost <[email protected]>Reviewed-by Philippe Mathieu-Daudé <[email protected]>---
Signature · 3 lines
Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Hi Eduardo,
Since you have already queued this patch for 4.0, I would like to know if I should send a v3 to address Eric's review. Or if you can edit the patch yourself given the changes are trivial.
Thanks!
- Wainer
Quoted 33 lines · Eric Blake
Quoted 1 line · Wainer dos Santos Moschetta
QEMU used to exits with a not accurate error message when
s/exits/exit/
s/a not accurate/an inaccurate/Quoted 10 lines
an initrd > 2GiB was passed. That was fixed on patch:
commit
f3839fda5771596152b75dd1e1a6d050e6e6e380
Author: Li Zhijian <[email protected]> Date: Thu Sep 13 18:07:13 2018 +0800change
get_image_sizereturn type toint64_tThis change adds a regression test for that fix. It starts QEMU with a 2GiB dummy initrd, and check it evaluates the file
s/check/checks that/
Quoted 1 line
size correctly and prints accurate message.
s/accurate/an accurate/
Quoted 8 lines
Signed-off-by Wainer dos Santos Moschetta <[email protected]>Reviewed-by Caio Carrara <[email protected]>Reviewed-by Cleber Rosa <[email protected]>Reviewed-by Eduardo Habkost <[email protected]>Reviewed-by Philippe Mathieu-Daudé <[email protected]>---
Quoted 5 lines · Wainer dos Santos Moschetta
Hi Eduardo,
Since you have already queued this patch for 4.0, I would like to know if I should send a v3 to address Eric's review. Or if you can edit the patch yourself given the changes are trivial.
I can edit it. Thanks for the reminder!
Signature · 1 line
Eduardo