[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/10] docs/devel/qgraph: add troubleshooting information
From: |
Thomas Huth |
Subject: |
[PULL 08/10] docs/devel/qgraph: add troubleshooting information |
Date: |
Mon, 3 May 2021 12:44:54 +0200 |
From: Stefan Hajnoczi <stefanha@redhat.com>
It can be tricky to troubleshoot qos-test when a test won't execute. Add
an explanation of how to trace qgraph node connectivity and find which
node has the problem.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20210412143437.727560-3-stefanha@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
docs/devel/qgraph.rst | 58 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/docs/devel/qgraph.rst b/docs/devel/qgraph.rst
index a9aff167ad..318534d4b0 100644
--- a/docs/devel/qgraph.rst
+++ b/docs/devel/qgraph.rst
@@ -92,6 +92,64 @@ The basic framework steps are the following:
Depending on the QEMU binary used, only some drivers/machines will be
available and only test that are reached by them will be executed.
+Troubleshooting unavailable tests
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+If there is no path from an available machine to a test then that test will be
+unavailable and won't execute. This can happen if a test or driver did not set
+up its qgraph node correctly. It can also happen if the necessary machine type
+or device is missing from the QEMU binary because it was compiled out or
+otherwise.
+
+It is possible to troubleshoot unavailable tests by running::
+
+ $ QTEST_QEMU_BINARY=build/qemu-system-x86_64 build/tests/qtest/qos-test
--verbose
+ # ALL QGRAPH EDGES: {
+ # src='virtio-net'
+ # |-> dest='virtio-net-tests/vhost-user/multiqueue' type=2
(node=0x559142109e30)
+ # |-> dest='virtio-net-tests/vhost-user/migrate' type=2
(node=0x559142109d00)
+ # src='virtio-net-pci'
+ # |-> dest='virtio-net' type=1 (node=0x55914210d740)
+ # src='pci-bus'
+ # |-> dest='virtio-net-pci' type=2 (node=0x55914210d880)
+ # src='pci-bus-pc'
+ # |-> dest='pci-bus' type=1 (node=0x559142103f40)
+ # src='i440FX-pcihost'
+ # |-> dest='pci-bus-pc' type=0 (node=0x55914210ac70)
+ # src='x86_64/pc'
+ # |-> dest='i440FX-pcihost' type=0 (node=0x5591421117f0)
+ # src=''
+ # |-> dest='x86_64/pc' type=0 (node=0x559142111600)
+ # |-> dest='arm/raspi2' type=0 (node=0x559142110740)
+ ...
+ # }
+ # ALL QGRAPH NODES: {
+ # name='virtio-net-tests/announce-self' type=3 cmd_line='(null)'
[available]
+ # name='arm/raspi2' type=0 cmd_line='-M raspi2 ' [UNAVAILABLE]
+ ...
+ # }
+
+The ``virtio-net-tests/announce-self`` test is listed as "available" in the
+"ALL QGRAPH NODES" output. This means the test will execute. We can follow the
+qgraph path in the "ALL QGRAPH EDGES" output as follows: '' -> 'x86_64/pc' ->
+'i440FX-pcihost' -> 'pci-bus-pc' -> 'pci-bus' -> 'virtio-net-pci' ->
+'virtio-net'. The root of the qgraph is '' and the depth first search begins
+there.
+
+The ``arm/raspi`` machine node is listed as "UNAVAILABLE". Although it is
+reachable from the root via '' -> 'arm/raspi2' the node is unavailable because
+the QEMU binary did not list it when queried by the framework. This is expected
+because we used the ``qemu-system-x86_64`` binary which does not support ARM
+machine types.
+
+If a test is unexpectedly listed as "UNAVAILABLE", first check that the "ALL
+QGRAPH EDGES" output reports edge connectivity from the root ('') to the test.
+If there is no connectivity then the qgraph nodes were not set up correctly and
+the driver or test code is incorrect. If there is connectivity, check the
+availability of each node in the path in the "ALL QGRAPH NODES" output. The
+first unavailable node in the path is the reason why the test is unavailable.
+Typically this is because the QEMU binary lacks support for the necessary
+machine type or device.
+
Creating a new driver and its interface
"""""""""""""""""""""""""""""""""""""""""
--
2.27.0
- [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Thomas Huth, 2021/05/03
- [PULL 02/10] tests/docker/dockerfiles: Add ccache to containers where it was missing, Thomas Huth, 2021/05/03
- [PULL 03/10] include/sysemu: Poison all accelerator CONFIG switches in common code, Thomas Huth, 2021/05/03
- [PULL 01/10] Remove the deprecated moxie target, Thomas Huth, 2021/05/03
- [PULL 04/10] gitlab-ci: Replace YAML anchors by extends (container_job), Thomas Huth, 2021/05/03
- [PULL 05/10] gitlab-ci: Replace YAML anchors by extends (native_build_job), Thomas Huth, 2021/05/03
- [PULL 06/10] gitlab-ci: Replace YAML anchors by extends (native_test_job), Thomas Huth, 2021/05/03
- [PULL 07/10] libqos/qgraph: fix "UNAVAILBLE" typo, Thomas Huth, 2021/05/03
- [PULL 08/10] docs/devel/qgraph: add troubleshooting information,
Thomas Huth <=
- [PULL 10/10] util/compatfd.c: Replaced a malloc call with g_malloc., Thomas Huth, 2021/05/03
- [PULL 09/10] libqtest: refuse QTEST_QEMU_BINARY=qemu-kvm, Thomas Huth, 2021/05/03
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Peter Maydell, 2021/05/05
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Thomas Huth, 2021/05/06
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Peter Maydell, 2021/05/06
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Thomas Huth, 2021/05/07
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Paolo Bonzini, 2021/05/07
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Thomas Huth, 2021/05/09
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Philippe Mathieu-Daudé, 2021/05/14
- Re: [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches, Thomas Huth, 2021/05/14