forked from rpms/libvirt
113 lines
3.6 KiB
Diff
113 lines
3.6 KiB
Diff
From 356b50b2014aafc7c1555e11cf93650dad39f03a Mon Sep 17 00:00:00 2001
|
|
Message-Id: <356b50b2014aafc7c1555e11cf93650dad39f03a@dist-git>
|
|
From: John Ferlan <jferlan@redhat.com>
|
|
Date: Mon, 1 Jul 2019 17:08:08 +0200
|
|
Subject: [PATCH] tests: Augment vcgrouptest to add virCgroupGetMemoryStat
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
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. The v1 data was originally
|
|
added in commit d1452470.
|
|
|
|
Signed-off-by: John Ferlan <jferlan@redhat.com>
|
|
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
|
|
(cherry picked from commit 99b8ef7a98d6ad4a01549204195f5e17ee1984ee)
|
|
|
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297
|
|
|
|
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
Message-Id: <3c217939ce31a379e149865bc0f3342fc334ba42.1561993100.git.phrdina@redhat.com>
|
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
---
|
|
tests/vircgrouptest.c | 64 +++++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 64 insertions(+)
|
|
|
|
diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
|
|
index 118b1bc246..e9cf792bdd 100644
|
|
--- a/tests/vircgrouptest.c
|
|
+++ b/tests/vircgrouptest.c
|
|
@@ -803,6 +803,67 @@ static int testCgroupGetMemoryUsage(const void *args ATTRIBUTE_UNUSED)
|
|
return ret;
|
|
}
|
|
|
|
+
|
|
+static int
|
|
+testCgroupGetMemoryStat(const void *args ATTRIBUTE_UNUSED)
|
|
+{
|
|
+ virCgroupPtr cgroup = NULL;
|
|
+ int rv;
|
|
+ int 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++) {
|
|
+ /* NB: virCgroupGetMemoryStat returns a KiB scaled value */
|
|
+ if ((expected_values[i] >> 10) != values[i]) {
|
|
+ fprintf(stderr,
|
|
+ "Wrong value (%llu) for %s from virCgroupGetMemoryStat "
|
|
+ "(expected %llu)\n",
|
|
+ values[i], names[i], (expected_values[i] >> 10));
|
|
+ goto cleanup;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ ret = 0;
|
|
+
|
|
+ cleanup:
|
|
+ virCgroupFree(&cgroup);
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+
|
|
static int testCgroupGetBlkioIoServiced(const void *args ATTRIBUTE_UNUSED)
|
|
{
|
|
virCgroupPtr cgroup = NULL;
|
|
@@ -1036,6 +1097,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.22.0
|
|
|