On 1/19/20 1:50 AM, Niek Linnenbank wrote: > From: Philippe Mathieu-Daudé <f4...@amsat.org> > > This test boots Ubuntu Bionic on a OrangePi PC board. > > As it requires 1GB of storage, and is slow, this test is disabled > on automatic CI testing. > > It is useful for workstation testing. Currently Avocado timeouts too > quickly, so we can't run userland commands. > > The kernel image and DeviceTree blob are built by the Armbian > project (based on Debian): > https://www.armbian.com/orange-pi-pc/ > > The Ubuntu image is downloaded from: > https://dl.armbian.com/orangepipc/Bionic_current
I forgot the image is compressed is compressed with 7z, which is not provided by avocado.utils.archive. This patch requires more checks, see inlined... > > This test can be run using: > > $ AVOCADO_ALLOW_LARGE_STORAGE=yes \ > avocado --show=app,console run -t machine:orangepi-pc \ > tests/acceptance/boot_linux_console.py > console: U-Boot SPL 2019.04-armbian (Nov 18 2019 - 23:08:35 +0100) > console: DRAM: 1024 MiB > console: Failed to set core voltage! Can't set CPU frequency > console: Trying to boot from MMC1 > console: U-Boot 2019.04-armbian (Nov 18 2019 - 23:08:35 +0100) Allwinner > Technology > console: CPU: Allwinner H3 (SUN8I 0000) > console: Model: Xunlong Orange Pi PC > console: DRAM: 1 GiB > console: MMC: mmc@1c0f000: 0 > [...] > console: Uncompressing Linux... done, booting the kernel. > console: Booting Linux on physical CPU 0x0 > console: Linux version 5.3.9-sunxi (root@builder) (gcc version 8.3.0 (GNU > Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) > #19.11.3 SMP Mon Nov 18 18:49:43 CET 2019 > console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d > console: CPU: div instructions available: patching division code > console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction > cache > console: OF: fdt: Machine model: Xunlong Orange Pi PC > [...] > console: EXT4-fs (mmcblk0p1): mounted filesystem with writeback data mode. > Opts: (null) > console: done. > console: Begin: Running /scripts/local-bottom ... done. > console: Begin: Running /scripts/init-bottom ... done. > console: systemd[1]: systemd 237 running in system mode. (...) > console: systemd[1]: Detected architecture arm. > console: Welcome to Ubuntu 18.04.3 LTS! > console: systemd[1]: Set hostname to <orangepipc>. > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > [NL: rename in commit message Raspbian to Armbian, remove vm.set_machine()] > [NL: changed test to boot from SD card via BootROM] > Signed-off-by: Niek Linnenbank <nieklinnenb...@gmail.com> > --- > tests/acceptance/boot_linux_console.py | 41 ++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/tests/acceptance/boot_linux_console.py > b/tests/acceptance/boot_linux_console.py > index 50294e1675..399d5062db 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py This patch needs: from avocado.utils.path import find_command P7ZIP_AVAILABLE = True try: find_command('7z') except CmdNotFoundError: P7ZIP_AVAILABLE = False > @@ -591,6 +591,47 @@ class BootLinuxConsole(Test): > exec_command_and_wait_for_pattern(self, 'reboot', > 'reboot: Restarting system') > > + @skipUnless(os.getenv('AVOCADO_ALLOW_LARGE_STORAGE'), 'storage limited') @skipUnless(P7ZIP_AVAILABLE, '7z not installed') > + def test_arm_orangepi_bionic(self): > + """ > + :avocado: tags=arch:arm > + :avocado: tags=machine:orangepi-pc > + """ > + > + # This test download a 196MB compressed image and expand it to > 932MB... > + image_url = ('https://dl.armbian.com/orangepipc/archive/' > + 'Armbian_19.11.3_Orangepipc_bionic_current_5.3.9.7z') > + image_hash = '196a8ffb72b0123d92cea4a070894813d305c71e' > + image_path_7z = self.fetch_asset(image_url, asset_hash=image_hash) > + image_name = 'Armbian_19.11.3_Orangepipc_bionic_current_5.3.9.img' > + image_path = os.path.join(self.workdir, image_name) > + process.run("7z e -o%s %s" % (self.workdir, image_path_7z)) Because here 7z is called ^ > + > + self.vm.set_console() > + self.vm.add_args('-drive', 'file=' + image_path + > ',if=sd,format=raw', > + '-nic', 'user', > + '-no-reboot') > + self.vm.launch() > + > + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > + 'console=ttyS0,115200 ' > + 'loglevel=7 ' > + 'nosmp ' > + 'systemd.default_timeout_start_sec=9000 ' > + 'systemd.mask=armbian-zram-config.service ' > + 'systemd.mask=armbian-ramlog.service') > + > + self.wait_for_console_pattern('U-Boot SPL') > + self.wait_for_console_pattern('Autoboot in ') > + exec_command_and_wait_for_pattern(self, ' ', '=>') > + exec_command_and_wait_for_pattern(self, "setenv extraargs '" + > + kernel_command_line + "'", > '=>') > + exec_command_and_wait_for_pattern(self, 'boot', 'Starting kernel > ...'); > + > + self.wait_for_console_pattern('systemd[1]: Set hostname ' + > + 'to <orangepipc>') > + self.wait_for_console_pattern('Starting Load Kernel Modules...') > + > def test_s390x_s390_ccw_virtio(self): > """ > :avocado: tags=arch:s390x >