c313de
From 356b50b2014aafc7c1555e11cf93650dad39f03a Mon Sep 17 00:00:00 2001
c313de
Message-Id: <356b50b2014aafc7c1555e11cf93650dad39f03a@dist-git>
c313de
From: John Ferlan <jferlan@redhat.com>
c313de
Date: Mon, 1 Jul 2019 17:08:08 +0200
c313de
Subject: [PATCH] tests: Augment vcgrouptest to add virCgroupGetMemoryStat
c313de
MIME-Version: 1.0
c313de
Content-Type: text/plain; charset=UTF-8
c313de
Content-Transfer-Encoding: 8bit
c313de
c313de
Add a test to fetch the GetMemoryStat output. This only gets
c313de
data for v1 only right now since the v2 data from commit 61ff6021
c313de
is rather useless returning all 0's. The v1 data was originally
c313de
added in commit d1452470.
c313de
c313de
Signed-off-by: John Ferlan <jferlan@redhat.com>
c313de
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
c313de
(cherry picked from commit 99b8ef7a98d6ad4a01549204195f5e17ee1984ee)
c313de
c313de
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297
c313de
c313de
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
c313de
Message-Id: <3c217939ce31a379e149865bc0f3342fc334ba42.1561993100.git.phrdina@redhat.com>
c313de
Reviewed-by: Ján Tomko <jtomko@redhat.com>
c313de
---
c313de
 tests/vircgrouptest.c | 64 +++++++++++++++++++++++++++++++++++++++++++
c313de
 1 file changed, 64 insertions(+)
c313de
c313de
diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
c313de
index 118b1bc246..e9cf792bdd 100644
c313de
--- a/tests/vircgrouptest.c
c313de
+++ b/tests/vircgrouptest.c
c313de
@@ -803,6 +803,67 @@ static int testCgroupGetMemoryUsage(const void *args ATTRIBUTE_UNUSED)
c313de
     return ret;
c313de
 }
c313de
 
c313de
+
c313de
+static int
c313de
+testCgroupGetMemoryStat(const void *args ATTRIBUTE_UNUSED)
c313de
+{
c313de
+    virCgroupPtr cgroup = NULL;
c313de
+    int rv;
c313de
+    int ret = -1;
c313de
+    size_t i;
c313de
+
c313de
+    const unsigned long long expected_values[] = {
c313de
+        1336619008ULL,
c313de
+        67100672ULL,
c313de
+        145887232ULL,
c313de
+        661872640ULL,
c313de
+        627400704UL,
c313de
+        3690496ULL
c313de
+    };
c313de
+    const char* names[] = {
c313de
+        "cache",
c313de
+        "active_anon",
c313de
+        "inactive_anon",
c313de
+        "active_file",
c313de
+        "inactive_file",
c313de
+        "unevictable"
c313de
+    };
c313de
+    unsigned long long values[ARRAY_CARDINALITY(expected_values)];
c313de
+
c313de
+    if ((rv = virCgroupNewPartition("/virtualmachines", true,
c313de
+                                    (1 << VIR_CGROUP_CONTROLLER_MEMORY),
c313de
+                                    &cgroup)) < 0) {
c313de
+        fprintf(stderr, "Could not create /virtualmachines cgroup: %d\n", -rv);
c313de
+        goto cleanup;
c313de
+    }
c313de
+
c313de
+    if ((rv = virCgroupGetMemoryStat(cgroup, &values[0],
c313de
+                                     &values[1], &values[2],
c313de
+                                     &values[3], &values[4],
c313de
+                                     &values[5])) < 0) {
c313de
+        fprintf(stderr, "Could not retrieve GetMemoryStat for /virtualmachines cgroup: %d\n", -rv);
c313de
+        goto cleanup;
c313de
+    }
c313de
+
c313de
+    for (i = 0; i < ARRAY_CARDINALITY(expected_values); i++) {
c313de
+        /* NB: virCgroupGetMemoryStat returns a KiB scaled value */
c313de
+        if ((expected_values[i] >> 10) != values[i]) {
c313de
+            fprintf(stderr,
c313de
+                    "Wrong value (%llu) for %s from virCgroupGetMemoryStat "
c313de
+                    "(expected %llu)\n",
c313de
+                    values[i], names[i], (expected_values[i] >> 10));
c313de
+            goto cleanup;
c313de
+        }
c313de
+    }
c313de
+
c313de
+    ret = 0;
c313de
+
c313de
+ cleanup:
c313de
+    virCgroupFree(&cgroup);
c313de
+    return ret;
c313de
+}
c313de
+
c313de
+
c313de
 static int testCgroupGetBlkioIoServiced(const void *args ATTRIBUTE_UNUSED)
c313de
 {
c313de
     virCgroupPtr cgroup = NULL;
c313de
@@ -1036,6 +1097,9 @@ mymain(void)
c313de
     if (virTestRun("virCgroupGetMemoryUsage works", testCgroupGetMemoryUsage, NULL) < 0)
c313de
         ret = -1;
c313de
 
c313de
+    if (virTestRun("virCgroupGetMemoryStat works", testCgroupGetMemoryStat, NULL) < 0)
c313de
+        ret = -1;
c313de
+
c313de
     if (virTestRun("virCgroupGetPercpuStats works", testCgroupGetPercpuStats, NULL) < 0)
c313de
         ret = -1;
c313de
     cleanupFakeFS(fakerootdir);
c313de
-- 
c313de
2.22.0
c313de