xref: /openbmc/qemu/tests/avocado/boot_linux.py (revision d92cf77b796d8fbdbc05e540282d292213e761cd)
1bbbd9b6eSWillian Rampazzo# Functional test that boots a complete Linux system via a cloud image
2bbbd9b6eSWillian Rampazzo#
3bbbd9b6eSWillian Rampazzo# Copyright (c) 2018-2020 Red Hat, Inc.
4bbbd9b6eSWillian Rampazzo#
5bbbd9b6eSWillian Rampazzo# Author:
6bbbd9b6eSWillian Rampazzo#  Cleber Rosa <crosa@redhat.com>
7bbbd9b6eSWillian Rampazzo#
8bbbd9b6eSWillian Rampazzo# This work is licensed under the terms of the GNU GPL, version 2 or
9bbbd9b6eSWillian Rampazzo# later.  See the COPYING file in the top-level directory.
10bbbd9b6eSWillian Rampazzo
11bbbd9b6eSWillian Rampazzoimport os
12bbbd9b6eSWillian Rampazzo
13*816d4201SThomas Huthfrom avocado_qemu.linuxtest import LinuxTest
14*816d4201SThomas Huthfrom avocado_qemu import BUILD_DIR
15bbbd9b6eSWillian Rampazzo
169b45cc99SAlex Bennéefrom avocado import skipUnless
17bbbd9b6eSWillian Rampazzo
18bbbd9b6eSWillian Rampazzo
19bbbd9b6eSWillian Rampazzoclass BootLinuxX8664(LinuxTest):
20bbbd9b6eSWillian Rampazzo    """
21bbbd9b6eSWillian Rampazzo    :avocado: tags=arch:x86_64
22bbbd9b6eSWillian Rampazzo    """
23e6025635SAlex Bennée    timeout = 480
24bbbd9b6eSWillian Rampazzo
25bbbd9b6eSWillian Rampazzo    def test_pc_i440fx_tcg(self):
26bbbd9b6eSWillian Rampazzo        """
27bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:pc
28bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:tcg
29bbbd9b6eSWillian Rampazzo        """
30bbbd9b6eSWillian Rampazzo        self.require_accelerator("tcg")
31bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "tcg")
32bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
33bbbd9b6eSWillian Rampazzo
34bbbd9b6eSWillian Rampazzo    def test_pc_i440fx_kvm(self):
35bbbd9b6eSWillian Rampazzo        """
36bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:pc
37bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:kvm
38bbbd9b6eSWillian Rampazzo        """
39bbbd9b6eSWillian Rampazzo        self.require_accelerator("kvm")
40bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "kvm")
41bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
42bbbd9b6eSWillian Rampazzo
43bbbd9b6eSWillian Rampazzo    def test_pc_q35_tcg(self):
44bbbd9b6eSWillian Rampazzo        """
45bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:q35
46bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:tcg
47bbbd9b6eSWillian Rampazzo        """
48bbbd9b6eSWillian Rampazzo        self.require_accelerator("tcg")
49bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "tcg")
50bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
51bbbd9b6eSWillian Rampazzo
52bbbd9b6eSWillian Rampazzo    def test_pc_q35_kvm(self):
53bbbd9b6eSWillian Rampazzo        """
54bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:q35
55bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:kvm
56bbbd9b6eSWillian Rampazzo        """
57bbbd9b6eSWillian Rampazzo        self.require_accelerator("kvm")
58bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "kvm")
59bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
60bbbd9b6eSWillian Rampazzo
61bbbd9b6eSWillian Rampazzo
62dbba45e6SAlex Bennée# For Aarch64 we only boot KVM tests in CI as booting the current
63dbba45e6SAlex Bennée# Fedora OS in TCG tests is very heavyweight. There are lighter weight
64dbba45e6SAlex Bennée# distros which we use in the machine_aarch64_virt.py tests.
65bbbd9b6eSWillian Rampazzoclass BootLinuxAarch64(LinuxTest):
66bbbd9b6eSWillian Rampazzo    """
67bbbd9b6eSWillian Rampazzo    :avocado: tags=arch:aarch64
68bbbd9b6eSWillian Rampazzo    :avocado: tags=machine:virt
69bbbd9b6eSWillian Rampazzo    """
70c4462523SPeter Maydell    timeout = 720
71bbbd9b6eSWillian Rampazzo
72bbbd9b6eSWillian Rampazzo    def test_virt_kvm(self):
73bbbd9b6eSWillian Rampazzo        """
74bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:kvm
75bbbd9b6eSWillian Rampazzo        :avocado: tags=cpu:host
76bbbd9b6eSWillian Rampazzo        """
77bbbd9b6eSWillian Rampazzo        self.require_accelerator("kvm")
78bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "kvm")
79bbbd9b6eSWillian Rampazzo        self.vm.add_args("-machine", "virt,gic-version=host")
80dbba45e6SAlex Bennée        self.vm.add_args('-bios',
81dbba45e6SAlex Bennée                         os.path.join(BUILD_DIR, 'pc-bios',
82dbba45e6SAlex Bennée                                      'edk2-aarch64-code.fd'))
83dbba45e6SAlex Bennée        self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0')
84dbba45e6SAlex Bennée        self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom')
85bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
86bbbd9b6eSWillian Rampazzo
87bbbd9b6eSWillian Rampazzo
88c0c8687eSAlex Bennée# See the tux_baseline.py tests for almost the same coverage in a lot
89c0c8687eSAlex Bennée# less time.
90bbbd9b6eSWillian Rampazzoclass BootLinuxPPC64(LinuxTest):
91bbbd9b6eSWillian Rampazzo    """
92bbbd9b6eSWillian Rampazzo    :avocado: tags=arch:ppc64
93bbbd9b6eSWillian Rampazzo    """
94bbbd9b6eSWillian Rampazzo
955d25e1e0SPeter Maydell    timeout = 360
96b247dba0SAlex Bennée
97e5f15001SNicholas Piggin    @skipUnless(os.getenv('SPEED') == 'slow', 'runtime limited')
98bbbd9b6eSWillian Rampazzo    def test_pseries_tcg(self):
99bbbd9b6eSWillian Rampazzo        """
100bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:pseries
101bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:tcg
102bbbd9b6eSWillian Rampazzo        """
103bbbd9b6eSWillian Rampazzo        self.require_accelerator("tcg")
104bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "tcg")
105bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
106bbbd9b6eSWillian Rampazzo
1079bf94793SNicholas Piggin    def test_pseries_kvm(self):
1089bf94793SNicholas Piggin        """
1099bf94793SNicholas Piggin        :avocado: tags=machine:pseries
1109bf94793SNicholas Piggin        :avocado: tags=accel:kvm
1119bf94793SNicholas Piggin        """
1129bf94793SNicholas Piggin        self.require_accelerator("kvm")
1139bf94793SNicholas Piggin        self.vm.add_args("-accel", "kvm")
1149bf94793SNicholas Piggin        self.vm.add_args("-machine", "cap-ccf-assist=off")
1159bf94793SNicholas Piggin        self.launch_and_wait(set_up_ssh_connection=False)
116bbbd9b6eSWillian Rampazzo
117bbbd9b6eSWillian Rampazzoclass BootLinuxS390X(LinuxTest):
118bbbd9b6eSWillian Rampazzo    """
119bbbd9b6eSWillian Rampazzo    :avocado: tags=arch:s390x
120bbbd9b6eSWillian Rampazzo    """
121bbbd9b6eSWillian Rampazzo
12206a4c9cfSAlex Bennée    timeout = 240
12306a4c9cfSAlex Bennée
124e5f15001SNicholas Piggin    @skipUnless(os.getenv('SPEED') == 'slow', 'runtime limited')
125bbbd9b6eSWillian Rampazzo    def test_s390_ccw_virtio_tcg(self):
126bbbd9b6eSWillian Rampazzo        """
127bbbd9b6eSWillian Rampazzo        :avocado: tags=machine:s390-ccw-virtio
128bbbd9b6eSWillian Rampazzo        :avocado: tags=accel:tcg
129bbbd9b6eSWillian Rampazzo        """
130bbbd9b6eSWillian Rampazzo        self.require_accelerator("tcg")
131bbbd9b6eSWillian Rampazzo        self.vm.add_args("-accel", "tcg")
132bbbd9b6eSWillian Rampazzo        self.launch_and_wait(set_up_ssh_connection=False)
133