The goal of this series is to remove Avocado as a dependency for running the reverse_debugging functional test.
This test, the last one I’m aware of that relies on Avocado, requires it because of the need for GDB to test reverse stepping and continue. In this series, we leveraged the run-test.py script used in the check-tcg tests, making it a GDB runner capable of calling a test script without spawning any VMs. In this configuration, the test script can manage the VMs and also import gdb from the test script, making the Python GDB API available inside the functional test. The test is kept “skipped” for aarch64, ppc64, and x86_64, so it is necessary to set QEMU_TEST_FLAKY_TESTS=1 in the test environment to effectively run the test on these archs. On aarch64, the test is flaky, but there is a fix that I’ve tested while writing this series [0] that resolves it. On ppc64 and x86_64, the test always fails: on ppc64, GDB gets a bogus PC, and on x86_64, the last part of the test (reverse-continue) does not hit the last executed PC (as it should) but instead jumps to the beginning of the code (fist PC in forward order). Thus, to run the reverse_debugging test effectively on aarch64: $ export QEMU_TEST_FLAKY_TESTS=1 $ make check-functional Cheers, Gustavo [0] https://gitlab.com/qemu-project/qemu/-/issues/2921 Gustavo Romero (4): tests/guest-debug: Make QEMU optional in run-test.py tests/functional: Support tests that require a runner tests/functional: Mark main in QemuBaseTest class as a static method tests/functional: Adapt reverse_debugging to run w/o Avocado meson.build | 4 + tests/functional/meson.build | 77 ++++++++- tests/functional/qemu_test/testcase.py | 1 + tests/functional/reverse_debugging.py | 158 +++++++++--------- .../functional/test_aarch64_reverse_debug.py | 19 +-- tests/functional/test_ppc64_reverse_debug.py | 17 +- tests/functional/test_x86_64_reverse_debug.py | 21 +-- tests/guest-debug/run-test.py | 81 +++++---- 8 files changed, 223 insertions(+), 155 deletions(-) -- 2.34.1