xref: /qemu/tests/functional/test_arm_realview.py (revision 0bc0e92be50058bc3b881b0d5051206b015a3fa7)
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
8from qemu_test import LinuxKernelTest, exec_command_and_wait_for_pattern
9from qemu_test import Asset
10
11
12class 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
46if __name__ == '__main__':
47    LinuxKernelTest.main()
48