[libvirt] [PATCH 14/23] cputest: Separate QEMUCaps creation from cpuTestCPUIDJson

John Ferlan jferlan at redhat.com
Thu Oct 12 21:20:06 UTC 2017



On 10/04/2017 10:58 AM, Jiri Denemark wrote:
> To make the code reusable by other tests.
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  tests/cputest.c | 97 +++++++++++++++++++++++++++++++++++----------------------
>  1 file changed, 60 insertions(+), 37 deletions(-)
> 
> diff --git a/tests/cputest.c b/tests/cputest.c
> index 0a07a2da14..b72c17a168 100644
> --- a/tests/cputest.c
> +++ b/tests/cputest.c
> @@ -460,6 +460,64 @@ cpuTestHasFeature(const void *arg)
>  }
>  
>  
> +typedef enum {
> +    JSON_NONE,
> +    JSON_HOST,
> +    JSON_MODELS,
> +} cpuTestCPUIDJson;
> +
> +#if WITH_QEMU && WITH_YAJL
> +static virQEMUCapsPtr
> +cpuTestMakeQEMUCaps(const struct data *data)
> +{
> +    virQEMUCapsPtr qemuCaps = NULL;
> +    qemuMonitorTestPtr testMon = NULL;
> +    qemuMonitorCPUModelInfoPtr model = NULL;
> +    char *json = NULL;
> +
> +    if (virAsprintf(&json, "%s/cputestdata/%s-cpuid-%s.json",
> +                    abs_srcdir, virArchToString(data->arch), data->host) < 0)
> +        goto error;

could be cleanup;

> +
> +    if (!(testMon = qemuMonitorTestNewFromFile(json, driver.xmlopt, true)))
> +        goto error;

same

> +
> +    if (qemuMonitorGetCPUModelExpansion(qemuMonitorTestGetMonitor(testMon),
> +                                        QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC,
> +                                        "host", true, &model) < 0)
> +        goto error;

same

> +
> +    if (!(qemuCaps = virQEMUCapsNew()))
> +        goto error;

same

> +
> +    virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM);
> +    if (data->flags == JSON_MODELS)
> +        virQEMUCapsSet(qemuCaps, QEMU_CAPS_QUERY_CPU_DEFINITIONS);
> +
> +    virQEMUCapsSetArch(qemuCaps, data->arch);
> +    virQEMUCapsSetCPUModelInfo(qemuCaps, VIR_DOMAIN_VIRT_KVM, model);
> +    model = NULL;
> +
> +    if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps,
> +                                          qemuMonitorTestGetMonitor(testMon),
> +                                          false) < 0)
> +        goto error;

Leaving only this one...

> +
> + cleanup:
> +    qemuMonitorCPUModelInfoFree(model);
> +    qemuMonitorTestFree(testMon);
> +    VIR_FREE(json);
> +
> +    return qemuCaps;
> +
> + error:
> +    virObjectUnref(qemuCaps);
> +    qemuCaps = NULL;
> +    goto cleanup;
> +}
> +#endif
> +
> +
>  static int
>  cpuTestCPUID(bool guest, const void *arg)
>  {
> @@ -670,52 +728,20 @@ cpuTestUpdateLive(const void *arg)
>  }
>  
>  
> -typedef enum {
> -    JSON_NONE,
> -    JSON_HOST,
> -    JSON_MODELS,
> -} cpuTestCPUIDJson;
> -
>  #if WITH_QEMU && WITH_YAJL
>  static int
>  cpuTestJSONCPUID(const void *arg)
>  {
>      const struct data *data = arg;
> -    qemuMonitorCPUModelInfoPtr model = NULL;
>      virQEMUCapsPtr qemuCaps = NULL;
>      virCPUDefPtr cpu = NULL;
> -    qemuMonitorTestPtr testMon = NULL;
> -    char *json = NULL;
>      char *result = NULL;
>      int ret = -1;
>  
> -    if (virAsprintf(&json, "%s/cputestdata/%s-cpuid-%s.json",
> -                    abs_srcdir, virArchToString(data->arch), data->host) < 0 ||
> -        virAsprintf(&result, "cpuid-%s-json", data->host) < 0)
> +    if (virAsprintf(&result, "cpuid-%s-json", data->host) < 0)
>          goto cleanup;

This one could seemingly just return -1 although what's here works, just
a few extra steps to functions that do nothing.

With or without adjustments...

Reviewed-by: John Ferlan <jferlan at redhat.com>

John

>  
> -    if (!(testMon = qemuMonitorTestNewFromFile(json, driver.xmlopt, true)))
> -        goto cleanup;
> -
> -    if (qemuMonitorGetCPUModelExpansion(qemuMonitorTestGetMonitor(testMon),
> -                                        QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC,
> -                                        "host", true, &model) < 0)
> -        goto cleanup;
> -
> -    if (!(qemuCaps = virQEMUCapsNew()))
> -        goto cleanup;
> -
> -    virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM);
> -    if (data->flags == JSON_MODELS)
> -        virQEMUCapsSet(qemuCaps, QEMU_CAPS_QUERY_CPU_DEFINITIONS);
> -
> -    virQEMUCapsSetArch(qemuCaps, data->arch);
> -    virQEMUCapsSetCPUModelInfo(qemuCaps, VIR_DOMAIN_VIRT_KVM, model);
> -    model = NULL;
> -
> -    if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps,
> -                                          qemuMonitorTestGetMonitor(testMon),
> -                                          false) < 0)
> +    if (!(qemuCaps = cpuTestMakeQEMUCaps(data)))
>          goto cleanup;
>  
>      if (VIR_ALLOC(cpu) < 0)
> @@ -732,12 +758,9 @@ cpuTestJSONCPUID(const void *arg)
>      ret = cpuTestCompareXML(data->arch, cpu, result);
>  
>   cleanup:
> -    qemuMonitorCPUModelInfoFree(model);
>      virObjectUnref(qemuCaps);
> -    qemuMonitorTestFree(testMon);
>      virCPUDefFree(cpu);
>      VIR_FREE(result);
> -    VIR_FREE(json);
>      return ret;
>  }
>  #endif
> 




More information about the libvir-list mailing list