[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