Re: [PATCH] tests/avocado: add hotplug_blk test
On 09/04/2024 08.58, Vladimir Sementsov-Ogievskiy wrote: Introduce a test, that checks that plug/unplug of virtio-blk device works. (the test is developed by copying hotplug_cpu.py, so keep original copyright) Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/avocado/hotplug_blk.py | 69 1 file changed, 69 insertions(+) create mode 100644 tests/avocado/hotplug_blk.py diff --git a/tests/avocado/hotplug_blk.py b/tests/avocado/hotplug_blk.py new file mode 100644 index 00..5dc30f6616 --- /dev/null +++ b/tests/avocado/hotplug_blk.py @@ -0,0 +1,69 @@ +# Functional test that hotplugs a virtio blk disk and checks it on a Linux +# guest +# +# Copyright (c) 2021 Red Hat, Inc. +# Copyright (c) Yandex +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + +import time + +from avocado_qemu import LinuxTest + + +class HotPlug(LinuxTest): +def blockdev_add(self) -> None: +self.vm.cmd('blockdev-add', **{ +'driver': 'null-co', +'size': 1073741824, +'node-name': 'disk' +}) + +def assert_vda(self) -> None: +self.ssh_command('test -e /sys/block/vda') + +def assert_no_vda(self) -> None: +with self.assertRaises(AssertionError): +self.assert_vda() + +def plug(self) -> None: +args = { +'driver': 'virtio-blk-pci', +'drive': 'disk', +'id': 'virtio-disk0', +'bus': 'pci.1', +'addr': 1 +} + +self.assert_no_vda() +self.vm.cmd('device_add', args) +try: +self.assert_vda() +except AssertionError: +time.sleep(1) +self.assert_vda() + +def unplug(self) -> None: +self.vm.cmd('device_del', id='virtio-disk0') + +self.vm.event_wait('DEVICE_DELETED', 1.0, + match={'data': {'device': 'virtio-disk0'}}) + +self.assert_no_vda() + +def test(self) -> None: +""" +:avocado: tags=arch:x86_64 +:avocado: tags=machine:q35 +:avocado: tags=accel:kvm +""" +self.require_accelerator('kvm') +self.vm.add_args('-accel', 'kvm') +self.vm.add_args('-device', 'pcie-pci-bridge,id=pci.1,bus=pcie.0') + +self.launch_and_wait() +self.blockdev_add() + +self.plug() +self.unplug() Reviewed-by: Thomas Huth
Re: [PATCH] tests/avocado: add hotplug_blk test
ping2 On 09.04.24 09:58, Vladimir Sementsov-Ogievskiy wrote: Introduce a test, that checks that plug/unplug of virtio-blk device works. (the test is developed by copying hotplug_cpu.py, so keep original copyright) Signed-off-by: Vladimir Sementsov-Ogievskiy -- Best regards, Vladimir
Re: [PATCH] tests/avocado: add hotplug_blk test
ping!) -- Best regards, Vladimir
[PATCH] tests/avocado: add hotplug_blk test
Introduce a test, that checks that plug/unplug of virtio-blk device works. (the test is developed by copying hotplug_cpu.py, so keep original copyright) Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/avocado/hotplug_blk.py | 69 1 file changed, 69 insertions(+) create mode 100644 tests/avocado/hotplug_blk.py diff --git a/tests/avocado/hotplug_blk.py b/tests/avocado/hotplug_blk.py new file mode 100644 index 00..5dc30f6616 --- /dev/null +++ b/tests/avocado/hotplug_blk.py @@ -0,0 +1,69 @@ +# Functional test that hotplugs a virtio blk disk and checks it on a Linux +# guest +# +# Copyright (c) 2021 Red Hat, Inc. +# Copyright (c) Yandex +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + +import time + +from avocado_qemu import LinuxTest + + +class HotPlug(LinuxTest): +def blockdev_add(self) -> None: +self.vm.cmd('blockdev-add', **{ +'driver': 'null-co', +'size': 1073741824, +'node-name': 'disk' +}) + +def assert_vda(self) -> None: +self.ssh_command('test -e /sys/block/vda') + +def assert_no_vda(self) -> None: +with self.assertRaises(AssertionError): +self.assert_vda() + +def plug(self) -> None: +args = { +'driver': 'virtio-blk-pci', +'drive': 'disk', +'id': 'virtio-disk0', +'bus': 'pci.1', +'addr': 1 +} + +self.assert_no_vda() +self.vm.cmd('device_add', args) +try: +self.assert_vda() +except AssertionError: +time.sleep(1) +self.assert_vda() + +def unplug(self) -> None: +self.vm.cmd('device_del', id='virtio-disk0') + +self.vm.event_wait('DEVICE_DELETED', 1.0, + match={'data': {'device': 'virtio-disk0'}}) + +self.assert_no_vda() + +def test(self) -> None: +""" +:avocado: tags=arch:x86_64 +:avocado: tags=machine:q35 +:avocado: tags=accel:kvm +""" +self.require_accelerator('kvm') +self.vm.add_args('-accel', 'kvm') +self.vm.add_args('-device', 'pcie-pci-bridge,id=pci.1,bus=pcie.0') + +self.launch_and_wait() +self.blockdev_add() + +self.plug() +self.unplug() -- 2.34.1