]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virnumamock: Introduce virNumaGetNodeOfCPU() mock
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Mar 2023 14:44:41 +0000 (15:44 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 15 Mar 2023 11:46:21 +0000 (12:46 +0100)
Introduce a mock of virNumaGetNodeOfCPU() because soon we will
need virNumaCPUSetToNodeset() to return predictable results.
Also, fill in missing symlinks in vircaps2xmldata/.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
39 files changed:
src/util/virnuma.h
tests/vircaps2xmldata/linux-basic/system/cpu/cpu0/node0 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu1/node0 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu10/node2 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu11/node2 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu12/node3 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu13/node3 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu14/node3 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu15/node3 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu2/node0 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu3/node0 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu4/node1 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu5/node1 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu6/node1 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu7/node1 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu8/node2 [new symlink]
tests/vircaps2xmldata/linux-basic/system/cpu/cpu9/node2 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu0/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu1/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu2/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu3/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu4/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu5/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu6/node0 [new symlink]
tests/vircaps2xmldata/linux-caches/system/cpu/cpu7/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/cpu/cpu0/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/node1 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/node1 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/node0 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/node1 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/node1 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/node1 [new symlink]
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/node1 [new symlink]
tests/virnumamock.c

index 2c30ef4e3136d243908cc0aa1a5c4661b7f8f590..edd701d5c82b53650b3191cf10cb5f7c28d3b9d5 100644 (file)
@@ -45,7 +45,7 @@ int virNumaGetNodeMemory(int node,
 
 unsigned int virNumaGetMaxCPUs(void) G_NO_INLINE;
 
-int virNumaGetNodeOfCPU(int cpu);
+int virNumaGetNodeOfCPU(int cpu) G_NO_INLINE;
 int virNumaGetNodeCPUs(int node, virBitmap **cpus) G_NO_INLINE;
 int virNumaCPUSetToNodeset(virBitmap *cpuset,
                            virBitmap **nodeset);
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu0/node0 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu0/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu1/node0 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu1/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu10/node2 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu10/node2
new file mode 120000 (symlink)
index 0000000..e04af16
--- /dev/null
@@ -0,0 +1 @@
+../../node/node2
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu11/node2 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu11/node2
new file mode 120000 (symlink)
index 0000000..e04af16
--- /dev/null
@@ -0,0 +1 @@
+../../node/node2
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu12/node3 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu12/node3
new file mode 120000 (symlink)
index 0000000..f213d66
--- /dev/null
@@ -0,0 +1 @@
+../../node/node3
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu13/node3 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu13/node3
new file mode 120000 (symlink)
index 0000000..f213d66
--- /dev/null
@@ -0,0 +1 @@
+../../node/node3
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu14/node3 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu14/node3
new file mode 120000 (symlink)
index 0000000..f213d66
--- /dev/null
@@ -0,0 +1 @@
+../../node/node3
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu15/node3 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu15/node3
new file mode 120000 (symlink)
index 0000000..f213d66
--- /dev/null
@@ -0,0 +1 @@
+../../node/node3
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu2/node0 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu2/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu3/node0 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu3/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu4/node1 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu4/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu5/node1 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu5/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu6/node1 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu6/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu7/node1 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu7/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu8/node2 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu8/node2
new file mode 120000 (symlink)
index 0000000..e04af16
--- /dev/null
@@ -0,0 +1 @@
+../../node/node2
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-basic/system/cpu/cpu9/node2 b/tests/vircaps2xmldata/linux-basic/system/cpu/cpu9/node2
new file mode 120000 (symlink)
index 0000000..e04af16
--- /dev/null
@@ -0,0 +1 @@
+../../node/node2
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu0/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu0/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu1/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu1/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu2/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu2/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu3/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu3/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu4/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu4/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu5/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu5/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu6/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu6/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-caches/system/cpu/cpu7/node0 b/tests/vircaps2xmldata/linux-caches/system/cpu/cpu7/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/cpu/cpu0/node0 b/tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/cpu/cpu0/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/node0 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/node0
new file mode 120000 (symlink)
index 0000000..222b6af
--- /dev/null
@@ -0,0 +1 @@
+../../node/node0
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
diff --git a/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/node1 b/tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/node1
new file mode 120000 (symlink)
index 0000000..1f9c101
--- /dev/null
@@ -0,0 +1 @@
+../../node/node1
\ No newline at end of file
index 87c9a58c6f6717401b4ab6c2d6e1374fbc54f223..8d5c862fa21184a0a39322d0315e615b7fd712f7 100644 (file)
@@ -21,6 +21,7 @@
 #include "internal.h"
 #include "virnuma.h"
 #include "virfile.h"
+#include "virstring.h"
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
@@ -171,3 +172,44 @@ virNumaGetNodeCPUs(int node, virBitmap **cpus)
 
     return virBitmapCountBits(*cpus);
 }
+
+int
+virNumaGetNodeOfCPU(int cpu)
+{
+    g_autoptr(DIR) cpuDir = NULL;
+    g_autofree char *sysfs_cpu_path = NULL;
+    struct dirent *ent = NULL;
+    int dirErr = 0;
+
+    sysfs_cpu_path =  g_strdup_printf("%s/cpu/cpu%d", SYSFS_SYSTEM_PATH, cpu);
+
+    if (virDirOpen(&cpuDir, sysfs_cpu_path) < 0)
+        return -1;
+
+    while ((dirErr = virDirRead(cpuDir, &ent, sysfs_cpu_path)) > 0) {
+        g_autofree char *entPath = NULL;
+        const char *number = NULL;
+        int node;
+
+        if (!(number = STRSKIP(ent->d_name, "node")))
+            continue;
+
+        entPath = g_strdup_printf("%s/%s", sysfs_cpu_path, ent->d_name);
+
+        if (!virFileIsLink(entPath))
+            continue;
+
+        if (virStrToLong_i(number, NULL, 10, &node) < 0) {
+            errno = EINVAL;
+            return -1;
+        }
+
+        return node;
+    }
+
+    if (dirErr < 0)
+        return -1;
+
+    errno = EINVAL;
+    return -1;
+}