Skip to contentSkip to conversation

Acceptance tests: add Linux initrd checking test

PATCH Applied Wainer dos Santos Moschetta 3 participants 5 messages Nov 9, 2018 – Nov 19, 2018

lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 0000000000..737355c2ef
@@ -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
#1 lore raw
Quoted 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_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.

Quoted 6 lines

Queued for 4.0, thanks!

Signature · 1 line
Eduardo
#2 lore raw
In reply to Wainer dos Santos Moschetta
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_t

This 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

---

Signature · 3 lines
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org
#3 lore raw

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 +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

s/check/checks that/

Quoted 1 line

size correctly and prints accurate message.

s/accurate/an accurate/

Quoted 8 lines

---

#4 lore raw
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