On Mon, Oct 28, 2019 at 08:34:37AM +0100, Philippe Mathieu-Daudé wrote: > From: Philippe Mathieu-Daudé <f4...@amsat.org> > > Add a test which boots Linux and run basic commands using the serial > port console. > > The kernel image is built by the Debian project: > https://wiki.debian.org/RaspberryPi > > The DeviceTree blob comes from the official Raspberry Pi project: > https://www.raspberrypi.org/ > > The cpio image used comes from the linux-build-test project: > https://github.com/groeck/linux-build-test > > This test can be run using: > > $ avocado run --show=console,app run -t machine:raspi3 tests/acceptance > console: [ 0.000000] Linux version 4.14.0-3-arm64 > (debian-ker...@lists.debian.org) (gcc version 7.2.0 (Debian 7.2.0-18)) #1 SMP > Debian 4.14.12-2 (2018-01-06) > console: [ 0.000000] Boot CPU: AArch64 Processor [410fd034] > console: [ 0.000000] Machine model: Raspberry Pi 3 Model B > console: [ 0.000000] earlycon: pl11 at MMIO 0x000000003f201000 (options > '') > console: [ 0.000000] bootconsole [pl11] enabled > [...] > console: Starting network: OK > console: Found console ttyAMA0 > console: Boot successful. > console: / # cat /proc/cpuinfo > console: processor : 0 > console: BogoMIPS : 125.00 > console: r : 0x41 > console: CPU architecture: 8 > console: CPU variant > console: : 0x0 > console: CPU part : 0xd03 > console: CPU revision : 4 > console: / # uname -a > console: Linux buildroot 4.14.0-3-arm64 #1 SMP Debian 4.14.12-2 > (2018-01-06) aarch64 GNU/Linux > console: reboot > console: / # reboot > console: / # Found console ttyAMA0 > console: Stopping network: OK > console: Saving random seed... done. > console: Stopping logging: OK > console: umount: devtmpfs busy - remounted read-only > console: umount: can't unmount /: Invalid argument > console: The system is going down NOW! > console: Sent SIGTERM to all processes > console: Sent SIGKILL to all processes > console: Requesting system reboot > console: kvm: exiting hardware virtualization > console: reboot: Restarting system > PASS (11.08 s) > > Reviewed-by: Cleber Rosa <cr...@redhat.com> > Tested-by: Cleber Rosa <cr...@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > v2: Use archive.gzip_uncompress (Cleber) > > some chars are scrambled on the console? > Cleber ran this 100 times and doesn't have issue. > --- > tests/acceptance/boot_linux_console.py | 48 ++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/tests/acceptance/boot_linux_console.py > b/tests/acceptance/boot_linux_console.py > index 1c9ff2bda3..dc27d79199 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -338,6 +338,54 @@ class BootLinuxConsole(MachineTest): > """ > self.do_test_arm_raspi2(1) > > + def test_arm_raspi3_initrd_uart0(self): > + """ > + :avocado: tags=arch:aarch64 > + :avocado: tags=machine:raspi3 > + """ > + deb_url = ('https://snapshot.debian.org/archive/debian/' > + '20180106T174014Z/pool/main/l/linux/' > + 'linux-image-4.14.0-3-arm64_4.14.12-2_arm64.deb') > + deb_hash = 'e71c995de57921921895c1162baea5df527d1c6b' > + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) > + kernel_path = self.extract_from_deb(deb_path, > + '/boot/vmlinuz-4.14.0-3-arm64') > + > + dtb_url = ('https://github.com/raspberrypi/firmware/raw/' > + '1.20180313/boot/bcm2710-rpi-3-b.dtb') > + dtb_hash = 'eb14d67133401ef2f93523be7341456d38bfc077' > + dtb_path = self.fetch_asset(dtb_url, asset_hash=dtb_hash) > + > + initrd_url = ('https://github.com/groeck/linux-build-test/raw/' > + '9b6b392ea7bc15f0d6632328d429d31c9c6273da/rootfs/' > + 'arm64/rootfs.cpio.gz') > + initrd_hash = '6fd05324f17bb950196b5ad9d3a0fa996339f4cd' > + initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) > + initrd_path = self.workdir + "rootfs.cpio" > + archive.gzip_uncompress(initrd_path_gz, initrd_path) > + > + self.vm.set_machine('raspi3') > + self.vm.set_console() > + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > + 'earlycon=pl011,0x3f201000 console=ttyAMA0 ' + > + 'panic=-1 noreboot') > + self.vm.add_args('-kernel', kernel_path, > + '-dtb', dtb_path, > + '-initrd', initrd_path, > + '-append', kernel_command_line, > + '-no-reboot') > + self.vm.launch() > + > + self.wait_for_console_pattern('Boot successful.', > + failure_message='-----[ cut here > ]-----') > +
With the previous refactors to wait_for_console_pattern(), this should become: wait_for_console_pattern(self, 'Boot successful.', failure_message='-----[ cut here ]-----') - Cleber.