qemu/tests/acceptance
Peter Maydell 673205379f Python patches for 5.1
- Reduce race conditions on QEMUMachine::shutdown()
 
  1. Remove the "bare except" pattern in the existing shutdown code,
     which can mask problems and make debugging difficult.
  2. Ensure that post-shutdown cleanup is always performed, even when
     graceful termination fails.
  3. Unify cleanup paths such that no matter how the VM is terminated,
     the same functions and steps are always taken to reset the object
     state.
  4. Rewrite shutdown() such that any error encountered when attempting
     a graceful shutdown will be raised as an AbnormalShutdown exception.
     The pythonic idiom is to allow the caller to decide if this is a
     problem or not.
 
 - Modify part of the python/qemu library to comply with:
 
   . mypy --strict
   . pylint
   . flake8
 
 - Script for the TCG Continuous Benchmarking project that uses
   callgrind to dissect QEMU execution into three main phases:
 
   . code generation
   . JIT execution
   . helpers execution
 
 CI jobs results:
 . https://cirrus-ci.com/build/5421349961203712
 . https://gitlab.com/philmd/qemu/-/pipelines/166556001
 . https://travis-ci.org/github/philmd/qemu/builds/708102347
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAl8OGCUACgkQ4+MsLN6t
 wN52ZQ//cB8pRhOeirMzPTamtAePAHhU9kRKSQ4fFzVM/AHxaO3qO3KrMKAv4JnR
 1fwdyAbum0Dv+HrRAXbIVz/lgrlTb6tLqwk20YWlmNUR2CtMmno9fPQzg6LeFWBe
 +qr2/anXWBqRZu5uHzQ3Ly3LxlVXE3qmStxlttNxed9wK9wdhsQ4ijOrExXPmMI5
 IQi9tKijsGvOczcSpIwJET6Px0L/GIYHSFGXfHv4LiJCMQUX4gqY1akr+/2adqlr
 ElcOHlvWG90GHftTC+hq+KbSNmpkwJEnXLHC+HwMaYmQuhH4+U6f9AcrnzYGHjoQ
 84muuYt5CBvT/Q38qO3dUsr42oD8uiDZe2cpD5DmcAHj6U9sza4UwU2Nkd4cNvRD
 OiYRWuHQDzQhwPGbzBym1GRxRlejmPXCpvZ4XqaYODkzhEHi8UVq5AOsNhpTGWVk
 WoDZ3NtnZb9WbU93wDordhWTtHKHOLHNk4CuJLbdRvkW+sg8aFqUObSRvc6RqyU8
 1DXWMMQr9UfCDfMMbp/OCymphn0VrAaixIRIjmYc6nL5mQlyugMwij55jzyugqBH
 rN5bdcsqxAhBTD03lu0lbDn1BYIqbZFXABXeDnJNbxmY/6gD0E1HKWRvIKjxzH+t
 L19QXsOWLoVUpUIjxlOgMlb9QJLPc9m/N3yVOanO0zVrMSBmOKQ=
 =Jp6n
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/philmd-gitlab/tags/python-next-20200714' into staging

Python patches for 5.1

- Reduce race conditions on QEMUMachine::shutdown()

 1. Remove the "bare except" pattern in the existing shutdown code,
    which can mask problems and make debugging difficult.
 2. Ensure that post-shutdown cleanup is always performed, even when
    graceful termination fails.
 3. Unify cleanup paths such that no matter how the VM is terminated,
    the same functions and steps are always taken to reset the object
    state.
 4. Rewrite shutdown() such that any error encountered when attempting
    a graceful shutdown will be raised as an AbnormalShutdown exception.
    The pythonic idiom is to allow the caller to decide if this is a
    problem or not.

- Modify part of the python/qemu library to comply with:

  . mypy --strict
  . pylint
  . flake8

- Script for the TCG Continuous Benchmarking project that uses
  callgrind to dissect QEMU execution into three main phases:

  . code generation
  . JIT execution
  . helpers execution

CI jobs results:
. https://cirrus-ci.com/build/5421349961203712
. https://gitlab.com/philmd/qemu/-/pipelines/166556001
. https://travis-ci.org/github/philmd/qemu/builds/708102347

# gpg: Signature made Tue 14 Jul 2020 21:40:05 BST
# gpg:                using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full]
# Primary key fingerprint: FAAB E75E 1291 7221 DCFD  6BB2 E3E3 2C2C DEAD C0DE

* remotes/philmd-gitlab/tags/python-next-20200714:
  python/qmp.py: add QMPProtocolError
  python/qmp.py: add casts to JSON deserialization
  python/qmp.py: Do not return None from cmd_obj
  python/qmp.py: re-absorb MonitorResponseError
  iotests.py: use qemu.qmp type aliases
  python/qmp.py: Define common types
  python/machine.py: change default wait timeout to 3 seconds
  python/machine.py: re-add sigkill warning suppression
  python/machine.py: split shutdown into hard and soft flavors
  tests/acceptance: Don't test reboot on cubieboard
  tests/acceptance: wait() instead of shutdown() where appropriate
  python/machine.py: Make wait() call shutdown()
  python/machine.py: Add a configurable timeout to shutdown()
  python/machine.py: Prohibit multiple shutdown() calls
  python/machine.py: Perform early cleanup for wait() calls, too
  python/machine.py: Add _early_cleanup hook
  python/machine.py: Close QMP socket in cleanup
  python/machine.py: consolidate _post_shutdown()
  scripts/performance: Add dissect.py script

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2020-07-15 13:04:27 +01:00
..
avocado_qemu tests/acceptance: allow console interaction with specific VMs 2020-05-31 18:25:31 +02:00
boot_linux_console.py Python patches for 5.1 2020-07-15 13:04:27 +01:00
boot_linux.py tests/acceptance: skip s390x_ccw_vrtio_tcg on GitLab 2020-07-11 15:53:00 +01:00
cpu_queries.py Acceptance tests: use avocado tags for machine type 2019-12-16 11:23:19 -05:00
empty_cpu_model.py tests/acceptance: Makes linux_initrd and empty_cpu_model use QEMUMachine 2019-12-16 10:59:50 -05:00
linux_initrd.py tests/acceptance: skip LinuxInitrd 2gib with v4.16 on GitLab 2020-07-11 15:53:00 +01:00
linux_ssh_mips_malta.py tests/acceptance: wait() instead of shutdown() where appropriate 2020-07-14 22:22:22 +02:00
machine_arm_canona1100.py tests/acceptance: Add a test for the canon-a1100 machine 2020-05-21 20:00:18 +01:00
machine_arm_integratorcp.py tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer 2020-02-28 16:14:57 +00:00
machine_arm_n8x0.py tests/acceptance: Add a test for the N800 and N810 arm machines 2020-02-28 16:14:57 +00:00
machine_avr6.py tests/acceptance: Test the Arduino MEGA2560 board 2020-07-11 11:02:05 +02:00
machine_m68k_nextcube.py Acceptance tests: use avocado tags for machine type 2019-12-16 11:23:19 -05:00
machine_mips_malta.py tests/acceptance: skip multicore mips_malta tests on GitLab 2020-07-11 15:53:00 +01:00
machine_rx_gdbsim.py tests/acceptance: fix dtb path for machine_rx_gdbsim 2020-07-11 15:53:00 +01:00
machine_sparc64_sun4u.py tests/acceptance: Add a test for the sun4u sparc64 machine 2020-07-06 09:32:59 +02:00
machine_sparc_leon3.py tests/acceptance/machine_sparc_leon3: Disable HelenOS test 2020-04-06 20:03:14 +02:00
migration.py tests/acceptance/migration.py: Wait for both sides 2020-05-31 18:25:31 +02:00
pc_cpu_hotplug_props.py pc: Don't make die-id mandatory unless necessary 2019-09-03 14:39:46 -03:00
ppc_prep_40p.py tests/acceptance/ppc_prep_40p: Use mirror for ftp.software.ibm.com 2020-04-06 20:03:14 +02:00
README.rst Add functional/acceptance tests infrastructure 2018-06-15 16:10:11 -03:00
replay_kernel.py gitlab: add acceptance testing to system builds 2020-07-11 15:53:00 +01:00
version.py tests/acceptance/version: Default to -nodefaults 2020-02-07 15:12:48 +01:00
virtio_check_params.py tests/acceptance: Remove shebang header 2020-02-07 15:12:48 +01:00
virtio_version.py python/qemu: split QEMUMachine out from underneath __init__.py 2019-07-01 19:02:10 -03:00
vnc.py VNC Acceptance test: simplify test names 2019-08-28 21:10:15 -04:00
x86_cpu_model_versions.py tests/acceptance: Remove shebang header 2020-02-07 15:12:48 +01:00

============================================
Acceptance tests using the Avocado Framework
============================================

This directory contains functional tests, also known as acceptance
level tests.  They're usually higher level, and may interact with
external resources and with various guest operating systems.

For more information, please refer to ``docs/devel/testing.rst``,
section "Acceptance tests using the Avocado Framework".