Pass the config directly via the migrate/incoming command.

Signed-off-by: Fabiano Rosas <faro...@suse.de>
---
 tests/qtest/migration/framework.h  |  2 ++
 tests/qtest/migration/misc-tests.c | 39 ++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/tests/qtest/migration/framework.h 
b/tests/qtest/migration/framework.h
index 01e425e64e..e55cd33fa8 100644
--- a/tests/qtest/migration/framework.h
+++ b/tests/qtest/migration/framework.h
@@ -145,6 +145,8 @@ typedef struct {
     /* Optional: fine tune start parameters */
     MigrateStart start;
 
+    const char *config;
+
     /* Required: the URI for the dst QEMU to listen on */
     const char *listen_uri;
 
diff --git a/tests/qtest/migration/misc-tests.c 
b/tests/qtest/migration/misc-tests.c
index 54995256d8..e835865aee 100644
--- a/tests/qtest/migration/misc-tests.c
+++ b/tests/qtest/migration/misc-tests.c
@@ -256,6 +256,42 @@ static void test_validate_uri_channels_none_set(void)
     do_test_validate_uri_channel(&args);
 }
 
+static void test_config_migrate(void)
+{
+    QTestState *from, *to;
+    MigrateStart args = {
+        .hide_stderr = false,
+    };
+    const char *config = "{"
+        "'events':true, "
+        "'multifd':true, "
+        "'multifd-channels': 4"
+        "}";
+
+    if (migrate_start(&from, &to, "defer", &args)) {
+        return;
+    }
+
+    assert(qtest_qmp_cmd_has_feature(from, "migrate", "config"));
+
+    wait_for_serial("src_serial");
+    qtest_qmp_assert_success(from, "{ 'execute' : 'stop'}");
+    migrate_ensure_converge(from);
+
+    migrate_incoming_qmp(to, "tcp:127.0.0.1:0", NULL,
+                         "{ 'exit-on-error': false, 'config': %p }",
+                         qobject_from_json(config, &error_abort));
+
+    migrate_qmp(from, to, migrate_get_connect_uri(to), NULL,
+                "{ 'config': %p }",
+                qobject_from_json(config, &error_abort));
+
+    wait_for_migration_complete(from);
+    wait_for_migration_complete(to);
+
+    migrate_end(from, to, false);
+}
+
 static void migration_test_add_misc_smoke(MigrationTestEnv *env)
 {
 #ifndef _WIN32
@@ -294,4 +330,7 @@ void migration_test_add_misc(MigrationTestEnv *env)
                        test_validate_uri_channels_both_set);
     migration_test_add("/migration/validate_uri/channels/none_set",
                        test_validate_uri_channels_none_set);
+
+    migration_test_add("/migration/config/migrate",
+                       test_config_migrate);
 }
-- 
2.35.3


Reply via email to