[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