mirror of https://github.com/xemu-project/xemu.git
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;
|
||||
} 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,
|
||||
const char *uri, MigrateStart *args)
|
||||
{
|
||||
|
@ -1120,78 +1192,6 @@ 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;
|
||||
|
||||
/* 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)
|
||||
{
|
||||
QTestState *from, *to;
|
||||
|
|
Loading…
Reference in New Issue