xref: /qemu/tests/functional/test_mipsel_malta.py (revision a4b60bec10c087e87f22c5c379600b7f32a3a8af)
1*a4b60becSPhilippe Mathieu-Daudé#!/usr/bin/env python3
2*a4b60becSPhilippe Mathieu-Daudé#
3*a4b60becSPhilippe Mathieu-Daudé# Functional tests for the little-endian 32-bit MIPS Malta board
4*a4b60becSPhilippe Mathieu-Daudé#
5*a4b60becSPhilippe Mathieu-Daudé# Copyright (c) Philippe Mathieu-Daudé <f4bug@amsat.org>
6*a4b60becSPhilippe Mathieu-Daudé#
7*a4b60becSPhilippe Mathieu-Daudé# This work is licensed under the terms of the GNU GPL, version 2 or later.
8*a4b60becSPhilippe Mathieu-Daudé# See the COPYING file in the top-level directory.
9*a4b60becSPhilippe Mathieu-Daudé#
10*a4b60becSPhilippe Mathieu-Daudé# SPDX-License-Identifier: GPL-2.0-or-later
11*a4b60becSPhilippe Mathieu-Daudé
12*a4b60becSPhilippe Mathieu-Daudéimport os
13*a4b60becSPhilippe Mathieu-Daudé
14*a4b60becSPhilippe Mathieu-Daudéfrom qemu_test import QemuSystemTest, Asset
15*a4b60becSPhilippe Mathieu-Daudéfrom qemu_test import interrupt_interactive_console_until_pattern
16*a4b60becSPhilippe Mathieu-Daudéfrom qemu_test import wait_for_console_pattern
17*a4b60becSPhilippe Mathieu-Daudéfrom zipfile import ZipFile
18*a4b60becSPhilippe Mathieu-Daudé
19*a4b60becSPhilippe Mathieu-Daudé
20*a4b60becSPhilippe Mathieu-Daudéclass MaltaMachineYAMON(QemuSystemTest):
21*a4b60becSPhilippe Mathieu-Daudé
22*a4b60becSPhilippe Mathieu-Daudé    ASSET_YAMON_ROM = Asset(
23*a4b60becSPhilippe Mathieu-Daudé        ('https://s3-eu-west-1.amazonaws.com/downloads-mips/mips-downloads/'
24*a4b60becSPhilippe Mathieu-Daudé         'YAMON/yamon-bin-02.22.zip'),
25*a4b60becSPhilippe Mathieu-Daudé        'eef86f0eed0ef554f041dcd47b87eebea0e6f9f1184ed31f7e9e8b4a803860ab')
26*a4b60becSPhilippe Mathieu-Daudé
27*a4b60becSPhilippe Mathieu-Daudé    def test_mipsel_malta_yamon(self):
28*a4b60becSPhilippe Mathieu-Daudé        yamon_bin = 'yamon-02.22.bin'
29*a4b60becSPhilippe Mathieu-Daudé        zip_path = self.ASSET_YAMON_ROM.fetch()
30*a4b60becSPhilippe Mathieu-Daudé        with ZipFile(zip_path, 'r') as zf:
31*a4b60becSPhilippe Mathieu-Daudé            zf.extract(yamon_bin, path=self.workdir)
32*a4b60becSPhilippe Mathieu-Daudé        yamon_path = os.path.join(self.workdir, yamon_bin)
33*a4b60becSPhilippe Mathieu-Daudé
34*a4b60becSPhilippe Mathieu-Daudé        self.set_machine('malta')
35*a4b60becSPhilippe Mathieu-Daudé        self.vm.set_console()
36*a4b60becSPhilippe Mathieu-Daudé        self.vm.add_args('-bios', yamon_path)
37*a4b60becSPhilippe Mathieu-Daudé        self.vm.launch()
38*a4b60becSPhilippe Mathieu-Daudé
39*a4b60becSPhilippe Mathieu-Daudé        prompt =  'YAMON>'
40*a4b60becSPhilippe Mathieu-Daudé        pattern = 'YAMON ROM Monitor'
41*a4b60becSPhilippe Mathieu-Daudé        interrupt_interactive_console_until_pattern(self, pattern, prompt)
42*a4b60becSPhilippe Mathieu-Daudé        wait_for_console_pattern(self, prompt)
43*a4b60becSPhilippe Mathieu-Daudé        self.vm.shutdown()
44*a4b60becSPhilippe Mathieu-Daudé
45*a4b60becSPhilippe Mathieu-Daudé
46*a4b60becSPhilippe Mathieu-Daudéif __name__ == '__main__':
47*a4b60becSPhilippe Mathieu-Daudé    QemuSystemTest.main()
48