From: Huaqiang <huaqiang.wang@xxxxxxxxx> Originally, inside <cputune/cachetune>, it requires the <cache> element to be in the position before <monitor>, and following configuration is not permitted by schema, but it is better to let it be valid. <cputune> <cachetune vcpus='0-1'> <monitor level='3' vcpus='0-1'/> ^ |__ Not permitted originally because it is in the place before <cache> element. <cache id='0' level='3' type='both' size='3' unit='MiB'/> <cache id='1' level='3' type='both' size='3' unit='MiB'/> </cachetune> ... </cputune> And, let schema do more strict check by identifying following configuration to be invalid, due to <cachetune> should contain at least one <cache> or <monitor> element. <cputune> <cachetune vcpus='0-1'> ^ |__ a <cachetune> SHOULD contain at least one <cache> or <monitor> </cachetune> ... </cputune> Signed-off-by: Huaqiang <huaqiang.wang@xxxxxxxxx> --- docs/schemas/domaincommon.rng | 68 +++++++++++------------ tests/genericxml2xmlindata/cachetune.xml | 1 + tests/genericxml2xmloutdata/cachetune.xml | 34 ++++++++++++ tests/genericxml2xmltest.c | 2 +- 4 files changed, 70 insertions(+), 35 deletions(-) create mode 100644 tests/genericxml2xmloutdata/cachetune.xml diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index e06f892da3..aa4f512e5c 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -980,41 +980,41 @@ <attribute name="vcpus"> <ref name='cpuset'/> </attribute> - <zeroOrMore> - <element name="cache"> - <attribute name="id"> - <ref name='unsignedInt'/> - </attribute> - <attribute name="level"> - <ref name='unsignedInt'/> - </attribute> - <attribute name="type"> - <choice> - <value>both</value> - <value>code</value> - <value>data</value> - </choice> - </attribute> - <attribute name="size"> - <ref name='unsignedLong'/> - </attribute> - <optional> - <attribute name='unit'> - <ref name='unit'/> + <oneOrMore> + <choice> + <element name="cache"> + <attribute name="id"> + <ref name='unsignedInt'/> </attribute> - </optional> - </element> - </zeroOrMore> - <zeroOrMore> - <element name="monitor"> - <attribute name="level"> - <ref name='unsignedInt'/> - </attribute> - <attribute name="vcpus"> - <ref name='cpuset'/> - </attribute> - </element> - </zeroOrMore> + <attribute name="level"> + <ref name='unsignedInt'/> + </attribute> + <attribute name="type"> + <choice> + <value>both</value> + <value>code</value> + <value>data</value> + </choice> + </attribute> + <attribute name="size"> + <ref name='unsignedLong'/> + </attribute> + <optional> + <attribute name='unit'> + <ref name='unit'/> + </attribute> + </optional> + </element> + <element name="monitor"> + <attribute name="level"> + <ref name='unsignedInt'/> + </attribute> + <attribute name="vcpus"> + <ref name='cpuset'/> + </attribute> + </element> + </choice> + </oneOrMore> </element> </zeroOrMore> <zeroOrMore> diff --git a/tests/genericxml2xmlindata/cachetune.xml b/tests/genericxml2xmlindata/cachetune.xml index 645cab7771..eda2ca6fb6 100644 --- a/tests/genericxml2xmlindata/cachetune.xml +++ b/tests/genericxml2xmlindata/cachetune.xml @@ -6,6 +6,7 @@ <vcpu placement='static'>4</vcpu> <cputune> <cachetune vcpus='0-1'> + <monitor level='3' vcpus='0-1'/> <cache id='0' level='3' type='both' size='3' unit='MiB'/> <cache id='1' level='3' type='both' size='3' unit='MiB'/> </cachetune> diff --git a/tests/genericxml2xmloutdata/cachetune.xml b/tests/genericxml2xmloutdata/cachetune.xml new file mode 100644 index 0000000000..dcde0ebc2a --- /dev/null +++ b/tests/genericxml2xmloutdata/cachetune.xml @@ -0,0 +1,34 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>4</vcpu> + <cputune> + <cachetune vcpus='0-1'> + <cache id='0' level='3' type='both' size='3' unit='MiB'/> + <cache id='1' level='3' type='both' size='3' unit='MiB'/> + <monitor level='3' vcpus='0-1'/> + </cachetune> + <cachetune vcpus='3'> + <cache id='0' level='3' type='both' size='3' unit='MiB'/> + </cachetune> + </cputune> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <controller type='usb' index='0'/> + <controller type='ide' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index 0d04413712..62005a5393 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -125,9 +125,9 @@ mymain(void) DO_TEST_FULL("chardev-reconnect-invalid-mode", 0, false, TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); - DO_TEST("cachetune"); DO_TEST("cachetune-small"); DO_TEST("cachetune-cdp"); + DO_TEST_DIFFERENT("cachetune"); DO_TEST_DIFFERENT("cachetune-extra-tunes"); DO_TEST_FULL("cachetune-colliding-allocs", false, true, TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); -- 2.23.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list