| 1 | #!/usr/bin/env python3 |
| 2 | # |
| 3 | # Functional test that boots a Linux kernel on a realview arm machine |
| 4 | # and checks the console |
| 5 | # |
| 6 | # SPDX-License-Identifier: GPL-2.0-or-later |
| 7 | |
| 8 | from qemu_test import LinuxKernelTest, exec_command_and_wait_for_pattern |
| 9 | from qemu_test import Asset |
| 10 | |
| 11 | |
| 12 | class RealviewMachine(LinuxKernelTest): |
| 13 | |
| 14 | ASSET_REALVIEW_MPCORE = Asset( |
| 15 | ('https://archive.openwrt.org/chaos_calmer/15.05.1/realview/generic/' |
| 16 | 'openwrt-15.05.1-realview-vmlinux-initramfs.elf'), |
| 17 | 'd3a01037f33e7512d46d50975588d5c3a0e0cbf25f37afab44775c2a2be523e6') |
| 18 | |
| 19 | def test_realview_ep_mpcore(self): |
| 20 | self.require_netdev('user') |
| 21 | self.set_machine('realview-eb-mpcore') |
| 22 | kernel_path = self.ASSET_REALVIEW_MPCORE.fetch() |
| 23 | self.vm.set_console() |
| 24 | kernel_param = 'console=ttyAMA0 mem=128M quiet' |
| 25 | self.vm.add_args('-kernel', kernel_path, |
| 26 | '-append', kernel_param) |
| 27 | self.vm.launch() |
| 28 | self.wait_for_console_pattern('Please press Enter to activate') |
| 29 | prompt = ':/#' |
| 30 | exec_command_and_wait_for_pattern(self, '', prompt) |
| 31 | exec_command_and_wait_for_pattern(self, 'dmesg', kernel_param) |
| 32 | self.wait_for_console_pattern(prompt) |
| 33 | exec_command_and_wait_for_pattern(self, |
| 34 | ('while ! dmesg | grep "br-lan: port 1(eth0) entered" ;' |
| 35 | ' do sleep 1 ; done'), |
| 36 | 'entered forwarding state') |
| 37 | self.wait_for_console_pattern(prompt) |
| 38 | exec_command_and_wait_for_pattern(self, |
| 39 | 'while ! ifconfig | grep "10.0.2.15" ; do sleep 1 ; done', |
| 40 | 'addr:10.0.2.15') |
| 41 | self.wait_for_console_pattern(prompt) |
| 42 | exec_command_and_wait_for_pattern(self, 'ping -c 1 10.0.2.2', |
| 43 | '1 packets received, 0% packet loss') |
| 44 | |
| 45 | |
| 46 | if __name__ == '__main__': |
| 47 | LinuxKernelTest.main() |