On 1/31/19 2:34 AM, Cleber Rosa wrote: > On 1/22/19 5:57 AM, Philippe Mathieu-Daudé wrote: >> On 1/17/19 7:56 PM, Cleber Rosa wrote: >>> Similar to the x86_64 + pc test, it boots a Linux kernel on a Malta >>> board and verify the serial is working. >>> >>> If mips64el is a target being built, "make check-acceptance" will >>> automatically include this test by the use of the "arch:mips" tags. >>> >>> Alternatively, this test can be run using: >>> >>> $ avocado run -t arch:mips64el tests/acceptance >>> $ avocado run -t machine:malta tests/acceptance >>> >>> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >>> Signed-off-by: Cleber Rosa <cr...@redhat.com> >>> --- >>> .travis.yml | 2 +- >>> tests/acceptance/boot_linux_console.py | 39 ++++++++++++++++++++++++++ >>> 2 files changed, 40 insertions(+), 1 deletion(-) >>> >>> diff --git a/.travis.yml b/.travis.yml >>> index 49f9016e6a..28648f7a61 100644 >>> --- a/.travis.yml >>> +++ b/.travis.yml >>> @@ -187,7 +187,7 @@ matrix: >>> >>> # Acceptance (Functional) tests >>> - env: >>> - - CONFIG="--python=/usr/bin/python3 >>> --target-list=x86_64-softmmu,mips-softmmu" >>> + - CONFIG="--python=/usr/bin/python3 >>> --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu" >>> - TEST_CMD="make check-acceptance" >>> addons: >>> apt: >>> diff --git a/tests/acceptance/boot_linux_console.py >>> b/tests/acceptance/boot_linux_console.py >>> index 0678ec91d2..20b845fce1 100644 >>> --- a/tests/acceptance/boot_linux_console.py >>> +++ b/tests/acceptance/boot_linux_console.py >>> @@ -9,8 +9,11 @@ >>> # later. See the COPYING file in the top-level directory. >>> >>> import logging >>> +import os >>> >>> from avocado_qemu import Test >>> +from avocado.utils import process >>> +from avocado.utils import archive >>> >>> >>> class BootLinuxConsole(Test): >>> @@ -80,3 +83,39 @@ class BootLinuxConsole(Test): >>> self.vm.launch() >>> console_pattern = 'Kernel command line: %s' % kernel_command_line >>> self.wait_for_console_pattern(console_pattern) >>> + >>> + def test_mips64el_malta(self): >>> + """ >>> + This test requires the ar tool to extract "data.tar.gz" from >>> + the Debian package. >>> + >>> + The kernel can be rebuilt using this Debian kernel source [1] and >>> + following the instructions on [2]. >>> + >>> + [1] >>> https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official >>> + [2] >>> http://snapshot.debian.org/package/linux-2.6/2.6.32-48/#linux-source-2.6.32_2.6.32-48 >>> + >>> + :avocado: tags=arch:mips64el >>> + :avocado: tags=machine:malta >>> + """ >>> + deb_url = >>> ('http://snapshot.debian.org/archive/debian/20130217T032700Z/' >>> + 'pool/main/l/linux-2.6/' >>> + 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb') >>> + deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5' >>> + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) >>> + >>> + cwd = os.getcwd() >>> + os.chdir(self.workdir) >>> + process.run("ar x %s data.tar.gz" % deb_path) >>> + archive.extract("data.tar.gz", self.workdir) >>> + os.chdir(cwd) >>> + kernel_path = self.workdir + '/boot/vmlinux-2.6.32-5-5kc-malta' >>> + >>> + self.vm.set_machine('malta') >>> + self.vm.set_console() >>> + kernel_command_line = 'console=ttyS0 printk.time=0' >> >> What about having a generic KERNEL_COMMON_COMMAND_LINE='printk.time=0 ' >> then using >> kernel_command_line = KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' >> in each tests of this series? >> > > Not sure... I do like the fact that it's more uniform, but I don't like > the locality aspect. Having to refer back to something defined either > in the module or class level for something so small is a big con, IMO. > > I'll keep it AS IS for now, and if more people feel like it's a good > idea, or you feel stronger that it's a good idea, I can add it in the > next version.
I'm fine with that, however I'd really like all the Linux tests to use "printk.time=0" in their kernel cmdline, it really simplify parsing/diffing the console output. >>> + 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) >>> >