From: Ján Tomko <jto...@redhat.com> Introduce testing of the generated command line arguments of helper binaries too, not just QEMU.
Start with passt. Signed-off-by: Ján Tomko <jto...@redhat.com> --- .../net-user-passt.x86_64-7.2.0.passt0.args | 13 ++++ .../net-user-passt.x86_64-latest.passt0.args | 13 ++++ ...-vhostuser-passt.x86_64-latest.passt0.args | 14 ++++ ...-vhostuser-passt.x86_64-latest.passt1.args | 5 ++ ...-vhostuser-passt.x86_64-latest.passt2.args | 6 ++ ...main-subelements.x86_64-latest.passt0.args | 7 ++ tests/qemuxmlconftest.c | 70 +++++++++++++++++++ 7 files changed, 128 insertions(+) create mode 100644 tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args create mode 100644 tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt0.args create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt1.args create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt2.args create mode 100644 tests/qemuxmlconfdata/schema-reorder-domain-subelements.x86_64-latest.passt0.args diff --git a/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args b/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args new file mode 100644 index 0000000000..b244eb711d --- /dev/null +++ b/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args @@ -0,0 +1,13 @@ +passt \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0.socket \ +--pid /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0-passt.pid \ +--interface eth42 \ +--log-file /var/log/loglaw.blog \ +--address 172.17.2.0 \ +--netmask 24 \ +--address 2001:db8:ac10:fd01::feed \ +--tcp-ports '2001:db8:ac10:fd01::1:10/22:2022,1000-1050,~1020,~1030-1040' \ +--udp-ports '1.2.3.4%eth0/5000-5020:6000-6020,~5010-5015' \ +--tcp-ports 80 \ +--tcp-ports 443:344 diff --git a/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args b/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args new file mode 100644 index 0000000000..b244eb711d --- /dev/null +++ b/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args @@ -0,0 +1,13 @@ +passt \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0.socket \ +--pid /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0-passt.pid \ +--interface eth42 \ +--log-file /var/log/loglaw.blog \ +--address 172.17.2.0 \ +--netmask 24 \ +--address 2001:db8:ac10:fd01::feed \ +--tcp-ports '2001:db8:ac10:fd01::1:10/22:2022,1000-1050,~1020,~1030-1040' \ +--udp-ports '1.2.3.4%eth0/5000-5020:6000-6020,~5010-5015' \ +--tcp-ports 80 \ +--tcp-ports 443:344 diff --git a/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt0.args b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt0.args new file mode 100644 index 0000000000..f75fc0749a --- /dev/null +++ b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt0.args @@ -0,0 +1,14 @@ +passt \ +--vhost-user \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0.socket \ +--pid /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net0-passt.pid \ +--interface eth42 \ +--log-file /var/log/loglaw.blog \ +--address 172.17.2.0 \ +--netmask 24 \ +--address 2001:db8:ac10:fd01::feed \ +--tcp-ports '2001:db8:ac10:fd01::1:10/22:2022,1000-1050,~1020,~1030-1040' \ +--udp-ports '1.2.3.4%eth0/5000-5020:6000-6020,~5010-5015' \ +--tcp-ports 80 \ +--tcp-ports 443:344 diff --git a/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt1.args b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt1.args new file mode 100644 index 0000000000..4bebc2bcb1 --- /dev/null +++ b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt1.args @@ -0,0 +1,5 @@ +passt \ +--vhost-user \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net1.socket \ +--pid /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net1-passt.pid diff --git a/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt2.args b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt2.args new file mode 100644 index 0000000000..35cd30a553 --- /dev/null +++ b/tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt2.args @@ -0,0 +1,6 @@ +passt \ +--vhost-user \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net2.socket \ +--pid /var/run/libvirt/qemu/passt/-1-QEMUGuest1-net2-passt.pid \ +--interface eth43 diff --git a/tests/qemuxmlconfdata/schema-reorder-domain-subelements.x86_64-latest.passt0.args b/tests/qemuxmlconfdata/schema-reorder-domain-subelements.x86_64-latest.passt0.args new file mode 100644 index 0000000000..59574106e1 --- /dev/null +++ b/tests/qemuxmlconfdata/schema-reorder-domain-subelements.x86_64-latest.passt0.args @@ -0,0 +1,7 @@ +passt \ +--vhost-user \ +--one-off \ +--socket /var/run/libvirt/qemu/passt/-1-passtvhostuu-net0.socket \ +--pid /var/run/libvirt/qemu/passt/-1-passtvhostuu-net0-passt.pid \ +--address 10.30.0.5 \ +--netmask 24 diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index dea75d805f..7280176de1 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -16,6 +16,7 @@ # include "qemu/qemu_capabilities.h" # include "qemu/qemu_domain.h" # include "qemu/qemu_migration.h" +# include "qemu/qemu_passt.h" # include "qemu/qemu_process.h" # include "qemu/qemu_slirp.h" # include "datatypes.h" @@ -803,6 +804,72 @@ testCompareOutXML2XML(const void *data) } +static int +testExtDeviceArgv(testQemuInfo *info, + virCommand *cmd, + const char *helper, + size_t idx) +{ + g_auto(virBuffer) actualBuf = VIR_BUFFER_INITIALIZER; + g_autofree char *actualargv = NULL; + g_autofree char *outfile = NULL; + virError *err = NULL; + + outfile = g_strdup_printf("%s/qemuxmlconfdata/%s%s%s.%s%zu.args", + abs_srcdir, info->name, info->suffix, + info->args.capsvariant, helper, idx); + testQemuConfMarkUsed(info, outfile); + + if (!cmd) { + err = virGetLastError(); + if (!err) { + VIR_TEST_DEBUG("no error was reported for expected failure"); + return -1; + } + return -1; + } + + if (virCommandToStringBuf(cmd, &actualBuf, true, false) < 0) + return -1; + + virBufferAddLit(&actualBuf, "\n"); + actualargv = virBufferContentAndReset(&actualBuf); + + if (virTestCompareToFileFull(actualargv, outfile, false) < 0) + return -1; + + return 0; +} + + +static int +testExtDevicesArgv(testQemuInfo *info, + virDomainObj *vm) +{ + size_t i = 42; + int ret = 0; + + for (i = 0; i < vm->def->nnets; i++) { + virDomainNetDef *net = vm->def->nets[i]; + + if (net->type != VIR_DOMAIN_NET_TYPE_USER && + net->type != VIR_DOMAIN_NET_TYPE_VHOSTUSER) { + continue; + } + + if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) { + g_autoptr(virCommand) cmd = NULL; + + cmd = qemuPasstBuildCommand(NULL, NULL, vm, net); + if (testExtDeviceArgv(info, cmd, "passt", i) < 0) + ret = -1; + } + } + + return ret; +} + + static int testCompareXMLToArgv(const void *data) { @@ -897,6 +964,9 @@ testCompareXMLToArgv(const void *data) if (virTestCompareToFileFull(actualargv, info->outfile, false) < 0) goto cleanup; + if (testExtDevicesArgv(info, vm) < 0) + goto cleanup; + ret = 0; ok: -- 2.50.1