]> xenbits.xensource.com Git - people/aperard/libvirt.git/commitdiff
tests: Verify handling of CPU clusters in QMP data
authorAndrea Bolognani <abologna@redhat.com>
Mon, 8 Jan 2024 17:44:25 +0000 (18:44 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Mon, 15 Jan 2024 13:56:36 +0000 (14:56 +0100)
Since aarch64 doesn't support CPU hotplug at the moment, we have
to get a bit creative.

While the 'query-cpus-fast' output is taken directly from a VM
configured as

  <vcpu current='7'>16</vcpu>
  <cpu mode='host-passthrough'>
    <topology sockets='2' dies='1' clusters='2' cores='2' threads='2'/>
  </cpu>

the 'query-hotpluggable-cpus' output is constructed by hand
starting from the former and using the 'x86-dies' test data as
a model.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-cpus.json [new file with mode: 0644]
tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-hotplug.json [new file with mode: 0644]
tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters.data [new file with mode: 0644]
tests/qemumonitorjsontest.c

diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-cpus.json b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-cpus.json
new file mode 100644 (file)
index 0000000..817f65d
--- /dev/null
@@ -0,0 +1,88 @@
+{
+  "return": [
+    {
+      "thread-id": 284700,
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "qom-path": "/machine/unattached/device[0]",
+      "cpu-index": 0,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284701,
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "qom-path": "/machine/unattached/device[1]",
+      "cpu-index": 1,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284702,
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "qom-path": "/machine/unattached/device[2]",
+      "cpu-index": 2,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284703,
+      "props": {
+        "core-id": 1,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "qom-path": "/machine/unattached/device[3]",
+      "cpu-index": 3,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284704,
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "qom-path": "/machine/unattached/device[4]",
+      "cpu-index": 4,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284705,
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "qom-path": "/machine/unattached/device[5]",
+      "cpu-index": 5,
+      "target": "aarch64"
+    },
+    {
+      "thread-id": 284706,
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "qom-path": "/machine/unattached/device[6]",
+      "cpu-index": 6,
+      "target": "aarch64"
+    }
+  ]
+}
diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-hotplug.json b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters-hotplug.json
new file mode 100644 (file)
index 0000000..7ae30bf
--- /dev/null
@@ -0,0 +1,171 @@
+{
+  "return": [
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 1,
+        "socket-id": 1,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 1,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 1,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 1,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 1,
+        "socket-id": 1,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 1,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 1,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 1,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[6]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[5]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 1
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[4]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[3]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 1,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[2]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 1,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[1]",
+      "type": "host-arm-cpu"
+    },
+    {
+      "props": {
+        "core-id": 0,
+        "thread-id": 0,
+        "socket-id": 0,
+        "cluster-id": 0
+      },
+      "vcpus-count": 1,
+      "qom-path": "/machine/unattached/device[0]",
+      "type": "host-arm-cpu"
+    }
+  ]
+}
diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-aarch64-clusters.data
new file mode 100644 (file)
index 0000000..87e927e
--- /dev/null
@@ -0,0 +1,108 @@
+[vcpu libvirt-id='0']
+    online=yes
+    hotpluggable=no
+    thread-id='284700'
+    enable-id='1'
+    query-cpus-id='0'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[0]'
+    topology: socket='0' cluster_id='0' core='0' thread='0' vcpus='1'
+[vcpu libvirt-id='1']
+    online=yes
+    hotpluggable=no
+    thread-id='284701'
+    enable-id='2'
+    query-cpus-id='1'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[1]'
+    topology: socket='0' cluster_id='0' core='0' thread='1' vcpus='1'
+[vcpu libvirt-id='2']
+    online=yes
+    hotpluggable=no
+    thread-id='284702'
+    enable-id='3'
+    query-cpus-id='2'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[2]'
+    topology: socket='0' cluster_id='0' core='1' thread='0' vcpus='1'
+[vcpu libvirt-id='3']
+    online=yes
+    hotpluggable=no
+    thread-id='284703'
+    enable-id='4'
+    query-cpus-id='3'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[3]'
+    topology: socket='0' cluster_id='0' core='1' thread='1' vcpus='1'
+[vcpu libvirt-id='4']
+    online=yes
+    hotpluggable=no
+    thread-id='284704'
+    enable-id='5'
+    query-cpus-id='4'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[4]'
+    topology: socket='0' cluster_id='1' core='0' thread='0' vcpus='1'
+[vcpu libvirt-id='5']
+    online=yes
+    hotpluggable=no
+    thread-id='284705'
+    enable-id='6'
+    query-cpus-id='5'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[5]'
+    topology: socket='0' cluster_id='1' core='0' thread='1' vcpus='1'
+[vcpu libvirt-id='6']
+    online=yes
+    hotpluggable=no
+    thread-id='284706'
+    enable-id='7'
+    query-cpus-id='6'
+    type='host-arm-cpu'
+    qom_path='/machine/unattached/device[6]'
+    topology: socket='0' cluster_id='1' core='1' thread='0' vcpus='1'
+[vcpu libvirt-id='7']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='0' cluster_id='1' core='1' thread='1' vcpus='1'
+[vcpu libvirt-id='8']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='0' core='0' thread='0' vcpus='1'
+[vcpu libvirt-id='9']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='0' core='0' thread='1' vcpus='1'
+[vcpu libvirt-id='10']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='0' core='1' thread='0' vcpus='1'
+[vcpu libvirt-id='11']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='0' core='1' thread='1' vcpus='1'
+[vcpu libvirt-id='12']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='1' core='0' thread='0' vcpus='1'
+[vcpu libvirt-id='13']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='1' core='0' thread='1' vcpus='1'
+[vcpu libvirt-id='14']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='1' core='1' thread='0' vcpus='1'
+[vcpu libvirt-id='15']
+    online=no
+    hotpluggable=yes
+    type='host-arm-cpu'
+    topology: socket='1' cluster_id='1' core='1' thread='1' vcpus='1'
index d9ebb429e71f5db5f4b8e03e03f448bb77a1f93c..45cee237981973379361e1d6b6f49a03fe1da3a0 100644 (file)
@@ -2262,13 +2262,16 @@ testQemuMonitorCPUInfoFormat(qemuMonitorCPUInfo *vcpus,
         if (vcpu->qom_path)
             virBufferAsprintf(&buf, "qom_path='%s'\n", vcpu->qom_path);
 
-        if (vcpu->socket_id != -1 || vcpu->core_id != -1 ||
+        if (vcpu->socket_id != -1 || vcpu->die_id != -1 ||
+            vcpu->cluster_id != -1 || vcpu->core_id != -1 ||
             vcpu->thread_id != -1 || vcpu->vcpus != 0) {
             virBufferAddLit(&buf, "topology:");
             if (vcpu->socket_id != -1)
                 virBufferAsprintf(&buf, " socket='%d'", vcpu->socket_id);
             if (vcpu->die_id != -1)
                 virBufferAsprintf(&buf, " die='%d'", vcpu->die_id);
+            if (vcpu->cluster_id != -1)
+                virBufferAsprintf(&buf, " cluster_id='%d'", vcpu->cluster_id);
             if (vcpu->core_id != -1)
                 virBufferAsprintf(&buf, " core='%d'", vcpu->core_id);
             if (vcpu->thread_id != -1)
@@ -2919,6 +2922,10 @@ mymain(void)
     DO_TEST_CPU_INFO("ppc64-hotplug-4", 24);
     DO_TEST_CPU_INFO("ppc64-no-threads", 16);
 
+    /* aarch64 doesn't support CPU hotplug yet, so the data used in
+     * this test is partially synthetic */
+    DO_TEST_CPU_INFO("aarch64-clusters", 16);
+
     DO_TEST_CPU_INFO("s390", 2);