Add unit test for virCgroupGetPercpuStats.

This commit is contained in:
Thorsten Behrens 2014-02-14 18:49:08 +01:00 committed by Michal Privoznik
parent 35aebf1118
commit 5eb61e6846
1 changed files with 66 additions and 0 deletions

View File

@ -33,6 +33,7 @@
# include "virlog.h"
# include "virfile.h"
# include "testutilslxc.h"
# include "nodeinfo.h"
# define VIR_FROM_THIS VIR_FROM_NONE
@ -530,6 +531,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;
@ -735,6 +798,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;