[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/18] tests: introduce ability to provide hooks for migration pre
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 07/18] tests: introduce ability to provide hooks for migration precopy test |
Date: |
Thu, 21 Apr 2022 17:40:32 +0100 |
From: Daniel P. Berrangé <berrange@redhat.com>
There are alot of different scenarios to test with migration due to the
wide number of parameters and capabilities available. To enable sharing
of the basic precopy test scenario, we need to be able to set arbitrary
parameters and capabilities before the migration is initiated, but don't
want to have all this logic in the common helper function. Solve this
by defining two hooks that can be provided by the test case, one before
migration starts and one after migration finishes.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220310171821.3724080-10-berrange@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
tests/qtest/migration-test.c | 38 ++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index b62869b3af..ae40429798 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -778,6 +778,30 @@ static void test_baddest(void)
test_migrate_end(from, to, false);
}
+/*
+ * A hook that runs after the src and dst QEMUs have been
+ * created, but before the migration is started. This can
+ * be used to set migration parameters and capabilities.
+ *
+ * Returns: NULL, or a pointer to opaque state to be
+ * later passed to the TestMigrateFinishHook
+ */
+typedef void * (*TestMigrateStartHook)(QTestState *from,
+ QTestState *to);
+
+/*
+ * A hook that runs after the migration has finished,
+ * regardless of whether it succeeded or failed, but
+ * before QEMU has terminated (unless it self-terminated
+ * due to migration error)
+ *
+ * @opaque is a pointer to state previously returned
+ * by the TestMigrateStartHook if any, or NULL.
+ */
+typedef void (*TestMigrateFinishHook)(QTestState *from,
+ QTestState *to,
+ void *opaque);
+
typedef struct {
/* Optional: fine tune start parameters */
MigrateStart start;
@@ -792,11 +816,17 @@ typedef struct {
* This allows for dynamically picking a free TCP port.
*/
const char *connect_uri;
+
+ /* Optional: callback to run at start to set migration parameters */
+ TestMigrateStartHook start_hook;
+ /* Optional: callback to run at finish to cleanup */
+ TestMigrateFinishHook finish_hook;
} MigrateCommon;
static void test_precopy_common(MigrateCommon *args)
{
QTestState *from, *to;
+ void *data_hook = NULL;
if (test_migrate_start(&from, &to, args->listen_uri, &args->start)) {
return;
@@ -812,6 +842,10 @@ static void test_precopy_common(MigrateCommon *args)
/* 1GB/s */
migrate_set_parameter_int(from, "max-bandwidth", 1000000000);
+ if (args->start_hook) {
+ data_hook = args->start_hook(from, to);
+ }
+
/* Wait for the first serial output from the source */
wait_for_serial("src_serial");
@@ -837,6 +871,10 @@ static void test_precopy_common(MigrateCommon *args)
wait_for_serial("dest_serial");
wait_for_migration_complete(from);
+ if (args->finish_hook) {
+ args->finish_hook(from, to, data_hook);
+ }
+
test_migrate_end(from, to, true);
}
--
2.35.1
- [PULL 00/18] migration queue, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 02/18] tests: support QTEST_TRACE env variable, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 07/18] tests: introduce ability to provide hooks for migration precopy test,
Dr. David Alan Gilbert (git) <=
- [PULL 01/18] tests: improve error message when saving TLS PSK file fails, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 03/18] tests: print newline after QMP response in qtest logs, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 04/18] migration: fix use of TLS PSK credentials with a UNIX socket, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 06/18] tests: merge code for UNIX and TCP migration pre-copy tests, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 09/18] tests: expand the migration precopy helper to support failures, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 10/18] migration: Postpone releasing MigrationState.hostname, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 08/18] tests: switch migration FD passing test to use common precopy helper, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 05/18] tests: switch MigrateStart struct to be stack allocated, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 11/18] migration: Drop multifd tls_hostname cache, Dr. David Alan Gilbert (git), 2022/04/21
- [PULL 13/18] migration: Move migrate_allow_multifd and helpers into migration.c, Dr. David Alan Gilbert (git), 2022/04/21