[PATCH v1 7/7] tests/functional/s390x: Add tests for virtio net PCI in test_pxelinux.py
Zhuoying Cai <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
Add test coverage for virtio-net-pci network booting on s390x by extending the pxelinux functional tests. This patch adds PCI variants of all existing pxelinux tests to verify that virtio-net-pci devices work correctly for network booting. Signed-off-by: Zhuoying Cai <[email protected]> --- tests/functional/s390x/test_pxelinux.py | 71 ++++++++++++++++++++----- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/tests/functional/s390x/test_pxelinux.py b/tests/functional/s390x/test_pxelinux.py index c00cce6a5a..7223364852 100755 --- a/tests/functional/s390x/test_pxelinux.py +++ b/tests/functional/s390x/test_pxelinux.py @@ -50,7 +50,8 @@ class S390PxeLinux(QemuSystemTest): '/images/kernel.img'), '480859574f3f44caa6cd35c62d70e1ac0609134e22ce2a954bbed9b110c06e0b') - def pxelinux_launch(self, pl_name='default', extra_opts=None): + def pxelinux_launch(self, pl_name='default', extra_opts=None, + dev='virtio-net-ccw'): '''Create a pxelinux.cfg file in the right location and launch QEMU''' self.require_netdev('user') self.set_machine('s390-ccw-virtio') @@ -74,7 +75,7 @@ def pxelinux_launch(self, pl_name='default', extra_opts=None): with open(cfg_fname, 'w', encoding='utf-8') as f: f.write(PXELINUX_CFG_CONTENTS) - virtio_net_dev = 'virtio-net-ccw,netdev=n1,bootindex=1' + virtio_net_dev = f'{dev},netdev=n1,bootindex=1' if extra_opts: virtio_net_dev += ',' + extra_opts @@ -85,9 +86,9 @@ def pxelinux_launch(self, pl_name='default', extra_opts=None): self.vm.launch() - def test_default(self): + def do_test_default(self, dev): '''Check whether the guest uses the "default" file name''' - self.pxelinux_launch() + self.pxelinux_launch(dev=dev) # The kernel prints its arguments to the console, so we can use # this to check whether the kernel parameters are correctly handled: wait_for_console_pattern(self, 'testoption=teststring') @@ -95,36 +96,82 @@ def test_default(self): wait_for_console_pattern(self, 'Unpacking initramfs...') wait_for_console_pattern(self, 'Run /init as init process') - def test_mac(self): + def do_test_mac(self, dev): '''Check whether the guest uses file name based on its MAC address''' self.pxelinux_launch(pl_name='01-02-ca-fe-ba-be-42', - extra_opts='mac=02:ca:fe:ba:be:42,loadparm=3') + extra_opts='mac=02:ca:fe:ba:be:42,loadparm=3', + dev=dev) wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x') - def test_uuid(self): + def do_test_uuid(self, dev): '''Check whether the guest uses file name based on its UUID''' # Also add a non-bootable disk to check the fallback to network boot: self.vm.add_args('-blockdev', 'null-co,size=65536,node-name=d1', '-device', 'virtio-blk,drive=d1,bootindex=0,loadparm=1', '-uuid', '550e8400-e29b-11d4-a716-446655441234') - self.pxelinux_launch(pl_name='550e8400-e29b-11d4-a716-446655441234') + self.pxelinux_launch(pl_name='550e8400-e29b-11d4-a716-446655441234', + dev=dev) wait_for_console_pattern(self, 'Debian 4.19.146-1 (2020-09-17)') - def test_ip(self): + def do_test_ip(self, dev): '''Check whether the guest uses file name based on its IP address''' self.vm.add_args('-M', 'loadparm=3') - self.pxelinux_launch(pl_name='0A00020F') + self.pxelinux_launch(pl_name='0A00020F', dev=dev) wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x') - def test_menu(self): + def do_test_menu(self, dev): '''Check whether the boot menu works for pxelinux.cfg booting''' self.vm.add_args('-boot', 'menu=on,splash-time=10') - self.pxelinux_launch(pl_name='0A00') + self.pxelinux_launch(pl_name='0A00', dev=dev) wait_for_console_pattern(self, '[1] Nonexisting') wait_for_console_pattern(self, '[2] Debian') wait_for_console_pattern(self, '[3] Fedora') wait_for_console_pattern(self, 'Debian 4.19.146-1 (2020-09-17)') + def test_default(self): + '''pxelinux.cfg "default" lookup via virtio-net-ccw''' + self.do_test_default('virtio-net-ccw') + + def test_default_pci(self): + '''pxelinux.cfg "default" lookup via virtio-net-pci''' + self.require_device('virtio-net-pci') + self.do_test_default('virtio-net-pci') + + def test_mac(self): + '''pxelinux.cfg MAC-address-based file lookup via virtio-net-ccw''' + self.do_test_mac('virtio-net-ccw') + + def test_mac_pci(self): + '''pxelinux.cfg MAC-address-based file lookup via virtio-net-pci''' + self.require_device('virtio-net-pci') + self.do_test_mac('virtio-net-pci') + + def test_uuid(self): + '''pxelinux.cfg UUID-based file lookup via virtio-net-ccw''' + self.do_test_uuid('virtio-net-ccw') + + def test_uuid_pci(self): + '''pxelinux.cfg UUID-based file lookup via virtio-net-pci''' + self.require_device('virtio-net-pci') + self.do_test_uuid('virtio-net-pci') + + def test_ip(self): + '''pxelinux.cfg IP-address-based file lookup via virtio-net-ccw''' + self.do_test_ip('virtio-net-ccw') + + def test_ip_pci(self): + '''pxelinux.cfg IP-address-based file lookup via virtio-net-pci''' + self.require_device('virtio-net-pci') + self.do_test_ip('virtio-net-pci') + + def test_menu(self): + '''pxelinux.cfg interactive boot menu via virtio-net-ccw''' + self.do_test_menu('virtio-net-ccw') + + def test_menu_pci(self): + '''pxelinux.cfg interactive boot menu via virtio-net-pci''' + self.require_device('virtio-net-pci') + self.do_test_menu('virtio-net-pci') if __name__ == '__main__': QemuSystemTest.main() -- 2.55.0