Stop calling a common function to set the multifd compression method. The default method is "none", so the common function is not necessary for tests that don't set compression and will be removed. Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Peter Xu <peterx@redhat.com> Link: https://lore.kernel.org/r/20260505160915.25558-9-farosas@suse.de Signed-off-by: Peter Xu <peterx@redhat.com>
214 lines
5.7 KiB
C
214 lines
5.7 KiB
C
/*
|
|
* 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;
|
|
|
|
static void set_multifd_compression(QTestState *from, QTestState *to,
|
|
const char *method)
|
|
{
|
|
migrate_set_parameter_str(from, "multifd-compression", method);
|
|
migrate_set_parameter_str(to, "multifd-compression", method);
|
|
}
|
|
|
|
#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);
|
|
set_multifd_compression(from, to, "zstd");
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static void test_multifd_tcp_zstd(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_zstd;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
|
|
test_precopy_common(args);
|
|
}
|
|
|
|
static void test_multifd_postcopy_tcp_zstd(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_zstd,
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
args->start.caps[MIGRATION_CAPABILITY_POSTCOPY_RAM] = true;
|
|
|
|
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);
|
|
set_multifd_compression(from, to, "qatzip");
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static void test_multifd_tcp_qatzip(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_qatzip;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
|
|
test_precopy_common(args);
|
|
}
|
|
#endif
|
|
|
|
#ifdef CONFIG_QPL
|
|
static void *
|
|
migrate_hook_start_precopy_tcp_multifd_qpl(QTestState *from,
|
|
QTestState *to)
|
|
{
|
|
set_multifd_compression(from, to, "qpl");
|
|
return NULL;
|
|
}
|
|
|
|
static void test_multifd_tcp_qpl(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_qpl;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
|
|
test_precopy_common(args);
|
|
}
|
|
#endif /* CONFIG_QPL */
|
|
|
|
#ifdef CONFIG_UADK
|
|
static void *
|
|
migrate_hook_start_precopy_tcp_multifd_uadk(QTestState *from,
|
|
QTestState *to)
|
|
{
|
|
set_multifd_compression(from, to, "uadk");
|
|
return NULL;
|
|
}
|
|
|
|
static void test_multifd_tcp_uadk(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_uadk;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
|
|
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);
|
|
return NULL;
|
|
}
|
|
|
|
static void test_precopy_unix_xbzrle(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_xbzrle;
|
|
args->iterations = 2;
|
|
/*
|
|
* XBZRLE needs pages to be modified when doing the 2nd+ round
|
|
* iteration to have real data pushed to the stream.
|
|
*/
|
|
args->live = true;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_XBZRLE] = true;
|
|
|
|
test_precopy_unix_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);
|
|
set_multifd_compression(from, to, "zlib");
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static void test_multifd_tcp_zlib(char *name, MigrateCommon *args)
|
|
{
|
|
args->start_hook = migrate_hook_start_precopy_tcp_multifd_zlib;
|
|
|
|
args->start.caps[MIGRATION_CAPABILITY_MULTIFD] = true;
|
|
|
|
test_precopy_common(args);
|
|
}
|
|
|
|
static void migration_test_add_compression_smoke(MigrationTestEnv *env)
|
|
{
|
|
migration_test_add("/migration/multifd/tcp/plain/zlib",
|
|
test_multifd_tcp_zlib);
|
|
}
|
|
|
|
void migration_test_add_compression(MigrationTestEnv *env)
|
|
{
|
|
tmpfs = env->tmpfs;
|
|
|
|
migration_test_add_compression_smoke(env);
|
|
|
|
if (!env->full_set) {
|
|
return;
|
|
}
|
|
|
|
#ifdef CONFIG_ZSTD
|
|
migration_test_add("/migration/multifd/tcp/plain/zstd",
|
|
test_multifd_tcp_zstd);
|
|
if (env->has_uffd) {
|
|
migration_test_add("/migration/multifd+postcopy/tcp/plain/zstd",
|
|
test_multifd_postcopy_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);
|
|
}
|
|
}
|