As promised, here are the changes to move most of the migration tests into a separate check-migration target that is intended to be used by migration maintainers and contributors.
A few tests will still be kept in another check-migration-quick target, that will run as part of make check by default. Those are there to catch changes in generic code that might affect migration and the rare device code change that affects migration ("rare" because migration-test runs with only default devices). The are two main reasons for this: - Reduce the time of the common 'make check' invocation. migration-test is notoriously wasteful in that it runs a migration for every test. We don't yet have a comprehensive coverage analysis nor the mechanisms for testing isolated parts of the code without resorting to a full migration. While the migration tests don't account for that much of make check time in a parallel run (only about 30s, see table below), I'd like to be able to write tests without encumbering every single make check run. - Avoid breaking a developer's make check invocation and also CI when only non-migration changes are present. The migration tests are subject to races in the code that tend to be quite intermittent. Ideally, if a code change does not touch migration, it should not break migration-test. make -j16 before after migration suite included -------------------------------------------------------------------------- check 2m28.923s 1m56.178s migration-quick check SPEED=slow 6m07.854s 5m59.982s migration check SPEED=thorough 10m17.102s 10m02.416s migration check-qtest 2m07.827s 1m24.065s none check-qtest SPEED=slow 5m06.149s 4m17.897s none check-qtest SPEED=thorough 5m7.601s 4m18.135s none check-migration 3m41.927s migration check-migration-quick 0m15.592s migration-quick -------------------------------------------------------------------------- Note that this series could very well be just patch 3 without any new target, but then to be able to run the full set of migration tests we'd need to also run all other slow tests from a set, either check or check-qtest and that would add at least 2 minutest to the migration run. CI run: https://gitlab.com/farosas/qemu/-/pipelines/1499208871 Fabiano Rosas (4): tests/qtest: Add check-migration docs: Add migration tests documentation tests/qtest/migration: Move tests into g_test_slow() ci: Add check-migration-quick to the clang job .gitlab-ci.d/buildtest.yml | 2 +- docs/devel/testing/index.rst | 1 + docs/devel/testing/main.rst | 13 ++ docs/devel/testing/migration.rst | 275 +++++++++++++++++++++++++++++++ docs/devel/testing/qtest.rst | 1 + meson.build | 6 +- tests/Makefile.include | 2 + tests/qtest/meson.build | 47 +++++- tests/qtest/migration-helpers.c | 9 + tests/qtest/migration-helpers.h | 16 ++ tests/qtest/migration-test.c | 67 ++++---- 11 files changed, 392 insertions(+), 47 deletions(-) create mode 100644 docs/devel/testing/migration.rst base-commit: 05adb38839ba656c7383a548b460d95c91e2febe -- 2.35.3