mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
tests/qtest/migration: Split compression tests from migration-test.c
Continuing the split of groups of tests from migration-test.c, split the compression tests into their own file. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
979ee2a76f
commit
932f74f3fe
4 changed files with 242 additions and 160 deletions
|
@ -337,6 +337,7 @@ migration_files = [files(
|
||||||
'migration/framework.c',
|
'migration/framework.c',
|
||||||
'migration/migration-qmp.c',
|
'migration/migration-qmp.c',
|
||||||
'migration/migration-util.c',
|
'migration/migration-util.c',
|
||||||
|
'migration/compression-tests.c',
|
||||||
)]
|
)]
|
||||||
|
|
||||||
migration_tls_files = []
|
migration_tls_files = []
|
||||||
|
|
|
@ -274,36 +274,6 @@ static void test_ignore_shared(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_xbzrle(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
migrate_set_parameter_int(from, "xbzrle-cache-size", 33554432);
|
|
||||||
|
|
||||||
migrate_set_capability(from, "xbzrle", true);
|
|
||||||
migrate_set_capability(to, "xbzrle", true);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_precopy_unix_xbzrle(void)
|
|
||||||
{
|
|
||||||
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
|
||||||
MigrateCommon args = {
|
|
||||||
.connect_uri = uri,
|
|
||||||
.listen_uri = uri,
|
|
||||||
.start_hook = migrate_hook_start_xbzrle,
|
|
||||||
.iterations = 2,
|
|
||||||
/*
|
|
||||||
* XBZRLE needs pages to be modified when doing the 2nd+ round
|
|
||||||
* iteration to have real data pushed to the stream.
|
|
||||||
*/
|
|
||||||
.live = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_precopy_file(void)
|
static void test_precopy_file(void)
|
||||||
{
|
{
|
||||||
g_autofree char *uri = g_strdup_printf("file:%s/%s", tmpfs,
|
g_autofree char *uri = g_strdup_printf("file:%s/%s", tmpfs,
|
||||||
|
@ -1016,61 +986,6 @@ migrate_hook_start_precopy_tcp_multifd_no_zero_page(QTestState *from,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_precopy_tcp_multifd_zlib(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Overloading this test to also check that set_parameter does not error.
|
|
||||||
* This is also done in the tests for the other compression methods.
|
|
||||||
*/
|
|
||||||
migrate_set_parameter_int(from, "multifd-zlib-level", 2);
|
|
||||||
migrate_set_parameter_int(to, "multifd-zlib-level", 2);
|
|
||||||
|
|
||||||
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "zlib");
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_ZSTD
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_precopy_tcp_multifd_zstd(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
migrate_set_parameter_int(from, "multifd-zstd-level", 2);
|
|
||||||
migrate_set_parameter_int(to, "multifd-zstd-level", 2);
|
|
||||||
|
|
||||||
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "zstd");
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_ZSTD */
|
|
||||||
|
|
||||||
#ifdef CONFIG_QATZIP
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_precopy_tcp_multifd_qatzip(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
migrate_set_parameter_int(from, "multifd-qatzip-level", 2);
|
|
||||||
migrate_set_parameter_int(to, "multifd-qatzip-level", 2);
|
|
||||||
|
|
||||||
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "qatzip");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_QPL
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_precopy_tcp_multifd_qpl(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "qpl");
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_QPL */
|
|
||||||
#ifdef CONFIG_UADK
|
|
||||||
static void *
|
|
||||||
migrate_hook_start_precopy_tcp_multifd_uadk(QTestState *from,
|
|
||||||
QTestState *to)
|
|
||||||
{
|
|
||||||
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "uadk");
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_UADK */
|
|
||||||
|
|
||||||
static void test_multifd_tcp_uri_none(void)
|
static void test_multifd_tcp_uri_none(void)
|
||||||
{
|
{
|
||||||
MigrateCommon args = {
|
MigrateCommon args = {
|
||||||
|
@ -1131,59 +1046,6 @@ static void test_multifd_tcp_channels_none(void)
|
||||||
test_precopy_common(&args);
|
test_precopy_common(&args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_multifd_tcp_zlib(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.listen_uri = "defer",
|
|
||||||
.start_hook = migrate_hook_start_precopy_tcp_multifd_zlib,
|
|
||||||
};
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_ZSTD
|
|
||||||
static void test_multifd_tcp_zstd(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.listen_uri = "defer",
|
|
||||||
.start_hook = migrate_hook_start_precopy_tcp_multifd_zstd,
|
|
||||||
};
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_QATZIP
|
|
||||||
static void test_multifd_tcp_qatzip(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.listen_uri = "defer",
|
|
||||||
.start_hook = migrate_hook_start_precopy_tcp_multifd_qatzip,
|
|
||||||
};
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_QPL
|
|
||||||
static void test_multifd_tcp_qpl(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.listen_uri = "defer",
|
|
||||||
.start_hook = migrate_hook_start_precopy_tcp_multifd_qpl,
|
|
||||||
};
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_UADK
|
|
||||||
static void test_multifd_tcp_uadk(void)
|
|
||||||
{
|
|
||||||
MigrateCommon args = {
|
|
||||||
.listen_uri = "defer",
|
|
||||||
.start_hook = migrate_hook_start_precopy_tcp_multifd_uadk,
|
|
||||||
};
|
|
||||||
test_precopy_common(&args);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This test does:
|
* This test does:
|
||||||
* source target
|
* source target
|
||||||
|
@ -1695,6 +1557,7 @@ int main(int argc, char **argv)
|
||||||
tmpfs = env->tmpfs;
|
tmpfs = env->tmpfs;
|
||||||
|
|
||||||
migration_test_add_tls(env);
|
migration_test_add_tls(env);
|
||||||
|
migration_test_add_compression(env);
|
||||||
|
|
||||||
migration_test_add("/migration/bad_dest", test_baddest);
|
migration_test_add("/migration/bad_dest", test_baddest);
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
@ -1728,10 +1591,6 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
migration_test_add("/migration/precopy/unix/plain",
|
migration_test_add("/migration/precopy/unix/plain",
|
||||||
test_precopy_unix_plain);
|
test_precopy_unix_plain);
|
||||||
if (g_test_slow()) {
|
|
||||||
migration_test_add("/migration/precopy/unix/xbzrle",
|
|
||||||
test_precopy_unix_xbzrle);
|
|
||||||
}
|
|
||||||
migration_test_add("/migration/precopy/file",
|
migration_test_add("/migration/precopy/file",
|
||||||
test_precopy_file);
|
test_precopy_file);
|
||||||
migration_test_add("/migration/precopy/file/offset",
|
migration_test_add("/migration/precopy/file/offset",
|
||||||
|
@ -1816,24 +1675,6 @@ int main(int argc, char **argv)
|
||||||
test_multifd_tcp_no_zero_page);
|
test_multifd_tcp_no_zero_page);
|
||||||
migration_test_add("/migration/multifd/tcp/plain/cancel",
|
migration_test_add("/migration/multifd/tcp/plain/cancel",
|
||||||
test_multifd_tcp_cancel);
|
test_multifd_tcp_cancel);
|
||||||
migration_test_add("/migration/multifd/tcp/plain/zlib",
|
|
||||||
test_multifd_tcp_zlib);
|
|
||||||
#ifdef CONFIG_ZSTD
|
|
||||||
migration_test_add("/migration/multifd/tcp/plain/zstd",
|
|
||||||
test_multifd_tcp_zstd);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_QATZIP
|
|
||||||
migration_test_add("/migration/multifd/tcp/plain/qatzip",
|
|
||||||
test_multifd_tcp_qatzip);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_QPL
|
|
||||||
migration_test_add("/migration/multifd/tcp/plain/qpl",
|
|
||||||
test_multifd_tcp_qpl);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_UADK
|
|
||||||
migration_test_add("/migration/multifd/tcp/plain/uadk",
|
|
||||||
test_multifd_tcp_uadk);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (g_str_equal(env->arch, "x86_64") &&
|
if (g_str_equal(env->arch, "x86_64") &&
|
||||||
env->has_kvm && env->has_dirty_ring) {
|
env->has_kvm && env->has_dirty_ring) {
|
||||||
|
|
239
tests/qtest/migration/compression-tests.c
Normal file
239
tests/qtest/migration/compression-tests.c
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
/*
|
||||||
|
* QTest testcases for migration compression
|
||||||
|
*
|
||||||
|
* 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-qmp.h"
|
||||||
|
#include "migration/migration-util.h"
|
||||||
|
#include "qemu/module.h"
|
||||||
|
|
||||||
|
|
||||||
|
static char *tmpfs;
|
||||||
|
|
||||||
|
#ifdef CONFIG_ZSTD
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_zstd(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
migrate_set_parameter_int(from, "multifd-zstd-level", 2);
|
||||||
|
migrate_set_parameter_int(to, "multifd-zstd-level", 2);
|
||||||
|
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "zstd");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_zstd(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_zstd,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_ZSTD */
|
||||||
|
|
||||||
|
#ifdef CONFIG_QATZIP
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_qatzip(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
migrate_set_parameter_int(from, "multifd-qatzip-level", 2);
|
||||||
|
migrate_set_parameter_int(to, "multifd-qatzip-level", 2);
|
||||||
|
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "qatzip");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_qatzip(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_qatzip,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_QPL
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_qpl(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "qpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_qpl(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_qpl,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_QPL */
|
||||||
|
|
||||||
|
#ifdef CONFIG_UADK
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_uadk(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "uadk");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_xbzrle(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
migrate_set_parameter_int(from, "xbzrle-cache-size", 33554432);
|
||||||
|
|
||||||
|
migrate_set_capability(from, "xbzrle", true);
|
||||||
|
migrate_set_capability(to, "xbzrle", true);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_precopy_unix_xbzrle(void)
|
||||||
|
{
|
||||||
|
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
||||||
|
MigrateCommon args = {
|
||||||
|
.connect_uri = uri,
|
||||||
|
.listen_uri = uri,
|
||||||
|
.start_hook = migrate_hook_start_xbzrle,
|
||||||
|
.iterations = 2,
|
||||||
|
/*
|
||||||
|
* XBZRLE needs pages to be modified when doing the 2nd+ round
|
||||||
|
* iteration to have real data pushed to the stream.
|
||||||
|
*/
|
||||||
|
.live = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_zlib(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Overloading this test to also check that set_parameter does not error.
|
||||||
|
* This is also done in the tests for the other compression methods.
|
||||||
|
*/
|
||||||
|
migrate_set_parameter_int(from, "multifd-zlib-level", 2);
|
||||||
|
migrate_set_parameter_int(to, "multifd-zlib-level", 2);
|
||||||
|
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "zlib");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_zlib(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_zlib,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_uadk(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_uadk,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_UADK */
|
||||||
|
|
||||||
|
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_xbzrle(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
migrate_set_parameter_int(from, "xbzrle-cache-size", 33554432);
|
||||||
|
|
||||||
|
migrate_set_capability(from, "xbzrle", true);
|
||||||
|
migrate_set_capability(to, "xbzrle", true);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_precopy_unix_xbzrle(void)
|
||||||
|
{
|
||||||
|
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
||||||
|
MigrateCommon args = {
|
||||||
|
.connect_uri = uri,
|
||||||
|
.listen_uri = uri,
|
||||||
|
.start_hook = migrate_hook_start_xbzrle,
|
||||||
|
.iterations = 2,
|
||||||
|
/*
|
||||||
|
* XBZRLE needs pages to be modified when doing the 2nd+ round
|
||||||
|
* iteration to have real data pushed to the stream.
|
||||||
|
*/
|
||||||
|
.live = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
migrate_hook_start_precopy_tcp_multifd_zlib(QTestState *from,
|
||||||
|
QTestState *to)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Overloading this test to also check that set_parameter does not error.
|
||||||
|
* This is also done in the tests for the other compression methods.
|
||||||
|
*/
|
||||||
|
migrate_set_parameter_int(from, "multifd-zlib-level", 2);
|
||||||
|
migrate_set_parameter_int(to, "multifd-zlib-level", 2);
|
||||||
|
|
||||||
|
return migrate_hook_start_precopy_tcp_multifd_common(from, to, "zlib");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_multifd_tcp_zlib(void)
|
||||||
|
{
|
||||||
|
MigrateCommon args = {
|
||||||
|
.listen_uri = "defer",
|
||||||
|
.start_hook = migrate_hook_start_precopy_tcp_multifd_zlib,
|
||||||
|
};
|
||||||
|
test_precopy_common(&args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void migration_test_add_compression(MigrationTestEnv *env)
|
||||||
|
{
|
||||||
|
tmpfs = env->tmpfs;
|
||||||
|
|
||||||
|
#ifdef CONFIG_ZSTD
|
||||||
|
migration_test_add("/migration/multifd/tcp/plain/zstd",
|
||||||
|
test_multifd_tcp_zstd);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_QATZIP
|
||||||
|
migration_test_add("/migration/multifd/tcp/plain/qatzip",
|
||||||
|
test_multifd_tcp_qatzip);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_QPL
|
||||||
|
migration_test_add("/migration/multifd/tcp/plain/qpl",
|
||||||
|
test_multifd_tcp_qpl);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_UADK
|
||||||
|
migration_test_add("/migration/multifd/tcp/plain/uadk",
|
||||||
|
test_multifd_tcp_uadk);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (g_test_slow()) {
|
||||||
|
migration_test_add("/migration/precopy/unix/xbzrle",
|
||||||
|
test_precopy_unix_xbzrle);
|
||||||
|
}
|
||||||
|
|
||||||
|
migration_test_add("/migration/multifd/tcp/plain/zlib",
|
||||||
|
test_multifd_tcp_zlib);
|
||||||
|
}
|
|
@ -220,5 +220,6 @@ void migration_test_add_tls(MigrationTestEnv *env);
|
||||||
#else
|
#else
|
||||||
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);
|
||||||
|
|
||||||
#endif /* TEST_FRAMEWORK_H */
|
#endif /* TEST_FRAMEWORK_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue