[libvirt] [PATCH] test_driver: virDomainGetPerfEvents

Ilias Stamatis stamatis.iliass at gmail.com
Fri Jun 28 19:38:30 UTC 2019


On Fri, Jun 28, 2019 at 6:15 PM Ilias Stamatis
<stamatis.iliass at gmail.com> wrote:
>
> Signed-off-by: Ilias Stamatis <stamatis.iliass at gmail.com>
> ---
>  src/test/test_driver.c | 48 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>
> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> index 4b1f2724a0..215171839c 100755
> --- a/src/test/test_driver.c
> +++ b/src/test/test_driver.c
> @@ -3293,6 +3293,53 @@ static int testDomainGetDiskErrors(virDomainPtr dom,
>      return ret;
>  }
>
> +
> +static int
> +testDomainGetPerfEvents(virDomainPtr dom,
> +                        virTypedParameterPtr *params,
> +                        int *nparams,
> +                        unsigned int flags)
> +{
> +    virDomainObjPtr vm = NULL;
> +    virDomainDefPtr def = NULL;
> +    virTypedParameterPtr par = NULL;
> +    size_t i;
> +    int maxpar = 0;
> +    int npar = 0;
> +    int ret = -1;
> +
> +    virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
> +                  VIR_DOMAIN_AFFECT_CONFIG |
> +                  VIR_TYPED_PARAM_STRING_OKAY, -1);
> +
> +    if (!(vm = testDomObjFromDomain(dom)))
> +        goto cleanup;
> +
> +    if (virDomainObjUpdateModificationImpact(vm, &flags) < 0)
> +        goto cleanup;

Actually calling this function here is redundant since it is called
also by virDomainObjGetOneDef just in the next line. So it can be
removed before merging.

This redundant call is also done in the implementation of the same API
from the QEMU driver, so it could probably be safely removed from
there as well.

> +
> +    if (!(def = virDomainObjGetOneDef(vm, flags)))
> +        goto cleanup;
> +
> +    for (i = 0; i < VIR_PERF_EVENT_LAST; i++) {
> +        if (virTypedParamsAddBoolean(&par, &npar, &maxpar,
> +                                     virPerfEventTypeToString(i),
> +                                     def->perf.events[i] == VIR_TRISTATE_BOOL_YES) < 0)
> +            goto cleanup;
> +    }
> +
> +    VIR_STEAL_PTR(*params, par);
> +    *nparams = npar;
> +    npar = 0;
> +
> +    ret = 0;
> + cleanup:
> +    virDomainObjEndAPI(&vm);
> +    virTypedParamsFree(par, npar);
> +    return ret;
> +}
> +
> +
>  static char *testDomainGetSchedulerType(virDomainPtr domain ATTRIBUTE_UNUSED,
>                                          int *nparams)
>  {
> @@ -7287,6 +7334,7 @@ static virHypervisorDriver testHypervisorDriver = {
>      .domainGetAutostart = testDomainGetAutostart, /* 0.3.2 */
>      .domainSetAutostart = testDomainSetAutostart, /* 0.3.2 */
>      .domainGetDiskErrors = testDomainGetDiskErrors, /* 5.4.0 */
> +    .domainGetPerfEvents = testDomainGetPerfEvents, /* 5.6.0 */
>      .domainGetSchedulerType = testDomainGetSchedulerType, /* 0.3.2 */
>      .domainGetSchedulerParameters = testDomainGetSchedulerParameters, /* 0.3.2 */
>      .domainGetSchedulerParametersFlags = testDomainGetSchedulerParametersFlags, /* 0.9.2 */
> --
> 2.22.0
>




More information about the libvir-list mailing list