mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
tests/qtest/migration: Split postcopy tests
Split the next group of tests from migration-test.c, the postcopy tests. This is another well-defined group of tests and postcopy is a unique enough feature that it deserves it's own file. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
932f74f3fe
commit
5e87cf322f
4 changed files with 109 additions and 77 deletions
|
@ -338,6 +338,7 @@ migration_files = [files(
|
||||||
'migration/migration-qmp.c',
|
'migration/migration-qmp.c',
|
||||||
'migration/migration-util.c',
|
'migration/migration-util.c',
|
||||||
'migration/compression-tests.c',
|
'migration/compression-tests.c',
|
||||||
|
'migration/postcopy-tests.c',
|
||||||
)]
|
)]
|
||||||
|
|
||||||
migration_tls_files = []
|
migration_tls_files = []
|
||||||
|
|
|
@ -43,65 +43,6 @@
|
||||||
|
|
||||||
static char *tmpfs;
|
static char *tmpfs;
|
||||||
|
|
||||||
static void test_postcopy(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = { };
|
|
||||||
|
|
||||||
test_postcopy_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_suspend(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.start.suspend_me = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_postcopy_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_preempt(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.postcopy_preempt = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_postcopy_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_recovery(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = { };
|
|
||||||
|
|
||||||
test_postcopy_recovery_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_recovery_fail_handshake(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_RECOVERY,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_postcopy_recovery_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_recovery_fail_reconnect(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_CHANNEL_ESTABLISH,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_postcopy_recovery_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_postcopy_preempt_recovery(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.postcopy_preempt = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_postcopy_recovery_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_baddest(void)
|
static void test_baddest(void)
|
||||||
{
|
{
|
||||||
MigrateStart args = {
|
MigrateStart args = {
|
||||||
|
@ -1558,6 +1499,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
migration_test_add_tls(env);
|
migration_test_add_tls(env);
|
||||||
migration_test_add_compression(env);
|
migration_test_add_compression(env);
|
||||||
|
migration_test_add_postcopy(env);
|
||||||
|
|
||||||
migration_test_add("/migration/bad_dest", test_baddest);
|
migration_test_add("/migration/bad_dest", test_baddest);
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
@ -1571,24 +1513,6 @@ int main(int argc, char **argv)
|
||||||
test_precopy_unix_suspend_notlive);
|
test_precopy_unix_suspend_notlive);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env->has_uffd) {
|
|
||||||
migration_test_add("/migration/postcopy/plain", test_postcopy);
|
|
||||||
migration_test_add("/migration/postcopy/recovery/plain",
|
|
||||||
test_postcopy_recovery);
|
|
||||||
migration_test_add("/migration/postcopy/preempt/plain",
|
|
||||||
test_postcopy_preempt);
|
|
||||||
migration_test_add("/migration/postcopy/preempt/recovery/plain",
|
|
||||||
test_postcopy_preempt_recovery);
|
|
||||||
migration_test_add("/migration/postcopy/recovery/double-failures/handshake",
|
|
||||||
test_postcopy_recovery_fail_handshake);
|
|
||||||
migration_test_add("/migration/postcopy/recovery/double-failures/reconnect",
|
|
||||||
test_postcopy_recovery_fail_reconnect);
|
|
||||||
if (env->is_x86) {
|
|
||||||
migration_test_add("/migration/postcopy/suspend",
|
|
||||||
test_postcopy_suspend);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
migration_test_add("/migration/precopy/unix/plain",
|
migration_test_add("/migration/precopy/unix/plain",
|
||||||
test_precopy_unix_plain);
|
test_precopy_unix_plain);
|
||||||
migration_test_add("/migration/precopy/file",
|
migration_test_add("/migration/precopy/file",
|
||||||
|
|
|
@ -221,5 +221,6 @@ void migration_test_add_tls(MigrationTestEnv *env);
|
||||||
static inline void migration_test_add_tls(MigrationTestEnv *env) {};
|
static inline void migration_test_add_tls(MigrationTestEnv *env) {};
|
||||||
#endif
|
#endif
|
||||||
void migration_test_add_compression(MigrationTestEnv *env);
|
void migration_test_add_compression(MigrationTestEnv *env);
|
||||||
|
void migration_test_add_postcopy(MigrationTestEnv *env);
|
||||||
|
|
||||||
#endif /* TEST_FRAMEWORK_H */
|
#endif /* TEST_FRAMEWORK_H */
|
||||||
|
|
106
tests/qtest/migration/postcopy-tests.c
Normal file
106
tests/qtest/migration/postcopy-tests.c
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* QTest testcases for postcopy migration
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016-2018 Red Hat, Inc. and/or its affiliates
|
||||||
|
* based on the vhost-user-test.c that is:
|
||||||
|
* Copyright (c) 2014 Virtual Open Systems Sarl.
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
* See the COPYING file in the top-level directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "libqtest.h"
|
||||||
|
#include "migration/framework.h"
|
||||||
|
#include "migration/migration-util.h"
|
||||||
|
#include "qapi/qmp/qlist.h"
|
||||||
|
#include "qemu/module.h"
|
||||||
|
#include "qemu/option.h"
|
||||||
|
#include "qemu/range.h"
|
||||||
|
#include "qemu/sockets.h"
|
||||||
|
|
||||||
|
static void test_postcopy(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = { };
|
||||||
|
|
||||||
|
test_postcopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_suspend(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.start.suspend_me = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_postcopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_preempt(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.postcopy_preempt = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_postcopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_recovery(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = { };
|
||||||
|
|
||||||
|
test_postcopy_recovery_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_recovery_fail_handshake(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_RECOVERY,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_postcopy_recovery_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_recovery_fail_reconnect(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_CHANNEL_ESTABLISH,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_postcopy_recovery_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_postcopy_preempt_recovery(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.postcopy_preempt = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_postcopy_recovery_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void migration_test_add_postcopy(MigrationTestEnv *env)
|
||||||
|
{
|
||||||
|
if (env->has_uffd) {
|
||||||
|
migration_test_add("/migration/postcopy/plain", test_postcopy);
|
||||||
|
migration_test_add("/migration/postcopy/recovery/plain",
|
||||||
|
test_postcopy_recovery);
|
||||||
|
migration_test_add("/migration/postcopy/preempt/plain",
|
||||||
|
test_postcopy_preempt);
|
||||||
|
migration_test_add("/migration/postcopy/preempt/recovery/plain",
|
||||||
|
test_postcopy_preempt_recovery);
|
||||||
|
|
||||||
|
migration_test_add(
|
||||||
|
"/migration/postcopy/recovery/double-failures/handshake",
|
||||||
|
test_postcopy_recovery_fail_handshake);
|
||||||
|
|
||||||
|
migration_test_add(
|
||||||
|
"/migration/postcopy/recovery/double-failures/reconnect",
|
||||||
|
test_postcopy_recovery_fail_reconnect);
|
||||||
|
|
||||||
|
if (env->is_x86) {
|
||||||
|
migration_test_add("/migration/postcopy/suspend",
|
||||||
|
test_postcopy_suspend);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue