[libvirt PATCH 7/7] tests: libxl: do not run the emulator

Jim Fehlig jfehlig at suse.com
Mon Feb 24 23:41:28 UTC 2020


On 2/22/20 7:25 AM, Ján Tomko wrote:
> Ever since commit c5a00350 the libxl parser invokes the emulator
> to probe which device model to use.
> 
> Commit b90c4b5 introduced a workaround that used a stable path
> which was very likely to result in the answer matching the default.
> However the test is still affected by the host state and the binary
> gets invoked if present.
> 
> Mock the libxlDomainGetEmulatorType function to stop wasting CPU
> cycles every time a 'make check' is run on a system with xen installed.
> 
> For example xlconfigtest gets faster by 90 %
> 
> Signed-off-by: Ján Tomko <jtomko at redhat.com>
> Fixes: b90c4b5f505698d600303c5b4f03f5d229b329dd
> ---
>   src/libxl/libxl_capabilities.h | 3 ++-
>   tests/libxlmock.c              | 7 +++++++
>   2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libxl/libxl_capabilities.h b/src/libxl/libxl_capabilities.h
> index 9a7c8bf636..9efb836429 100644
> --- a/src/libxl/libxl_capabilities.h
> +++ b/src/libxl/libxl_capabilities.h
> @@ -50,4 +50,5 @@ libxlMakeDomainCapabilities(virDomainCapsPtr domCaps,
>                               size_t nfirmwares);
>   
>   int
> -libxlDomainGetEmulatorType(const virDomainDef *def);
> +libxlDomainGetEmulatorType(const virDomainDef *def)
> +    G_GNUC_NO_INLINE;

Ah, I think the lack of this change caused me grief in the past while fiddling 
with the mocking.

Regards,
Jim

> diff --git a/tests/libxlmock.c b/tests/libxlmock.c
> index 60e6b78129..a36ca135f6 100644
> --- a/tests/libxlmock.c
> +++ b/tests/libxlmock.c
> @@ -30,6 +30,7 @@
>   
>   # include "virfile.h"
>   # include "virsocket.h"
> +# include "libxl/libxl_capabilities.h"
>   
>   VIR_MOCK_IMPL_RET_VOID(xs_daemon_open,
>                          struct xs_handle *)
> @@ -123,4 +124,10 @@ VIR_MOCK_IMPL_RET_ARGS(stat, int,
>       return real_stat(path, sb);
>   }
>   
> +int
> +libxlDomainGetEmulatorType(const virDomainDef *def G_GNUC_UNUSED)
> +{
> +    return LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN;
> +}
> +
>   #endif /* WITH_LIBXL && WITH_YAJL */
> 





More information about the libvir-list mailing list