Add a test for transaction support of blockdev-add. Test is format-agnostic, so limit it to qcow2 to avoid extra test runs.
Signed-off-by: Vladimir Sementsov-Ogievskiy <v.sementsov...@mail.ru> --- .../tests/blockdev-add-transaction | 52 +++++++++++++++++++ .../tests/blockdev-add-transaction.out | 6 +++ 2 files changed, 58 insertions(+) create mode 100755 tests/qemu-iotests/tests/blockdev-add-transaction create mode 100644 tests/qemu-iotests/tests/blockdev-add-transaction.out diff --git a/tests/qemu-iotests/tests/blockdev-add-transaction b/tests/qemu-iotests/tests/blockdev-add-transaction new file mode 100755 index 0000000000..ce3c1c069b --- /dev/null +++ b/tests/qemu-iotests/tests/blockdev-add-transaction @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +# +# Test blockdev-add transaction action +# +# Copyright (c) 2022 Virtuozzo International GmbH. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +import iotests +from iotests import log + +iotests.script_initialize(supported_fmts=['qcow2']) + +with iotests.VM() as vm: + vm.launch() + + # Use same node-name for nodes, neither one should appear. + vm.qmp_log('transaction', actions=[ + {'type': 'blockdev-add', + 'data': {'node-name': 'node0', 'driver': 'null-co', + 'size': 1024 * 1024}}, + {'type': 'blockdev-add', + 'data': {'node-name': 'node0', 'driver': 'null-co', + 'size': 1024 * 1024}} + ]) + + n = len(vm.qmp('query-named-block-nodes')['return']) + log(f'Created {n} nodes') + + vm.qmp_log('transaction', actions=[ + {'type': 'blockdev-add', + 'data': {'node-name': 'node0', 'driver': 'null-co', + 'size': 1024 * 1024}}, + {'type': 'blockdev-add', + 'data': {'node-name': 'node1', 'driver': 'null-co', + 'size': 1024 * 1024}} + ]) + + n = len(vm.qmp('query-named-block-nodes')['return']) + log(f'Created {n} nodes') diff --git a/tests/qemu-iotests/tests/blockdev-add-transaction.out b/tests/qemu-iotests/tests/blockdev-add-transaction.out new file mode 100644 index 0000000000..7e6cd5a9a3 --- /dev/null +++ b/tests/qemu-iotests/tests/blockdev-add-transaction.out @@ -0,0 +1,6 @@ +{"execute": "transaction", "arguments": {"actions": [{"data": {"driver": "null-co", "node-name": "node0", "size": 1048576}, "type": "blockdev-add"}, {"data": {"driver": "null-co", "node-name": "node0", "size": 1048576}, "type": "blockdev-add"}]}} +{"error": {"class": "GenericError", "desc": "Duplicate nodes with node-name='node0'"}} +Created 0 nodes +{"execute": "transaction", "arguments": {"actions": [{"data": {"driver": "null-co", "node-name": "node0", "size": 1048576}, "type": "blockdev-add"}, {"data": {"driver": "null-co", "node-name": "node1", "size": 1048576}, "type": "blockdev-add"}]}} +{"return": {}} +Created 2 nodes -- 2.35.1