[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/12] 9pfs: add tests using local fs driver
From: |
Christian Schoenebeck |
Subject: |
[PATCH 00/12] 9pfs: add tests using local fs driver |
Date: |
Sun, 27 Sep 2020 12:43:56 +0200 |
The currently existing 9pfs test cases are all solely using the 9pfs 'synth'
fileystem driver, which is a very simple and purely simulated (in RAM only)
filesystem. There are issues though where the 'synth' fs driver is not
sufficient. For example the following two bugs need test cases running the
9pfs 'local' fs driver:
https://bugs.launchpad.net/qemu/+bug/1336794
https://bugs.launchpad.net/qemu/+bug/1877384
This patch set for that reason introduces 9pfs test cases using the 9pfs
'local' filesystem driver along to the already existing tests on 'synth'.
It consists of 3 parts:
1. Mandatory qos patches 1 and 2 lay the ground by removing a limitation of
the qtest/qos subsystem: support for more than one device using the same
(official) QEMU device name.
2. Optional qos patches 3 to 6 were used for debugging the qtest framework.
I found them very useful to get insight how the qos graph is built, how
the generated QEMU commands looks like, and what environemnt variables are
already available in qtests. I thought they might helpful for other people
as well, either in suggested or some modified form. Especially as it's not
obvious sometimes why certain tests are simply ignored by the qtest
framework (e.g. because of a missing link in qos path from test node to
qos root node, or certain devices been auto marked as 'unavailable' after
QMP negotiation with QEMU). I introduced several new QTEST_* environment
variables for the individual debugging aspects; maybe they could simply
use one and the same variable like QTEST_DEBUG instead.
Note: patch 3 uses coloured output to mark the individual graph nodes as
either available or unavailable. It does not check for tty color support
right now. I'm not sure if there is already some QEMU util function that
could be used for that check.
3. Patches 7 to 12 actually introduce 9pfs 'local' test cases using the qtest
framework. They only work in conjunction with qos patches 1 and 2. These
'local' tests are adding a test directory 'qtest-9p-local' inside the
current working directory (using get_current_dir()), which is typically the
build directory, before running the tests. That test directory is
automatically recreated next time the test suite is run again, to ensure
the 9pfs 'local' tests always run consistently on a clean test directory.
The test directory is used by the 'local' driver as root of its export
path. So it will add/read/write/delete real files and directories inside
that test directory.
Note: I was adding a bunch of basic util functions like split(),
concat_path() and strpr(). I am not sure if there are already public QEMU
util functions that I could instead of them.
Christian Schoenebeck (12):
tests/qtest/qgraph: add qemu_name to QOSGraphNode
tests/qtest/qgraph: add qos_node_create_driver_named()
tests/qtest/qos: add qos_dump_graph()
tests/qtest/qos-test: new QTEST_DUMP_GRAPH environment variable
tests/qtest/qos-test: add QTEST_DUMP_ENV environment variable
tests/qtest/qos-test: add environment variable QTEST_DEBUG
test/9pfs: change export tag name to qtest-synth
tests/9pfs: refactor test names and test devices
tests/9pfs: introduce local tests
tests/9pfs: wipe local 9pfs test directory
tests/9pfs: add virtio_9p_test_path()
tests/9pfs: add local Tmkdir test
tests/qtest/libqos/qgraph.c | 108 ++++++++++++++-
tests/qtest/libqos/qgraph.h | 36 +++++
tests/qtest/libqos/qgraph_internal.h | 1 +
tests/qtest/libqos/virtio-9p.c | 147 ++++++++++++++++++---
tests/qtest/libqos/virtio-9p.h | 8 +-
tests/qtest/qos-test.c | 15 ++-
tests/qtest/virtio-9p-test.c | 188 ++++++++++++++++++++++++---
7 files changed, 463 insertions(+), 40 deletions(-)
--
2.20.1
- [PATCH 00/12] 9pfs: add tests using local fs driver,
Christian Schoenebeck <=
- [PATCH 05/12] tests/qtest/qos-test: add QTEST_DUMP_ENV environment variable, Christian Schoenebeck, 2020/09/27
- [PATCH 12/12] tests/9pfs: add local Tmkdir test, Christian Schoenebeck, 2020/09/27
- [PATCH 06/12] tests/qtest/qos-test: add environment variable QTEST_DEBUG, Christian Schoenebeck, 2020/09/27
- [PATCH 07/12] test/9pfs: change export tag name to qtest-synth, Christian Schoenebeck, 2020/09/27
- [PATCH 04/12] tests/qtest/qos-test: new QTEST_DUMP_GRAPH environment variable, Christian Schoenebeck, 2020/09/27
- [PATCH 02/12] tests/qtest/qgraph: add qos_node_create_driver_named(), Christian Schoenebeck, 2020/09/27
- [PATCH 01/12] tests/qtest/qgraph: add qemu_name to QOSGraphNode, Christian Schoenebeck, 2020/09/27
- [PATCH 09/12] tests/9pfs: introduce local tests, Christian Schoenebeck, 2020/09/27