From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <huth@tuxfamily.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
qemu-ppc@nongnu.org, "Cleber Rosa" <crosa@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: [PATCH 2/2] tests/acceptance: Add tests for the Pegasos2 machine
Date: Sat, 15 May 2021 15:45:55 +0200 [thread overview]
Message-ID: <20210515134555.307404-3-f4bug@amsat.org> (raw)
In-Reply-To: <20210515134555.307404-1-f4bug@amsat.org>
Add a pair of tests for the Pegasos2 machine following the steps from:
https://lists.nongnu.org/archive/html/qemu-devel/2021-01/msg01553.html
$ PEGASOS2_ROM_PATH=/tmp/pegasos2.rom AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
avocado --show=app,console,tesseract \
run -t machine:pegasos2 tests/acceptance/
(1/2) tests/acceptance/machine_ppc_pegasos.py:PPCPegasos2.test_rom_serial_console:
console: PegasosII Boot Strap (c) 2002-2003 bplan GmbH
console: Running on CPU PVR:000C0209
console: Enable L1 ICache... Done.
console: Reading W83194 : FAILED.
console: Setting Front Side Bus to 133MHz... FAILED.
console: Configuring DDR... Done.
console: Configuring PCI0... Done.
console: Configuring PCI1... Done.
console: Configuring ETH... Done.
console: Releasing IDE reset ... Done.
console: Configuring Legacy Devices
console: Initializing KBD... Done.
console: Testing 10000000 Bytes, Pass: 00000000 Failed: 00000000
console: RAM TEST (fill linear)... Done.
console: FFFFFFFF
console: SmartFirmware:
console: cpu0: PowerPC,G4 CPUClock 599 Mhz BUSClock 133 Mhz (Version 0x000C,0x0209)
console: no/bad nvramrc - performing default startup script
console: channel 1 unit 0 : atapi | QEMU DVD-ROM | 2.5+
console: ATA device not present or not responding
console: Welcome to SmartFirmware(tm) for bplan Pegasos2 version 1.1 (20040405172512)
PASS (5.23 s)
(2/2) tests/acceptance/machine_ppc_pegasos.py:PPCPegasos2.test_morphos_cdrom_vga:
...
console: Welcome to SmartFirmware(tm) for bplan Pegasos2 version 1.1 (20040405172512)
console: SmartFirmware(tm) Copyright 1996-2001 by CodeGen, Inc.
console: All Rights Reserved.
console: Pegasos BIOS Extensions Copyright 2001-2003 by bplan GmbH.
console: All Rights Reserved.
console: entering main read/eval loop...
console: ok boot cd boot.img
console: ISO-9660 filesystem: System-ID: "MORPHOS" Volume-ID: "MorphOSBoot"
console: " flags=0x2 extent=0x20 size=0x1800
console: Memory used before SYS_Init: 9MB
console: PCI ATA/ATAPI Driver@2: PIO Mode 4
console: PCI ATA/ATAPI Driver@2: UDMA Mode 5
console: ide.device@2: QEMU QEMU DVD-ROM <CDROM>
console: ide.device@2: CDRom <CD001>,<MORPHOS > found, bootable
tesseract: Ambient Screen 4: Saturday, 15 May 2021, 13:36:06 &
tesseract: keymap
tesseract: Albanian keyboard with 101/104 keys
tesseract: ‘American keyboard with Greek input extension, 105 keys
tesseract: Belarusian keyboard with 105 keys
tesseract: Belgian keyboard with 105 keys J
tesseract: British Apple keyboard
tesseract: British keyboard with 105 keys
tesseract: Bulgarian keyboard with 104 keys
tesseract: Canadian keyboard with 105 keys
tesseract: Colemak layout for keyboards with 101/104 keys
tesseract: Croatian keyboard with 101/108 keys
tesseract: Czech keyboard (QWERTY) with 101/104 keys
tesseract: Czech keyboard (QWERTZ) with 101/104 keys
tesseract: Danish keyboard with 105 keys
PASS (28.56 s)
RESULTS : PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 34.42 s
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
tests/acceptance/machine_ppc_pegasos.py | 98 +++++++++++++++++++++++++
1 file changed, 98 insertions(+)
create mode 100644 tests/acceptance/machine_ppc_pegasos.py
diff --git a/tests/acceptance/machine_ppc_pegasos.py b/tests/acceptance/machine_ppc_pegasos.py
new file mode 100644
index 00000000000..d36e920ebde
--- /dev/null
+++ b/tests/acceptance/machine_ppc_pegasos.py
@@ -0,0 +1,98 @@
+# Functional tests for the Pegasos2 machine.
+#
+# Copyright (c) 2021 Philippe Mathieu-Daudé <f4bug@amsat.org>
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import exec_command_and_wait_for_pattern
+from avocado_qemu import wait_for_console_pattern
+from tesseract_utils import tesseract_available, tesseract_ocr
+
+PIL_AVAILABLE = True
+try:
+ from PIL import Image
+except ImportError:
+ PIL_AVAILABLE = False
+
+
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+@skipUnless(os.getenv('PEGASOS2_ROM_PATH'), 'PEGASOS2_ROM_PATH not available')
+class PPCPegasos2(Test):
+ timeout = 60
+
+ def test_rom_serial_console(self):
+ """
+ :avocado: tags=arch:ppc
+ :avocado: tags=machine:pegasos2
+ :avocado: tags=device:mv64361
+ :avocado: tags=device:vt8231
+ """
+ rom_hash = '3248e02596480f2dba5944bd219ecfad'
+ rom_path = self.fetch_asset('file://' + os.getenv('PEGASOS2_ROM_PATH'),
+ asset_hash=rom_hash, algorithm='md5')
+
+ self.vm.set_console()
+ self.vm.add_args('-bios', rom_path)
+ self.vm.launch()
+ msg = 'PegasosII Boot Strap (c) 2002-2003 bplan GmbH'
+ wait_for_console_pattern(self, msg)
+ msg = 'Welcome to SmartFirmware(tm) for bplan Pegasos2 version 1.1'
+ wait_for_console_pattern(self, msg)
+
+ def test_morphos_cdrom_vga(self):
+ """
+ :avocado: tags=arch:ppc
+ :avocado: tags=machine:pegasos2
+ :avocado: tags=device:mv64361
+ :avocado: tags=device:vt8231
+ :avocado: tags=device:ati-vga
+ """
+ rom_hash = '3248e02596480f2dba5944bd219ecfad'
+ rom_path = self.fetch_asset('file://' + os.getenv('PEGASOS2_ROM_PATH'),
+ asset_hash=rom_hash, algorithm='md5')
+ iso_url = 'https://www.morphos-team.net/morphos-3.15.iso'
+ iso_hash = 'a19dbfbbc4728e0ba9ceb6335db69ca4'
+ iso_path = self.fetch_asset(iso_url,
+ asset_hash=iso_hash, algorithm='md5')
+
+ self.vm.set_console()
+ self.vm.add_args('-bios', rom_path,
+ '-device', 'ati-vga,romfile=',
+ '-cdrom', iso_path)
+ self.vm.launch()
+ msg = 'Welcome to SmartFirmware(tm) for bplan Pegasos2 version 1.1'
+ wait_for_console_pattern(self, msg)
+ wait_for_console_pattern(self, 'entering main read/eval loop...')
+ msg = 'filesystem: System-ID: "MORPHOS" Volume-ID: "MorphOSBoot"'
+ exec_command_and_wait_for_pattern(self, 'boot cd boot.img', msg)
+
+ msg = 'ide.device@2: CDRom <CD001>,<MORPHOS > found, bootable'
+ wait_for_console_pattern(self, msg)
+ if PIL_AVAILABLE:
+ delay_s = 20 if tesseract_available(4) else 8
+
+ self.log.info('VM launched, waiting for display')
+ # TODO: Use avocado.utils.wait.wait_for to catch the
+ # 'displaysurface_create 1120x832' trace-event.
+ time.sleep(delay_s)
+
+ screenshot_path = os.path.join(self.workdir, "dump.ppm")
+ self.vm.command('human-monitor-command',
+ command_line='screendump %s' % screenshot_path)
+ width, height = Image.open(screenshot_path).size
+ self.assertEqual(width, 2048)
+ self.assertEqual(height, 1152)
+
+ if tesseract_available(4):
+ lines = tesseract_ocr(screenshot_path, tesseract_version=4)
+ text = '\n'.join(lines)
+ msg = 'American keyboard with Greek input extension, 105 keys'
+ self.assertIn(msg, text)
--
2.26.3
next prev parent reply other threads:[~2021-05-15 13:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-15 13:45 [PATCH 0/2] tests/acceptance: Add tests for the Pegasos2 machine Philippe Mathieu-Daudé
2021-05-15 13:45 ` [PATCH 1/2] tests/acceptance: Ignore binary data sent on serial console Philippe Mathieu-Daudé
2021-05-27 19:50 ` Wainer dos Santos Moschetta
2021-05-15 13:45 ` Philippe Mathieu-Daudé [this message]
2021-05-15 14:33 ` [PATCH 2/2] tests/acceptance: Add tests for the Pegasos2 machine BALATON Zoltan
2021-05-27 20:46 ` Wainer dos Santos Moschetta
2021-07-12 22:05 ` Cleber Rosa
2021-07-13 9:50 ` Philippe Mathieu-Daudé
2021-05-25 7:52 ` [PATCH 0/2] " Philippe Mathieu-Daudé
2021-07-12 20:20 ` BALATON Zoltan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210515134555.307404-3-f4bug@amsat.org \
--to=f4bug@amsat.org \
--cc=crosa@redhat.com \
--cc=huth@tuxfamily.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).