libvirt/tests/schemas/cpu-baseline.rng.in
Peter Krempa 32d49d4b91 virschematest: Improve testing schemas in 'tests/cputestdata'
The 'cputestdata' directory has a collection of XML files with very
complicated naming schemes for various input and output XML files.

Rather than trying to write complex regexes for selecting specific files
which diverged already multiple times we can introduce an internal
schema file which will cover all of the 3 top level elements used in the
XML files.

Schema for <cpu> is taken from our main RNG schema, <cpuTest> is just a
collection of <cpu> elements, and finally <cpudata> is a simple enough
to describe inline.

To keep the validator happy we have to generate the schema file to
place full paths for the included documents.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2022-11-03 09:19:54 +01:00

85 lines
1.9 KiB
XML

<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<include href="@SCHEMADIR@/basictypes.rng"/>
<include href="@SCHEMADIR@/cputypes.rng"/>
<start>
<ref name="cputestdata"/>
</start>
<define name="cputestdata">
<choice>
<ref name="guestcpu"/>
<ref name="hostcpu"/>
<ref name="cputest"/>
<ref name="cpudata"/>
</choice>
</define>
<define name="cputest">
<element name="cpuTest">
<oneOrMore>
<choice>
<ref name="guestcpu"/>
<ref name="hostcpu"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="cpudata">
<element name="cpudata">
<attribute name="arch">
<choice>
<value>x86</value>
</choice>
</attribute>
<interleave>
<oneOrMore>
<ref name="cpudata_cpuid"/>
</oneOrMore>
<zeroOrMore>
<ref name="cpudata_msr"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="cpudata_cpuid">
<element name="cpuid">
<attribute name="eax_in">
<ref name="hexuint"/>
</attribute>
<attribute name="ecx_in">
<ref name="hexuint"/>
</attribute>
<attribute name="eax">
<ref name="hexuint"/>
</attribute>
<attribute name="ebx">
<ref name="hexuint"/>
</attribute>
<attribute name="ecx">
<ref name="hexuint"/>
</attribute>
<attribute name="edx">
<ref name="hexuint"/>
</attribute>
</element>
</define>
<define name="cpudata_msr">
<element name="msr">
<attribute name="index">
<ref name="hexuint"/>
</attribute>
<attribute name="eax">
<ref name="hexuint"/>
</attribute>
<attribute name="edx">
<ref name="hexuint"/>
</attribute>
</element>
</define>
</grammar>