[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/33] Qtest driver framework
From: |
Emanuele Giuseppe Esposito |
Subject: |
[Qemu-devel] [PATCH 00/33] Qtest driver framework |
Date: |
Mon, 13 Aug 2018 12:14:20 +0200 |
Qgraph API for the qtest driver framework
This series of patches introduce a different qtest driver
organization, viewing machines, drivers and tests as node in a
graph, each having one or multiple edges relations.
The idea is to have a framework where each test asks for a specific
driver, and the framework takes care of allocating the proper devices
required and passing the correct command line arguments to QEMU.
A node can be of four types:
- MACHINE: for example "arm/raspi2"
- DRIVER: for example "generic-sdhci"
- INTERFACE: for example "sdhci" (interface for all "-sdhci" drivers)
- TEST: for example "sdhci-test", consumes an interface and tests
the functions provided
An edge relation between two nodes (drivers or machines) X and Y can be:
- X CONSUMES Y: Y can be plugged into X
- X PRODUCES Y: X provides the interface Y
- X CONTAINS Y: Y is part of X component
Basic framework steps are the following:
- All nodes and edges are created in their respective machine/driver/test files
- The framework starts QEMU and asks for a list of available devices
and machines
- The framework walks the graph starting from the available machines and
performs a Depth First Search for tests
- Once a test is found, the path is walked again and all drivers are
allocated accordingly and the final interface is passed to the test
- The test is executed
- Unused objects are cleaned and the path discovery is continued
Depending on the QEMU binary used, only some drivers/machines will be available
and only test that are reached by them will be executed.
This work is being done as Google Summer of Code 2018 project for QEMU,
my mentors are Paolo Bonzini and Laurent Vivier.
Additional infos on the project can be found at:
https://wiki.qemu.org/Features/qtest_driver_framework
v3:
- Minor fixes regarding memory leaks and naming
Signed-off-by: Emanuele Giuseppe Esposito <address@hidden>
Emanuele Giuseppe Esposito (32):
tests: qgraph API for the qtest driver framework
tests/qgraph: rename qpci_init_pc and qpci_init_spapr functions
tests/qgraph: pci-pc driver and interface nodes
tests/qgraph: x86_64/pc machine node
tests/qgraph: sdhci driver and interface nodes
tests/qgraph: sdhci test node
tests/qgraph: arm/raspi2 machine node
tests/qgraph: pci-spapr driver and interface nodes
tests/qgraph: ppc64/pseries machine node
tests/qgraph: has_buggy_msi flag
tests/qgraph: e1000e driver and interface nodes
tests/qgraph: e1000e-test node
tests/qgraph: virtio_start_device function
tests/qgraph: virtio-pci driver and interface nodes
tests/qgraph: virtio-mmio driver and interface nodes
tests/qgraph: arm/virt machine node
tests/qgraph: virtio-serial driver and interface nodes
tests/qgraph: virtio-console test node
tests/qgraph: virtio-serial test node
tests/qgraph: virtio-9p driver and interface nodes
tests/qgraph: virtio-9p test node
tests/qgraph: virtio-balloon driver and interface nodes
tests/qgraph: virtio-balloon test node
tests/qgraph: virtio-rng driver and interface nodes
tests/qgraph: virtio-rng test node
tests/qgraph: virtio-blk driver and interface nodes
tests/qgraph: virtio-blk test node
tests/qgraph: virtio-net driver and interface nodes
tests/qgraph: virtio-net test node
tests/qgraph: virtio-scsi driver and interface nodes
tests/qgraph: virtio-scsi test node
tests/qgraph: temporarly commented vhost-user-test
Paolo Bonzini (1):
tests: virtio: separate ccw tests from libqos
configure | 2 +-
include/qemu/module.h | 2 +
tests/Makefile.include | 79 +--
tests/e1000e-test.c | 354 +++----------
tests/i440fx-test.c | 2 +-
tests/ide-test.c | 2 +-
tests/libqos/ahci.c | 2 +-
tests/libqos/e1000e.c | 262 ++++++++++
tests/libqos/e1000e.h | 53 ++
tests/libqos/libqos-pc.c | 2 +-
tests/libqos/libqos-spapr.c | 2 +-
tests/libqos/libqos.c | 2 +-
tests/libqos/libqos.h | 2 +-
tests/libqos/pci-pc.c | 86 ++--
tests/libqos/pci-pc.h | 22 +-
tests/libqos/pci-spapr.c | 119 +++--
tests/libqos/pci-spapr.h | 26 +-
tests/libqos/pci.c | 37 +-
tests/libqos/pci.h | 15 +
tests/libqos/ppc64_pseries-machine.c | 111 +++++
tests/libqos/qgraph.c | 721 +++++++++++++++++++++++++++
tests/libqos/qgraph.h | 515 +++++++++++++++++++
tests/libqos/qgraph_extra.h | 263 ++++++++++
tests/libqos/raspi2-machine.c | 82 +++
tests/libqos/sdhci.c | 163 ++++++
tests/libqos/sdhci.h | 69 +++
tests/libqos/virt-machine.c | 90 ++++
tests/libqos/virtio-9p.c | 165 ++++++
tests/libqos/virtio-9p.h | 42 ++
tests/libqos/virtio-balloon.c | 111 +++++
tests/libqos/virtio-balloon.h | 39 ++
tests/libqos/virtio-blk.c | 126 +++++
tests/libqos/virtio-blk.h | 40 ++
tests/libqos/virtio-mmio.c | 66 ++-
tests/libqos/virtio-mmio.h | 5 +-
tests/libqos/virtio-net.c | 179 +++++++
tests/libqos/virtio-net.h | 41 ++
tests/libqos/virtio-pci.c | 80 ++-
tests/libqos/virtio-pci.h | 12 +
tests/libqos/virtio-rng.c | 108 ++++
tests/libqos/virtio-rng.h | 39 ++
tests/libqos/virtio-scsi.c | 117 +++++
tests/libqos/virtio-scsi.h | 39 ++
tests/libqos/virtio-serial.c | 109 ++++
tests/libqos/virtio-serial.h | 39 ++
tests/libqos/virtio.c | 8 +
tests/libqos/virtio.h | 1 +
tests/libqos/x86_64_pc-machine.c | 110 ++++
tests/libqtest.h | 3 +
tests/q35-test.c | 4 +-
tests/qos-test.c | 481 ++++++++++++++++++
tests/rtl8139-test.c | 2 +-
tests/sdhci-test.c | 222 +++------
tests/tco-test.c | 2 +-
tests/test-qgraph.c | 446 +++++++++++++++++
tests/usb-hcd-ehci-test.c | 2 +-
tests/vhost-user-test.c | 6 +-
tests/virtio-9p-test.c | 221 +++-----
tests/virtio-balloon-test.c | 22 +-
tests/virtio-blk-test.c | 473 +++++++-----------
tests/virtio-ccw-test.c | 121 +++++
tests/virtio-console-test.c | 30 +-
tests/virtio-net-test.c | 163 ++----
tests/virtio-rng-test.c | 25 +-
tests/virtio-scsi-test.c | 155 +++---
tests/virtio-serial-test.c | 27 +-
66 files changed, 5674 insertions(+), 1292 deletions(-)
create mode 100644 tests/libqos/e1000e.c
create mode 100644 tests/libqos/e1000e.h
create mode 100644 tests/libqos/ppc64_pseries-machine.c
create mode 100644 tests/libqos/qgraph.c
create mode 100644 tests/libqos/qgraph.h
create mode 100644 tests/libqos/qgraph_extra.h
create mode 100644 tests/libqos/raspi2-machine.c
create mode 100644 tests/libqos/sdhci.c
create mode 100644 tests/libqos/sdhci.h
create mode 100644 tests/libqos/virt-machine.c
create mode 100644 tests/libqos/virtio-9p.c
create mode 100644 tests/libqos/virtio-9p.h
create mode 100644 tests/libqos/virtio-balloon.c
create mode 100644 tests/libqos/virtio-balloon.h
create mode 100644 tests/libqos/virtio-blk.c
create mode 100644 tests/libqos/virtio-blk.h
create mode 100644 tests/libqos/virtio-net.c
create mode 100644 tests/libqos/virtio-net.h
create mode 100644 tests/libqos/virtio-rng.c
create mode 100644 tests/libqos/virtio-rng.h
create mode 100644 tests/libqos/virtio-scsi.c
create mode 100644 tests/libqos/virtio-scsi.h
create mode 100644 tests/libqos/virtio-serial.c
create mode 100644 tests/libqos/virtio-serial.h
create mode 100644 tests/libqos/x86_64_pc-machine.c
create mode 100644 tests/qos-test.c
create mode 100644 tests/test-qgraph.c
create mode 100644 tests/virtio-ccw-test.c
--
2.17.1
- [Qemu-devel] [PATCH 00/33] Qtest driver framework,
Emanuele Giuseppe Esposito <=
- [Qemu-devel] [PATCH 02/33] tests/qgraph: rename qpci_init_pc and qpci_init_spapr functions, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 03/33] tests/qgraph: pci-pc driver and interface nodes, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 04/33] tests/qgraph: x86_64/pc machine node, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 05/33] tests/qgraph: sdhci driver and interface nodes, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 06/33] tests/qgraph: sdhci test node, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 07/33] tests/qgraph: arm/raspi2 machine node, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 08/33] tests/qgraph: pci-spapr driver and interface nodes, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 09/33] tests/qgraph: ppc64/pseries machine node, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 01/33] tests: qgraph API for the qtest driver framework, Emanuele Giuseppe Esposito, 2018/08/13
- [Qemu-devel] [PATCH 10/33] tests/qgraph: has_buggy_msi flag, Emanuele Giuseppe Esposito, 2018/08/13