Add a test to fetch the GetMemoryStat output. This only gets
data for v1 only right now since the v2 data from commit 61ff6021
is rather useless returning all 0's.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
tests/vircgrouptest.c | 61 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
index 310e1fb6a2..06c4a8ef5c 100644
--- a/tests/vircgrouptest.c
+++ b/tests/vircgrouptest.c
@@ -802,6 +802,64 @@ static int testCgroupGetMemoryUsage(const void *args
ATTRIBUTE_UNUSED)
return ret;
}
+
+static int
+testCgroupGetMemoryStat(const void *args ATTRIBUTE_UNUSED)
+{
+ virCgroupPtr cgroup = NULL;
+ int rv, ret = -1;
+ size_t i;
+
+ const unsigned long long expected_values[] = {
+ 1336619008ULL,
+ 67100672ULL,
+ 145887232ULL,
+ 661872640ULL,
+ 627400704UL,
+ 3690496ULL
+ };
+ const char* names[] = {
+ "cache",
+ "active_anon",
+ "inactive_anon",
+ "active_file",
+ "inactive_file",
+ "unevictable"
+ };
+ unsigned long long values[ARRAY_CARDINALITY(expected_values)];
+
+ if ((rv = virCgroupNewPartition("/virtualmachines", true,
+ (1 << VIR_CGROUP_CONTROLLER_MEMORY),
+ &cgroup)) < 0) {
+ fprintf(stderr, "Could not create /virtualmachines cgroup: %d\n",
-rv);
+ goto cleanup;
+ }
+
+ if ((rv = virCgroupGetMemoryStat(cgroup, &values[0],
+ &values[1], &values[2],
+ &values[3], &values[4],
+ &values[5])) < 0) {
+ fprintf(stderr, "Could not retrieve GetMemoryStat for /virtualmachines
cgroup: %d\n", -rv);
+ goto cleanup;
+ }
+
+ for (i = 0; i < ARRAY_CARDINALITY(expected_values); i++) {
+ if (expected_values[i] != (values[i] << 10)) {
+ fprintf(stderr,
+ "Wrong value (%llu) for %s from virCgroupGetMemoryStat (expected
%llu)\n",
+ values[i], names[i], expected_values[i]);
+ goto cleanup;
+ }
+ }
+
+ ret = 0;
+
+ cleanup:
+ virCgroupFree(&cgroup);
+ return ret;
+}
+
+
static int testCgroupGetBlkioIoServiced(const void *args ATTRIBUTE_UNUSED)
{
virCgroupPtr cgroup = NULL;
@@ -1035,6 +1093,9 @@ mymain(void)
if (virTestRun("virCgroupGetMemoryUsage works", testCgroupGetMemoryUsage,
NULL) < 0)
ret = -1;
+ if (virTestRun("virCgroupGetMemoryStat works", testCgroupGetMemoryStat,
NULL) < 0)
+ ret = -1;
+
if (virTestRun("virCgroupGetPercpuStats works", testCgroupGetPercpuStats,
NULL) < 0)
ret = -1;
cleanupFakeFS(fakerootdir);
--
2.17.2