[libvirt] [PATCHv3 10/10] Add unit test for virCgroupGetPercpuStats.

Michal Privoznik mprivozn at redhat.com
Thu Feb 6 11:46:01 UTC 2014


On 03.02.2014 18:44, Thorsten Behrens wrote:
> ---
>   tests/vircgrouptest.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 66 insertions(+)
>
> diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
> index 6826442..dfcb0aa 100644
> --- a/tests/vircgrouptest.c
> +++ b/tests/vircgrouptest.c
> @@ -32,6 +32,7 @@
>   # include "virerror.h"
>   # include "virlog.h"
>   # include "virfile.h"
> +# include "nodeinfo.h"
>
>   # define VIR_FROM_THIS VIR_FROM_NONE
>
> @@ -532,6 +533,68 @@ static int testCgroupAvailable(const void *args)
>       return 0;
>   }
>
> +static int testCgroupGetPercpuStats(const void *args ATTRIBUTE_UNUSED)
> +{
> +    virCgroupPtr cgroup = NULL;
> +    size_t i;
> +    int rv, ret = -1;
> +    virTypedParameter params[2];
> +
> +    // TODO: mock nodeGetCPUCount() as well & check 2nd cpu, too
> +    unsigned long long expected[] = {
> +        1413142688153030
> +    };
> +
> +    if ((rv = virCgroupNewPartition("/virtualmachines", true,
> +                                    (1 << VIR_CGROUP_CONTROLLER_CPU) |
> +                                    (1 << VIR_CGROUP_CONTROLLER_CPUACCT),
> +                                    &cgroup)) < 0) {
> +        fprintf(stderr, "Could not create /virtualmachines cgroup: %d\n", -rv);
> +        goto cleanup;
> +    }
> +
> +    if (nodeGetCPUCount() < 1) {
> +        fprintf(stderr, "Unexpected: nodeGetCPUCount() yields: %d\n", nodeGetCPUCount());
> +        goto cleanup;
> +    }
> +
> +    if ((rv = virCgroupGetPercpuStats(cgroup,
> +                                      params,
> +                                      2, 0, 1)) < 0) {
> +        fprintf(stderr, "Failed call to virCgroupGetPercpuStats for /virtualmachines cgroup: %d\n", -rv);
> +        goto cleanup;
> +    }
> +
> +    for (i = 0; i < ARRAY_CARDINALITY(expected); i++) {
> +        if (!STREQ(params[i].field, VIR_DOMAIN_CPU_STATS_CPUTIME)) {
> +            fprintf(stderr,
> +                    "Wrong parameter name value from virCgroupGetPercpuStats (is: %s)\n",
> +                    params[i].field);
> +            goto cleanup;
> +        }
> +
> +        if (params[i].type != VIR_TYPED_PARAM_ULLONG) {
> +            fprintf(stderr,
> +                    "Wrong parameter value type from virCgroupGetPercpuStats (is: %d)\n",
> +                    params[i].type);
> +            goto cleanup;
> +        }
> +
> +        if (params[i].value.ul != expected[i]) {
> +            fprintf(stderr,
> +                    "Wrong value from virCgroupGetMemoryUsage (expected %llu)\n",
> +                    params[i].value.ul);
> +            goto cleanup;
> +        }
> +    }
> +
> +    ret = 0;
> +
> +cleanup:
> +    virCgroupFree(&cgroup);
> +    return ret;
> +}
> +
>   static int testCgroupGetMemoryUsage(const void *args ATTRIBUTE_UNUSED)
>   {
>       virCgroupPtr cgroup = NULL;
> @@ -739,6 +802,9 @@ mymain(void)
>       if (virtTestRun("virCgroupGetMemoryUsage works", testCgroupGetMemoryUsage, NULL) < 0)
>           ret = -1;
>
> +    if (virtTestRun("virCgroupGetPercpuStats works", testCgroupGetPercpuStats, NULL) < 0)
> +        ret = -1;
> +
>       setenv("VIR_CGROUP_MOCK_MODE", "allinone", 1);
>       if (virtTestRun("New cgroup for self (allinone)", testCgroupNewForSelfAllInOne, NULL) < 0)
>           ret = -1;
>

ACK

Michal




More information about the libvir-list mailing list