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