From 8866594c252501cb8dabc220b2eaf4e020c12d21 Mon Sep 17 00:00:00 2001 From: nanli Date: Thu, 19 Dec 2024 16:08:56 +0800 Subject: [PATCH] add case for virt-xml-validate for virsh domcap xxxx-17141:validate libvirt XML files against a virsh domcap schema Signed-off-by: nanli --- .../tests/cfg/virt_cmd/virt_xml_validate.cfg | 3 +++ libvirt/tests/src/virt_cmd/virt_xml_validate.py | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libvirt/tests/cfg/virt_cmd/virt_xml_validate.cfg b/libvirt/tests/cfg/virt_cmd/virt_xml_validate.cfg index 45a5228c81..491960ddc9 100644 --- a/libvirt/tests/cfg/virt_cmd/virt_xml_validate.cfg +++ b/libvirt/tests/cfg/virt_cmd/virt_xml_validate.cfg @@ -28,3 +28,6 @@ secret_volume = "/var/lib/libvirt/images/virt_xml_validate.secret" - interface: schema = "interface" + - domcapabilities: + func_supported_since_libvirt_ver = (10, 10, 0) + schema = "domcapabilities" diff --git a/libvirt/tests/src/virt_cmd/virt_xml_validate.py b/libvirt/tests/src/virt_cmd/virt_xml_validate.py index f05e14eaee..d46667b5f2 100644 --- a/libvirt/tests/src/virt_cmd/virt_xml_validate.py +++ b/libvirt/tests/src/virt_cmd/virt_xml_validate.py @@ -8,6 +8,7 @@ from virttest import virsh from virttest import data_dir +from virttest import libvirt_version from virttest.utils_libvirt import libvirt_secret from virttest.utils_test import libvirt @@ -183,6 +184,16 @@ def interface_validate(test, file=None, **virsh_dargs): test.error(str(e)) +def domcap_validate(file=None, **virsh_dargs): + """ + Prepare schema domcapabilities. + :param file: domcapabilities output file + :param virsh_dargs: virsh debug args. + """ + cmd_result = virsh.domcapabilities(options="> %s" % file, **virsh_dargs) + libvirt.check_exit_status(cmd_result) + + def run(test, params, env): """ Test for virt-xml-validate @@ -203,7 +214,7 @@ def run(test, params, env): valid_schemas = ['domain', 'domainsnapshot', 'network', 'storagepool', 'storagevol', 'nodedev', 'capability', - 'nwfilter', 'secret', 'interface'] + 'nwfilter', 'secret', 'interface', 'domcapabilities'] if schema not in valid_schemas: test.fail("invalid %s specified" % schema) @@ -230,6 +241,10 @@ def run(test, params, env): secret_validate(test, secret_volume, file=output_path, **virsh_dargs) elif schema == "interface": interface_validate(test, file=output_path, **virsh_dargs) + elif schema == "domcapabilities": + libvirt_version.is_libvirt_feature_supported(params) + domcap_validate(file=output_path, **virsh_dargs) + schema = "" else: # domain virsh.dumpxml(vm_name, to_file=output_path)