Boot the OpenBSD/octeon ramdisk through U-Boot using an e1000 device and QEMU user mode TFTP. Verify PCI enumeration, DHCP, image transfer and entry into the OpenBSD installer.
Signed-off-by: Kirill A. Korinsky <[email protected]> --- tests/functional/mips64/meson.build | 2 + tests/functional/mips64/test_octeon3.py | 54 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/functional/mips64/test_octeon3.py diff --git a/tests/functional/mips64/meson.build b/tests/functional/mips64/meson.build index 3ff2118987..98b7c491a1 100644 --- a/tests/functional/mips64/meson.build +++ b/tests/functional/mips64/meson.build @@ -2,9 +2,11 @@ test_mips64_timeouts = { 'malta' : 240, + 'octeon3' : 300, } tests_mips64_system_thorough = [ 'malta', + 'octeon3', 'tuxrun', ] diff --git a/tests/functional/mips64/test_octeon3.py b/tests/functional/mips64/test_octeon3.py new file mode 100644 index 0000000000..9c2bc67ac4 --- /dev/null +++ b/tests/functional/mips64/test_octeon3.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +# +# Functional test for the Cavium Octeon III / EBB7304 machine. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +import os +import shutil + +from qemu_test import QemuSystemTest, Asset +from qemu_test import wait_for_console_pattern +from qemu_test import exec_command_and_wait_for_pattern as ec_and_wait + + +class Octeon3Machine(QemuSystemTest): + + ASSET_UBOOT = Asset( + 'https://kirill.korins.ky/pub/qemu-mips64-openbsd/u-boot.bin', + '7e519b2e52ba44b27bfafd16738c8f485e9eda5438b4899cf6a70520a6d34396') + + ASSET_BSD_RD = Asset( + 'https://kirill.korins.ky/pub/qemu-mips64-openbsd/bsd.rd', + '907f26f0ff67390dd21dc85e2c854fc0e65db295b15d47ae92e1927f98ac5872') + + def test_openbsd_ramdisk_tftp(self): + self.require_netdev('user') + self.require_device('e1000') + self.set_machine('octeon3') + + tftp_dir = self.scratch_file('tftp') + os.mkdir(tftp_dir) + shutil.copy(self.ASSET_BSD_RD.fetch(), + os.path.join(tftp_dir, 'bsd.rd')) + + self.vm.set_console() + self.vm.add_args('-bios', self.ASSET_UBOOT.fetch(), + '-m', '1G', + '-smp', '4', + '-no-reboot', + '-netdev', + f'user,id=net0,tftp={tftp_dir},bootfile=bsd.rd', + '-device', 'e1000,netdev=net0') + self.vm.launch() + + wait_for_console_pattern(self, '=> ') + ec_and_wait(self, 'pci enum', '=> ') + ec_and_wait(self, 'dhcp', 'Bytes transferred') + wait_for_console_pattern(self, '=> ') + ec_and_wait(self, 'bootoctlinux ${loadaddr} numcores=4', + 'Welcome to the OpenBSD/octeon 7.9 installation program.') + + +if __name__ == '__main__': + QemuSystemTest.main() -- 2.56.0
