tests: Move MigrateCommon upper
So that it can be used in postcopy tests too soon. Reviewed-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20220707185522.27638-1-peterx@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
82b54ef4c1
commit
312e9dd08c
|
@ -503,6 +503,78 @@ typedef struct {
|
||||||
const char *opts_target;
|
const char *opts_target;
|
||||||
} MigrateStart;
|
} MigrateStart;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
/* Required: the URI for the dst QEMU to listen on */
|
||||||
|
const char *listen_uri;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optional: the URI for the src QEMU to connect to
|
||||||
|
* If NULL, then it will query the dst QEMU for its actual
|
||||||
|
* listening address and use that as the connect address.
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optional: normally we expect the migration process to complete.
|
||||||
|
*
|
||||||
|
* There can be a variety of reasons and stages in which failure
|
||||||
|
* can happen during tests.
|
||||||
|
*
|
||||||
|
* If a failure is expected to happen at time of establishing
|
||||||
|
* the connection, then MIG_TEST_FAIL will indicate that the dst
|
||||||
|
* QEMU is expected to stay running and accept future migration
|
||||||
|
* connections.
|
||||||
|
*
|
||||||
|
* If a failure is expected to happen while processing the
|
||||||
|
* migration stream, then MIG_TEST_FAIL_DEST_QUIT_ERR will indicate
|
||||||
|
* that the dst QEMU is expected to quit with non-zero exit status
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
/* This test should succeed, the default */
|
||||||
|
MIG_TEST_SUCCEED = 0,
|
||||||
|
/* This test should fail, dest qemu should keep alive */
|
||||||
|
MIG_TEST_FAIL,
|
||||||
|
/* This test should fail, dest qemu should fail with abnormal status */
|
||||||
|
MIG_TEST_FAIL_DEST_QUIT_ERR,
|
||||||
|
} result;
|
||||||
|
|
||||||
|
/* Optional: set number of migration passes to wait for */
|
||||||
|
unsigned int iterations;
|
||||||
|
} MigrateCommon;
|
||||||
|
|
||||||
static int test_migrate_start(QTestState **from, QTestState **to,
|
static int test_migrate_start(QTestState **from, QTestState **to,
|
||||||
const char *uri, MigrateStart *args)
|
const char *uri, MigrateStart *args)
|
||||||
{
|
{
|
||||||
|
@ -1120,78 +1192,6 @@ static void test_baddest(void)
|
||||||
test_migrate_end(from, to, false);
|
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;
|
|
||||||
|
|
||||||
/* Required: the URI for the dst QEMU to listen on */
|
|
||||||
const char *listen_uri;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Optional: the URI for the src QEMU to connect to
|
|
||||||
* If NULL, then it will query the dst QEMU for its actual
|
|
||||||
* listening address and use that as the connect address.
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Optional: normally we expect the migration process to complete.
|
|
||||||
*
|
|
||||||
* There can be a variety of reasons and stages in which failure
|
|
||||||
* can happen during tests.
|
|
||||||
*
|
|
||||||
* If a failure is expected to happen at time of establishing
|
|
||||||
* the connection, then MIG_TEST_FAIL will indicate that the dst
|
|
||||||
* QEMU is expected to stay running and accept future migration
|
|
||||||
* connections.
|
|
||||||
*
|
|
||||||
* If a failure is expected to happen while processing the
|
|
||||||
* migration stream, then MIG_TEST_FAIL_DEST_QUIT_ERR will indicate
|
|
||||||
* that the dst QEMU is expected to quit with non-zero exit status
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
/* This test should succeed, the default */
|
|
||||||
MIG_TEST_SUCCEED = 0,
|
|
||||||
/* This test should fail, dest qemu should keep alive */
|
|
||||||
MIG_TEST_FAIL,
|
|
||||||
/* This test should fail, dest qemu should fail with abnormal status */
|
|
||||||
MIG_TEST_FAIL_DEST_QUIT_ERR,
|
|
||||||
} result;
|
|
||||||
|
|
||||||
/* Optional: set number of migration passes to wait for */
|
|
||||||
unsigned int iterations;
|
|
||||||
} MigrateCommon;
|
|
||||||
|
|
||||||
static void test_precopy_common(MigrateCommon *args)
|
static void test_precopy_common(MigrateCommon *args)
|
||||||
{
|
{
|
||||||
QTestState *from, *to;
|
QTestState *from, *to;
|
||||||
|
|
Loading…
Reference in New Issue