Message ID | 20191028073441.6448-19-philmd@redhat.com |
---|---|
State | New |
Headers | show |
Series | tests/acceptance: Queue for 4.2 | expand |
On Mon, Oct 28, 2019 at 08:34:33AM +0100, Philippe Mathieu-Daudé wrote: > From: Philippe Mathieu-Daudé <f4bug@amsat.org> > > Add a test which boots a HP-UX firmware upgrade CD-ROM. > It exercise the PCI LSI53C895A SCSI controller. > > The ISO image comes from: > https://web.archive.org/web/20101204061612/http://ftp.parisc-linux.org/kernels/712/PF_C7120023 > > This test is very quick, less than 3s: > > $ AVOCADO_ALLOW_UNTRUSTED_CODE=yes \ > avocado --show=app,console run -t arch:hppa \ > tests/acceptance/boot_linux_console.py > console: Firmware Version 6.1 > console: Duplex Console IO Dependent Code (IODC) revision 1 > console: Memory Test/Initialization Completed > console: ------------------------------------------------------------------------------ > console: (c) Copyright 2017-2018 Helge Deller <deller@gmx.de> and SeaBIOS developers. > console: ------------------------------------------------------------------------------ > console: Processor Speed State Coprocessor State Cache Size > console: --------- -------- --------------------- ----------------- ---------- > console: 0 250 MHz Active Functional 0 KB > console: Available memory: 512 MB > console: Good memory required: 16 MB > console: Primary boot path: FWSCSI.0.0 > console: Alternate boot path: FWSCSI.2.0 > console: Console path: SERIAL_1.9600.8.none > console: Keyboard path: PS2 > console: Available boot devices: > console: 1. DVD/CD [lsi 00:00.0 2:0 Drive QEMU QEMU CD-ROM 2.5+] > console: Booting from DVD/CD [lsi 00:00.0 2:0 Drive QEMU QEMU CD-ROM 2.5+] > console: Booting... > console: Boot IO Dependent Code (IODC) revision 153 > console: HARD Booted. > console: ISL Revision A.00.25 November 18, 1992 > console: ISL booting ODE UPDATE ; stable off ; RUN > console: Loading... > console: *************************************************************************** > console: ****** ****** > console: ****** Offline Diagnostic Environment ****** > console: ****** ****** > console: ****** (C) Copyright Hewlett-Packard Co 1993 ****** > console: ****** All Rights Reserved ****** > console: ****** ****** > console: ****** HP shall not be liable for any damages resulting from the ****** > console: ****** use of this program. ****** > console: ****** ****** > console: ****** TC Version A.00.15 ****** > console: ****** SysLib Version A.00.44 ****** > console: ****** ****** > console: *************************************************************************** > console: Type HELP for command information. > console: ISL_CMD> UPDATE ; stable off ; RUN > console: *************************************************************************** > console: ****** ****** > console: ****** PDC UPDATER ****** > console: ****** ****** > console: ****** Copyright (C) 1993, 1994, 1995 by Hewlett-Packard Company ****** > console: ****** Version A.00.19 ****** > console: ****** ****** > console: *************************************************************************** > console: Type HELP for command information. > console: Stable Storage will NOT be updated > console: STARTING EXECUTION OF UPDATE > console: Unrecognized MODEL TYPE = 502 > console: ERROR 0001 > console: UPDATE PAUSED> exit > console: UPDATE> > console: UPDATE> ls > console: Modules on this boot media are: > console: filename type size created description > console: ----------------------------------------------------------------------------- > console: DAGGER DATA 118 96/02/15 ? > console: IMAGE1A DATA 512 96/02/15 ? > console: IMAGE1B DATA 388 96/02/15 ? > console: UPDATE> exit > console: THIS UTILITY WILL NOW RESET THE SYSTEM..... > PASS (2.39 s) > JOB TIME : 2.54 s > > Suggested-by: Sven Schnelle <svens@stackframe.org> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > v2: > - check getenv(AVOCADO_ALLOW_UNTRUSTED_CODE) (pm215) > > I know this is not a 'Linux' test, but all our console functions > reside in this file and I don't want to duplicate again. > Maybe we could rename this file as 'boot_console_tests.py' or > extract the console related functions. > --- > tests/acceptance/boot_linux_console.py | 27 ++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py > index f94dc4bbca..67b396169b 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -13,6 +13,7 @@ import lzma > import gzip > import shutil > > +from avocado import skipUnless > from avocado_qemu import MachineTest > from avocado_qemu import exec_command_and_wait_for_pattern > from avocado_qemu import wait_for_console_pattern > @@ -357,3 +358,29 @@ class BootLinuxConsole(MachineTest): > self.vm.launch() > console_pattern = 'Kernel command line: %s' % kernel_command_line > self.wait_for_console_pattern(console_pattern) > + > + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > + def test_hppa_fwupdate(self): > + """ > + :avocado: tags=arch:hppa > + :avocado: tags=device:lsi53c895a > + """ > + cdrom_url = ('https://github.com/philmd/qemu-testing-blob/raw/ec1b741/' > + 'hppa/hp9000/712/C7120023.frm') > + cdrom_hash = '17944dee46f768791953009bcda551be5ab9fac9' > + cdrom_path = self.fetch_asset(cdrom_url, asset_hash=cdrom_hash) > + > + self.vm.set_console() > + self.vm.add_args('-cdrom', cdrom_path, > + '-boot', 'd', > + '-no-reboot') > + self.vm.launch() > + self.wait_for_console_pattern('Unrecognized MODEL TYPE = 502') > + > + exec_command_and_wait_for_pattern(self, 'exit', > + 'UPDATE>') OK, so this also gets stuck (like the previous tests I mentioned that wouldn't get passed a given "prompt" point). Adding a newline to the command (in addition to the carriage return) does the trick, that is: --- diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index bdece76723..6fdb308a6e 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -93,7 +93,7 @@ def exec_command_and_wait_for_pattern(test, command, :param success_message: if this message appears, test succeeds :param failure_message: if this message appears, test fails """ - command += '\r' + command += '\n\r' test.vm.console_socket.sendall(command.encode()) wait_for_console_pattern(test, success_message, failure_message) --- I'm guessing that different systems will interpret the end of line differently. Any other ideas? - Cleber. > + exec_command_and_wait_for_pattern(self, 'ls', > + 'IMAGE1B') > + exec_command_and_wait_for_pattern(self, 'exit', > + 'THIS UTILITY WILL NOW ' > + 'RESET THE SYSTEM.....') > -- > 2.21.0 >
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py index f94dc4bbca..67b396169b 100644 --- a/tests/acceptance/boot_linux_console.py +++ b/tests/acceptance/boot_linux_console.py @@ -13,6 +13,7 @@ import lzma import gzip import shutil +from avocado import skipUnless from avocado_qemu import MachineTest from avocado_qemu import exec_command_and_wait_for_pattern from avocado_qemu import wait_for_console_pattern @@ -357,3 +358,29 @@ class BootLinuxConsole(MachineTest): self.vm.launch() console_pattern = 'Kernel command line: %s' % kernel_command_line self.wait_for_console_pattern(console_pattern) + + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') + def test_hppa_fwupdate(self): + """ + :avocado: tags=arch:hppa + :avocado: tags=device:lsi53c895a + """ + cdrom_url = ('https://github.com/philmd/qemu-testing-blob/raw/ec1b741/' + 'hppa/hp9000/712/C7120023.frm') + cdrom_hash = '17944dee46f768791953009bcda551be5ab9fac9' + cdrom_path = self.fetch_asset(cdrom_url, asset_hash=cdrom_hash) + + self.vm.set_console() + self.vm.add_args('-cdrom', cdrom_path, + '-boot', 'd', + '-no-reboot') + self.vm.launch() + self.wait_for_console_pattern('Unrecognized MODEL TYPE = 502') + + exec_command_and_wait_for_pattern(self, 'exit', + 'UPDATE>') + exec_command_and_wait_for_pattern(self, 'ls', + 'IMAGE1B') + exec_command_and_wait_for_pattern(self, 'exit', + 'THIS UTILITY WILL NOW ' + 'RESET THE SYSTEM.....')