All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: [PULL 08/10] docs/devel/qgraph: add troubleshooting information
Date: Mon,  3 May 2021 12:44:54 +0200	[thread overview]
Message-ID: <20210503104456.1036472-9-thuth@redhat.com> (raw)
In-Reply-To: <20210503104456.1036472-1-thuth@redhat.com>

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



  parent reply	other threads:[~2021-05-03 10:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-03 10:44 [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches Thomas Huth
2021-05-03 10:44 ` [PULL 01/10] Remove the deprecated moxie target Thomas Huth
2021-05-03 10:44 ` [PULL 02/10] tests/docker/dockerfiles: Add ccache to containers where it was missing Thomas Huth
2021-05-03 10:44 ` [PULL 03/10] include/sysemu: Poison all accelerator CONFIG switches in common code Thomas Huth
2021-05-03 10:44 ` [PULL 04/10] gitlab-ci: Replace YAML anchors by extends (container_job) Thomas Huth
2021-05-03 10:44 ` [PULL 05/10] gitlab-ci: Replace YAML anchors by extends (native_build_job) Thomas Huth
2021-05-03 10:44 ` [PULL 06/10] gitlab-ci: Replace YAML anchors by extends (native_test_job) Thomas Huth
2021-05-03 10:44 ` [PULL 07/10] libqos/qgraph: fix "UNAVAILBLE" typo Thomas Huth
2021-05-03 10:44 ` Thomas Huth [this message]
2021-05-03 10:44 ` [PULL 09/10] libqtest: refuse QTEST_QEMU_BINARY=qemu-kvm Thomas Huth
2021-05-03 10:44 ` [PULL 10/10] util/compatfd.c: Replaced a malloc call with g_malloc Thomas Huth
2021-05-05 18:06 ` [PULL 00/10] Gitlab-CI, qtest, moxie removal and misc patches Peter Maydell
2021-05-06  7:00   ` Thomas Huth
2021-05-06  7:38     ` Peter Maydell
2021-05-07  9:45       ` Thomas Huth
2021-05-07 12:41         ` Paolo Bonzini
2021-05-09 16:05           ` Thomas Huth
2021-05-14 10:22             ` Philippe Mathieu-Daudé
2021-05-14 10:25               ` Thomas Huth
2021-05-20  2:40                 ` Philippe Mathieu-Daudé
2021-05-20  5:08                   ` Thomas Huth
2021-05-20  7:43                     ` Paolo Bonzini
2021-05-20 13:06                       ` Philippe Mathieu-Daudé
2021-05-20 13:10                         ` Peter Maydell
2021-05-07 12:53     ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210503104456.1036472-9-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.