On Mon, Aug 19, 2024 at 12:00:56 +0200, Anthony Harivel wrote:
> Hi,
>
> I'm trying to implement the libvirt part of a new feature that has
> landed in QEMU staging [1].
> The current draft of this implementations is the following [2].
> It compiles on top of master.
> But when I want to run the tests suites, I hit an issue I don't managed
> to find the problem.
>
> It runs until:
> [...]
> 278/279 libvirt:bin / qemuxmlconftest FAIL 8.63s exit status 1
> [...]
>
> then it tells me to run the following to understand the issue:
> VIR_TEST_DEBUG=1 VIR_TEST_RANGE=850-851,854-855
> /home/aharivel/work/libvirt/build/tests/qemuxmlconftest
>
> It outputs this:
> [...]
> 850) QEMU XML def -> XML kvm-features.x86_64-latest ...
> In
> '/home/aharivel/work/libvirt/tests/qemuxmlconfdata/kvm-features.x86_64-latest.xml':
> Offset 533
> Expect [ socket='/run/qemu-vmsr-helper.sock'/]
> Actual [/]
These test cases parse an XML and format it back.
You've got a bug in the code formatting the socket into the XML:
if (def->kvm_features->socket == NULL) {
virBufferAsprintf(&childBuf, " socket='%s'/>\n",
def->kvm_features->socket);
} else {
virBufferAddLit(&childBuf, "/>\n");
}
The above hunk formats the socket only if it's NULL, and skips it if
it's non-null (inverted condition).
> 851) QEMU XML OUT -> XML kvm-features.x86_64-latest ...
> In
> '/home/aharivel/work/libvirt/tests/qemuxmlconfdata/kvm-features.x86_64-latest.xml':
> Offset 533
> Expect [ socket='/run/qemu-vmsr-helper.sock'/]
> Actual [/]
So it's missing in the output file when you provide it in the input
file.
> ...
> FAILED
> 854) QEMU XML def -> XML kvm-features-off.x86_64-latest ...
> In
> '/home/aharivel/work/libvirt/tests/qemuxmlconfdata/kvm-features-off.x86_64-latest.xml':
> Offset 527
> Expect [/]
> Actual [ socket='(null)'/]
And formats it when it's NULL.
> ...
> FAILED
> 855) QEMU XML OUT -> XML kvm-features-off.x86_64-latest ...
> In
> '/home/aharivel/work/libvirt/tests/qemuxmlconfdata/kvm-features-off.x86_64-latest.xml':
> Offset 527
> Expect [/]
> Actual [ socket='(null)'/]
> [...]
> ... FAILED