|
|
26ba25 |
From a326b17336ae12d9fa492ea34b9b1b08150262d0 Mon Sep 17 00:00:00 2001
|
|
|
26ba25 |
From: Yash Mankad <ymankad@redhat.com>
|
|
|
26ba25 |
Date: Wed, 12 Dec 2018 00:14:39 +0000
|
|
|
26ba25 |
Subject: [PATCH 11/13] Acceptance tests: add Linux kernel boot and console
|
|
|
26ba25 |
checking test
|
|
|
26ba25 |
MIME-Version: 1.0
|
|
|
26ba25 |
Content-Type: text/plain; charset=UTF-8
|
|
|
26ba25 |
Content-Transfer-Encoding: 8bit
|
|
|
26ba25 |
|
|
|
26ba25 |
RH-Author: Yash Mankad <ymankad@redhat.com>
|
|
|
26ba25 |
Message-id: <d56f34e8ffd54d5df93dadface61538e5a3c99ab.1544573601.git.ymankad@redhat.com>
|
|
|
26ba25 |
Patchwork-id: 83433
|
|
|
26ba25 |
O-Subject: [RHEL-8.0 qemu-kvm PATCH v2 5/7] Acceptance tests: add Linux kernel boot and console checking test
|
|
|
26ba25 |
Bugzilla: 1655807
|
|
|
26ba25 |
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: John Snow <jsnow@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
From: Cleber Rosa <crosa@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
This test boots a Linux kernel, and checks that the given command
|
|
|
26ba25 |
line was effective in two ways:
|
|
|
26ba25 |
|
|
|
26ba25 |
* It makes the kernel use the set "console device" as a console
|
|
|
26ba25 |
* The kernel records the command line as expected in the console
|
|
|
26ba25 |
|
|
|
26ba25 |
Given that way too many error conditions may occur, and detecting the
|
|
|
26ba25 |
kernel boot progress status may not be trivial, this test relies on a
|
|
|
26ba25 |
timeout to handle unexpected situations. Also, it's *not* tagged as a
|
|
|
26ba25 |
quick test for obvious reasons.
|
|
|
26ba25 |
|
|
|
26ba25 |
It may be useful, while interactively running/debugging this test, or
|
|
|
26ba25 |
tests similar to this one, to show some of the logging channels.
|
|
|
26ba25 |
Example:
|
|
|
26ba25 |
|
|
|
26ba25 |
$ avocado --show=QMP,console run boot_linux_console.py
|
|
|
26ba25 |
|
|
|
26ba25 |
Signed-off-by: Cleber Rosa <crosa@redhat.com>
|
|
|
26ba25 |
Message-Id: <20180530184156.15634-6-crosa@redhat.com>
|
|
|
26ba25 |
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
|
|
|
26ba25 |
(cherry picked from commit c1cc73f407b890c4e7ab5bf520c0637e0364e92a)
|
|
|
26ba25 |
Signed-off-by: Yash Mankad <ymankad@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
|
26ba25 |
---
|
|
|
26ba25 |
tests/acceptance/boot_linux_console.py | 47 ++++++++++++++++++++++++++++++++++
|
|
|
26ba25 |
1 file changed, 47 insertions(+)
|
|
|
26ba25 |
create mode 100644 tests/acceptance/boot_linux_console.py
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
|
|
|
26ba25 |
new file mode 100644
|
|
|
26ba25 |
index 0000000..98324f7
|
|
|
26ba25 |
--- /dev/null
|
|
|
26ba25 |
+++ b/tests/acceptance/boot_linux_console.py
|
|
|
26ba25 |
@@ -0,0 +1,47 @@
|
|
|
26ba25 |
+# Functional test that boots a Linux kernel and checks the console
|
|
|
26ba25 |
+#
|
|
|
26ba25 |
+# Copyright (c) 2018 Red Hat, Inc.
|
|
|
26ba25 |
+#
|
|
|
26ba25 |
+# Author:
|
|
|
26ba25 |
+# Cleber Rosa <crosa@redhat.com>
|
|
|
26ba25 |
+#
|
|
|
26ba25 |
+# This work is licensed under the terms of the GNU GPL, version 2 or
|
|
|
26ba25 |
+# later. See the COPYING file in the top-level directory.
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+import logging
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+from avocado_qemu import Test
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+class BootLinuxConsole(Test):
|
|
|
26ba25 |
+ """
|
|
|
26ba25 |
+ Boots a x86_64 Linux kernel and checks that the console is operational
|
|
|
26ba25 |
+ and the kernel command line is properly passed from QEMU to the kernel
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ :avocado: enable
|
|
|
26ba25 |
+ :avocado: tags=x86_64
|
|
|
26ba25 |
+ """
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ timeout = 60
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ def test(self):
|
|
|
26ba25 |
+ kernel_url = ('https://mirrors.kernel.org/fedora/releases/28/'
|
|
|
26ba25 |
+ 'Everything/x86_64/os/images/pxeboot/vmlinuz')
|
|
|
26ba25 |
+ kernel_hash = '238e083e114c48200f80d889f7e32eeb2793e02a'
|
|
|
26ba25 |
+ kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ self.vm.set_machine('pc')
|
|
|
26ba25 |
+ self.vm.set_console()
|
|
|
26ba25 |
+ kernel_command_line = 'console=ttyS0'
|
|
|
26ba25 |
+ self.vm.add_args('-kernel', kernel_path,
|
|
|
26ba25 |
+ '-append', kernel_command_line)
|
|
|
26ba25 |
+ self.vm.launch()
|
|
|
26ba25 |
+ console = self.vm.console_socket.makefile()
|
|
|
26ba25 |
+ console_logger = logging.getLogger('console')
|
|
|
26ba25 |
+ while True:
|
|
|
26ba25 |
+ msg = console.readline()
|
|
|
26ba25 |
+ console_logger.debug(msg.strip())
|
|
|
26ba25 |
+ if 'Kernel command line: %s' % kernel_command_line in msg:
|
|
|
26ba25 |
+ break
|
|
|
26ba25 |
+ if 'Kernel panic - not syncing' in msg:
|
|
|
26ba25 |
+ self.fail("Kernel panic reached")
|
|
|
26ba25 |
--
|
|
|
26ba25 |
1.8.3.1
|
|
|
26ba25 |
|