qtest/migration-test.c: Add tests with compress enabled
There has never been tests for migration with compress enabled. Add suitable tests, testing with compress-wait-thread = false too. Signed-off-by: Lukas Straub <lukasstraub2@web.de> Acked-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
792f77f376
commit
1536d1da5d
@ -406,6 +406,41 @@ static void migrate_set_parameter_str(QTestState *who, const char *parameter,
|
||||
migrate_check_parameter_str(who, parameter, value);
|
||||
}
|
||||
|
||||
static long long migrate_get_parameter_bool(QTestState *who,
|
||||
const char *parameter)
|
||||
{
|
||||
QDict *rsp;
|
||||
int result;
|
||||
|
||||
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }");
|
||||
result = qdict_get_bool(rsp, parameter);
|
||||
qobject_unref(rsp);
|
||||
return !!result;
|
||||
}
|
||||
|
||||
static void migrate_check_parameter_bool(QTestState *who, const char *parameter,
|
||||
int value)
|
||||
{
|
||||
int result;
|
||||
|
||||
result = migrate_get_parameter_bool(who, parameter);
|
||||
g_assert_cmpint(result, ==, value);
|
||||
}
|
||||
|
||||
static void migrate_set_parameter_bool(QTestState *who, const char *parameter,
|
||||
int value)
|
||||
{
|
||||
QDict *rsp;
|
||||
|
||||
rsp = qtest_qmp(who,
|
||||
"{ 'execute': 'migrate-set-parameters',"
|
||||
"'arguments': { %s: %i } }",
|
||||
parameter, value);
|
||||
g_assert(qdict_haskey(rsp, "return"));
|
||||
qobject_unref(rsp);
|
||||
migrate_check_parameter_bool(who, parameter, value);
|
||||
}
|
||||
|
||||
static void migrate_ensure_non_converge(QTestState *who)
|
||||
{
|
||||
/* Can't converge with 1ms downtime + 3 mbs bandwidth limit */
|
||||
@ -1524,6 +1559,70 @@ static void test_precopy_unix_xbzrle(void)
|
||||
test_precopy_common(&args);
|
||||
}
|
||||
|
||||
static void *
|
||||
test_migrate_compress_start(QTestState *from,
|
||||
QTestState *to)
|
||||
{
|
||||
migrate_set_parameter_int(from, "compress-level", 1);
|
||||
migrate_set_parameter_int(from, "compress-threads", 4);
|
||||
migrate_set_parameter_bool(from, "compress-wait-thread", true);
|
||||
migrate_set_parameter_int(to, "decompress-threads", 4);
|
||||
|
||||
migrate_set_capability(from, "compress", true);
|
||||
migrate_set_capability(to, "compress", true);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void test_precopy_unix_compress(void)
|
||||
{
|
||||
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
||||
MigrateCommon args = {
|
||||
.connect_uri = uri,
|
||||
.listen_uri = uri,
|
||||
.start_hook = test_migrate_compress_start,
|
||||
/*
|
||||
* Test that no invalid thread state is left over from
|
||||
* the previous iteration.
|
||||
*/
|
||||
.iterations = 2,
|
||||
};
|
||||
|
||||
test_precopy_common(&args);
|
||||
}
|
||||
|
||||
static void *
|
||||
test_migrate_compress_nowait_start(QTestState *from,
|
||||
QTestState *to)
|
||||
{
|
||||
migrate_set_parameter_int(from, "compress-level", 9);
|
||||
migrate_set_parameter_int(from, "compress-threads", 1);
|
||||
migrate_set_parameter_bool(from, "compress-wait-thread", false);
|
||||
migrate_set_parameter_int(to, "decompress-threads", 1);
|
||||
|
||||
migrate_set_capability(from, "compress", true);
|
||||
migrate_set_capability(to, "compress", true);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void test_precopy_unix_compress_nowait(void)
|
||||
{
|
||||
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
||||
MigrateCommon args = {
|
||||
.connect_uri = uri,
|
||||
.listen_uri = uri,
|
||||
.start_hook = test_migrate_compress_nowait_start,
|
||||
/*
|
||||
* Test that no invalid thread state is left over from
|
||||
* the previous iteration.
|
||||
*/
|
||||
.iterations = 2,
|
||||
};
|
||||
|
||||
test_precopy_common(&args);
|
||||
}
|
||||
|
||||
static void test_precopy_tcp_plain(void)
|
||||
{
|
||||
MigrateCommon args = {
|
||||
@ -2537,6 +2636,16 @@ int main(int argc, char **argv)
|
||||
qtest_add_func("/migration/bad_dest", test_baddest);
|
||||
qtest_add_func("/migration/precopy/unix/plain", test_precopy_unix_plain);
|
||||
qtest_add_func("/migration/precopy/unix/xbzrle", test_precopy_unix_xbzrle);
|
||||
/*
|
||||
* Compression fails from time to time.
|
||||
* Put test here but don't enable it until everything is fixed.
|
||||
*/
|
||||
if (getenv("QEMU_TEST_FLAKY_TESTS")) {
|
||||
qtest_add_func("/migration/precopy/unix/compress/wait",
|
||||
test_precopy_unix_compress);
|
||||
qtest_add_func("/migration/precopy/unix/compress/nowait",
|
||||
test_precopy_unix_compress_nowait);
|
||||
}
|
||||
#ifdef CONFIG_GNUTLS
|
||||
qtest_add_func("/migration/precopy/unix/tls/psk",
|
||||
test_precopy_unix_tls_psk);
|
||||
|
Loading…
Reference in New Issue
Block a user