Message ID | 20190221005753.27955-15-crosa@redhat.com |
---|---|
State | New |
Headers | show |
Series | Acceptance Tests: target architecture support | expand |
> From: Cleber Rosa <crosa@redhat.com> > Subject: [PATCH v3 14/20] Boot Linux Console Test: add a test for mips + malta > > From: Philippe Mathieu-Daudé <f4bug@amsat.org> > > Similar to the x86_64 + pc test, it boots a Linux kernel on a Malta > board and verify the serial is working. Also, it relies on the serial > device set by the machine itself. Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
On 2/21/19 1:57 AM, Cleber Rosa wrote: > From: Philippe Mathieu-Daudé <f4bug@amsat.org> > > Similar to the x86_64 + pc test, it boots a Linux kernel on a Malta > board and verify the serial is working. Also, it relies on the serial > device set by the machine itself. > > If mips 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:mips tests/acceptance > $ avocado run -t machine:malta tests/acceptance > $ avocado run -t endian:big tests/acceptance > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > Signed-off-by: Cleber Rosa <crosa@redhat.com> > --- > .travis.yml | 2 +- > tests/acceptance/boot_linux_console.py | 41 ++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+), 1 deletion(-) > > diff --git a/.travis.yml b/.travis.yml > index 42971484ab..0a5e0613be 100644 > --- a/.travis.yml > +++ b/.travis.yml > @@ -198,7 +198,7 @@ matrix: > > # Acceptance (Functional) tests > - env: > - - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu" > + - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-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 e2ef43e7ce..05e43360b8 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -8,9 +8,12 @@ > # 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 > import logging > > from avocado_qemu import Test > +from avocado.utils import process > +from avocado.utils import archive > > > class BootLinuxConsole(Test): > @@ -44,6 +47,21 @@ class BootLinuxConsole(Test): > fail = 'Failure message found in console: %s' % failure_message > self.fail(fail) > > + def extract_from_deb(self, deb, path): > + """ > + Extracts a file from a deb package into the test workdir > + > + :param deb: path to the deb archive > + :param file: path within the deb archive of the file to be extracted > + :returns: path of the extracted file > + """ > + cwd = os.getcwd() > + os.chdir(self.workdir) > + process.run("ar x %s data.tar.gz" % deb) > + archive.extract("data.tar.gz", self.workdir) > + os.chdir(cwd) > + return self.workdir + path Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > + > def test_x86_64_pc(self): > """ > :avocado: tags=arch:x86_64 > @@ -62,3 +80,26 @@ class BootLinuxConsole(Test): > self.vm.launch() > console_pattern = 'Kernel command line: %s' % kernel_command_line > self.wait_for_console_pattern(console_pattern) > + > + def test_mips_malta(self): > + """ > + :avocado: tags=arch:mips > + :avocado: tags=machine:malta > + :avocado: tags=endian:big > + """ > + deb_url = ('http://snapshot.debian.org/archive/debian/' > + '20130217T032700Z/pool/main/l/linux-2.6/' > + 'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb') > + deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04' > + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) > + kernel_path = self.extract_from_deb(deb_path, > + '/boot/vmlinux-2.6.32-5-4kc-malta') > + > + self.vm.set_machine('malta') > + self.vm.set_console() > + kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' > + 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) >
diff --git a/.travis.yml b/.travis.yml index 42971484ab..0a5e0613be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -198,7 +198,7 @@ matrix: # Acceptance (Functional) tests - env: - - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu" + - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-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 e2ef43e7ce..05e43360b8 100644 --- a/tests/acceptance/boot_linux_console.py +++ b/tests/acceptance/boot_linux_console.py @@ -8,9 +8,12 @@ # 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 import logging from avocado_qemu import Test +from avocado.utils import process +from avocado.utils import archive class BootLinuxConsole(Test): @@ -44,6 +47,21 @@ class BootLinuxConsole(Test): fail = 'Failure message found in console: %s' % failure_message self.fail(fail) + def extract_from_deb(self, deb, path): + """ + Extracts a file from a deb package into the test workdir + + :param deb: path to the deb archive + :param file: path within the deb archive of the file to be extracted + :returns: path of the extracted file + """ + cwd = os.getcwd() + os.chdir(self.workdir) + process.run("ar x %s data.tar.gz" % deb) + archive.extract("data.tar.gz", self.workdir) + os.chdir(cwd) + return self.workdir + path + def test_x86_64_pc(self): """ :avocado: tags=arch:x86_64 @@ -62,3 +80,26 @@ class BootLinuxConsole(Test): self.vm.launch() console_pattern = 'Kernel command line: %s' % kernel_command_line self.wait_for_console_pattern(console_pattern) + + def test_mips_malta(self): + """ + :avocado: tags=arch:mips + :avocado: tags=machine:malta + :avocado: tags=endian:big + """ + deb_url = ('http://snapshot.debian.org/archive/debian/' + '20130217T032700Z/pool/main/l/linux-2.6/' + 'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb') + deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04' + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) + kernel_path = self.extract_from_deb(deb_path, + '/boot/vmlinux-2.6.32-5-4kc-malta') + + self.vm.set_machine('malta') + self.vm.set_console() + kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' + 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)