Hi This series do a lot of much neededs cleanups and fixes to migration-test:
- We make source and target machines coherent/constent - We make all command line options consistent - We split test_migrate_start() and test_migrate_end() into: * guest_start() from from and to. It is the same function, just defines the basic options. I am open to renaming it to guest_define() or anything else that people can came with. * guest_destroy(), you have guessed it, right? * guest_realize() after guest_start() and adding any options we need, we just create the guest. We use the same function from source and target, making inconsistencies disapear. - uri: right now it is a mess, we can have: * uri created with migration_start() * or listen_uri * or connect_uri * or by hand now we just setup to->uri, and we get the migrate uri automatically from there. - we were creating bootfile for each migration test. Change the code so we only create it once for the whole migration test. - Introduce GuestState. Using QTestState directly means that we can add state by guest, making it abuse local variables. Now we move all guest state into GuestState. - Apart from test found by Fabiano, we had another problems with multifd + cancel: * We didn't wait for "to" guest to finish before we launch second target guest "to2". We fixed it by destroying "to" before launching "to2". * We reused "dest_serial" filename from "to" and "to2", so in a very loaded host, it could be that we contact with the wrong vm, and we never end. * I change the code so the serial filename is dependent on guest name, that made changing the interface: wait_for_serial("dest_serial") to wait_for_relial(to) (or to2 or ...) so we can't fail. - we move the global event variables to GuestState, so no more got_src_stop or got_dst_resume, we just check who->got_event - create a function from migrate-incoming, so now we do: migrate_incoming(uri) and it does what we want/expect. - vcpu_dirty_limit is not related to migration at all, just is easier to write with migration infrastructure. Move all useful functions to migration-helpers.[ch] and split the test into vcpu-dirty-limit-test.c. I think that we can declare that test slow. - Now that guest_create/destry exist, we can "reuse" them in vcpu_dirty_limit test. - The removal of files, like "migsocket" was flaky at least, i.e. not always removed. "migsocket-recover" was not even tried to remove. New code just remove them by default. - MigrationStart is gone, instead of creating that flags, I just call functions that do that function. - if no uri is given for a target guest, it launches with -incoming defer, that should be the default. ToDo: - Tests shouldn't really use QMP, if we need QMP, we should hide it behind a c function. Almost everything is there now, except things like "reuse". - I think we should split auto-converge test: * we are not testing migration there, we are testing vcpu slowdown * the test is really slow, see documentation why we can't make it much faster. - I still need to make test faster with stoping switchover. Please, review. Juan Quintela (42): migration-test: Be consistent for ppc migration-test: Make ignore_stderr regular with other options migration-test: simplify shmem_opts handling migration-test: Make machine_opts regular with other options migration-test: Create arch_opts migration-test: machine_opts is really arch specific migration-test: Create kvm_opts migration-test: bootpath is the same for all tests and for all archs migration-test: Add bootfile_create/delete() functions migration-test: dirtylimit checks for x86_64 arch before migration-test: Update test_ignore_shared to use args migration-test: Enable back ignore-shared test migration-test: Check for shared memory like for everything else migration-test: test_migrate_start() always return 0 migration-test: migrate_postcopy_prepare() always return 0 migration-test: Create do_migrate() migration-test: Introduce GuestState migration-test: Create guest before calling do_test_validate_uuid() migration-test: Create guest before calling test_precopy_common() migration-test: Create guest before calling test_postcopy_common() migration-test: Move common guest code to guest_create() migration-test: Create guest_use_dirty_log() migration-test: Move serial to GuestState migration-test: Re-enable multifd_cancel test migration-test: We were not waiting for "target" to finish migration-test: create guest_use_shmem() migration-test: Create guest_extra_opts() migration-test: Create guest_hide_stderr() migration-test: Create the migration unix socket by guest migration-test: Hooks also need GuestState migration-test: Preffer to->uri to uri parameter for migration migration-test: Create guest_set_uri() migration-test: Remove connect_uri migration-test: Use new schema for all tests that use unix sockets migration-test: Set uri for tcp tests with guest_set_uri() migration-test: Remove unused listen_uri migration-test: Create get_event GuestState variable migration-test: Create guest_realize() migration-test: Unfold test_migrate_end() into three functions migration-test: Create migrate_incoming() function migration-test: Move functions to migration-helpers.c migration-test: Split vcpu-dirty-limit-test MAINTAINERS | 3 +- tests/qtest/migration-helpers.h | 39 + tests/qtest/migration-helpers.c | 242 +++++ tests/qtest/migration-test.c | 1525 +++++++++------------------ tests/qtest/vcpu-dirty-limit-test.c | 310 ++++++ tests/qtest/meson.build | 5 +- 6 files changed, 1113 insertions(+), 1011 deletions(-) create mode 100644 tests/qtest/vcpu-dirty-limit-test.c base-commit: 45ae97993a75f975f1a01d25564724c7e10a543f prerequisite-patch-id: f95418b6f47019ec82d47aac8ba5247775f503a3 -- 2.40.1