[libvirt] [PATCH 1/1] qemuxml2xmltest.c: mock /etc/qemu/firmware path
Cole Robinson
crobinso at redhat.com
Mon Aug 19 21:49:11 UTC 2019
On 8/12/19 11:06 AM, Daniel Henrique Barboza wrote:
> Since commit 'b66ca0220a' the 'tpm-emulator' tests in qemuxml2xmltest
> started to fail unless 'make check' is either executed as root
> or with an user with access to /etc/qemu/firmware file. This is the
> error that happens in a regular 'make check' run with an unprivileged
> user:
>
> ------
>
> 546) QEMU XML-2-XML-inactive tpm-emulator ...
> 1315 In '/home/danielhb/kvm-project/libvirt/tests/qemuxml2xmloutdata/tpm-emulator.xml':
> 1316 Offset 909
> 1317 Expect [1.2]
> 1318 Actual [default]
> 1319 ... Expected result code=0 but received code=4libvirt: error : cannot open directory '/home/danielhb/kvm-pr oject/libvirt/usr/etc/qemu/firmware': Permission denied
> 1320 FAILED
> 1321 547) QEMU XML-2-XML-active tpm-emulator ...
> 1322 In '/home/danielhb/kvm-project/libvirt/tests/qemuxml2xmloutdata/tpm-emulator.xml':
> 1323 Offset 909
> 1324 Expect [1.2]
> 1325 Actual [default]
> 1326 ... Expected result code=0 but received code=4libvirt: error : cannot open directory '/home/danielhb/kvm-pr oject/libvirt/usr/etc/qemu/firmware': Permission denied
> 1327 FAILED
>
> ------
>
> The reason is that commit b66ca0220a changed the domain validation to
> fetch the capabilities in qemuDomainDeviceDefValidate time, directly
> impacting existing tpm-emulator tests in qemuxml2xmltest.c that
> that since then will attempt to read the /etc/qemu/firmware file
> that wasn't being mocked.
>
> This patch fixes it by adding the mock paths for /etc/qemu/firmware
> in qemuxml2xmltest.c as well, using the virFileWrapper API like it
> is done in commit 5b9819eedc71.
>
Sorry about that. But I can't reproduce and I can't really tell what the
issue is, I tried reproducing the permission issue but nothing failed
for me in qemuxml2xml. The error report above seems like the test suite
$srcdir/usr/etc/qemu/firmware which looks strange anyways, do you have
--prefix set to $srcdir? Are you still seeing this with libvirt.git?
Thanks,
Cole
> Fixes: b66ca0220a ("qemu: domain: Call virDomainCapsDeviceDefValidate")
> Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> ---
> tests/Makefile.am | 3 ++-
> tests/qemuxml2xmltest.c | 13 +++++++++++++
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 1c92e3ca6f..31a22ebefd 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -573,7 +573,8 @@ qemuxml2argvmock_la_LIBADD = $(MOCKLIBS_LIBS)
>
> qemuxml2xmltest_SOURCES = \
> qemuxml2xmltest.c testutilsqemu.c testutilsqemu.h \
> - testutils.c testutils.h
> + testutils.c testutils.h \
> + virfilewrapper.c virfilewrapper.h
> qemuxml2xmltest_LDADD = $(qemu_LDADDS)
>
> qemumonitorjsontest_SOURCES = \
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index 525eb9a740..51be6e0263 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -14,6 +14,9 @@
> # include "qemu/qemu_domain.h"
> # include "testutilsqemu.h"
> # include "virstring.h"
> +# include "virfilewrapper.h"
> +# include "testutils.h"
> +# include "configmake.h"
>
> # define VIR_FROM_THIS VIR_FROM_NONE
>
> @@ -167,6 +170,15 @@ mymain(void)
>
> setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);
>
> + /* Required for tpm-emulator tests
> + */
> + virFileWrapperAddPrefix(SYSCONFDIR "/qemu/firmware",
> + abs_srcdir "/qemufirmwaredata/etc/qemu/firmware");
> + virFileWrapperAddPrefix(PREFIX "/share/qemu/firmware",
> + abs_srcdir "/qemufirmwaredata/usr/share/qemu/firmware");
> + virFileWrapperAddPrefix("/home/user/.config/qemu/firmware",
> + abs_srcdir "/qemufirmwaredata/home/user/.config/qemu/firmware");
> +
> if (qemuTestDriverInit(&driver) < 0)
> return EXIT_FAILURE;
>
> @@ -1325,6 +1337,7 @@ mymain(void)
> virHashFree(capslatest);
> qemuTestDriverFree(&driver);
> VIR_FREE(fakerootdir);
> + virFileWrapperClearPrefixes();
>
> return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
> }
>
- Cole
More information about the libvir-list
mailing list