Add qtests to perform postcopy live migration by having list of 'channels' argument as the starting point instead of uri string. (Note: length of the list is restricted to 1 for now)
Signed-off-by: Het Gala <het.g...@nutanix.com> --- tests/qtest/migration-test.c | 38 ++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c index fa8a860811..599018baa0 100644 --- a/tests/qtest/migration-test.c +++ b/tests/qtest/migration-test.c @@ -1296,13 +1296,17 @@ static int migrate_postcopy_prepare(QTestState **from_ptr, migrate_ensure_non_converge(from); migrate_prepare_for_dirty_mem(from); - migrate_incoming_qmp(to, "tcp:127.0.0.1:0", NULL, "{}"); + if (args->connect_channels) { + migrate_incoming_qmp(to, NULL, args->connect_channels, "{}"); + } else { + migrate_incoming_qmp(to, "tcp:127.0.0.1:0", NULL, "{}"); + } /* Wait for the first serial output from the source */ wait_for_serial("src_serial"); wait_for_suspend(from, &src_state); - migrate_qmp(from, to, NULL, NULL, "{}"); + migrate_qmp(from, to, args->connect_uri, args->connect_channels, "{}"); migrate_wait_for_dirty_mem(from, to); @@ -1355,6 +1359,20 @@ static void test_postcopy(void) test_postcopy_common(&args); } +static void test_postcopy_channels(void) +{ + MigrateCommon args = { + .listen_uri = "defer", + .connect_channels = "[ { 'channel-type': 'main'," + " 'addr': { 'transport': 'socket'," + " 'type': 'inet'," + " 'host': '127.0.0.1'," + " 'port': '0' } } ]", + }; + + test_postcopy_common(&args); +} + static void test_postcopy_suspend(void) { MigrateCommon args = { @@ -1555,6 +1573,18 @@ static void test_postcopy_recovery(void) test_postcopy_recovery_common(&args); } +static void test_postcopy_recovery_channels(void) +{ + MigrateCommon args = { + .connect_channels = "[ { 'channel-type': 'main'," + " 'addr': { 'transport': 'socket'," + " 'type': 'inet'," + " 'host': '127.0.0.1'," + " 'port': '0' } } ]", + }; + + test_postcopy_recovery_common(&args); +} static void test_postcopy_recovery_compress(void) { MigrateCommon args = { @@ -3585,8 +3615,12 @@ int main(int argc, char **argv) if (has_uffd) { migration_test_add("/migration/postcopy/plain", test_postcopy); + migration_test_add("/migration/postcopy/channels/plain", + test_postcopy_channels); migration_test_add("/migration/postcopy/recovery/plain", test_postcopy_recovery); + migration_test_add("/migration/postcopy/recovery/channels/plain", + test_postcopy_recovery_channels); migration_test_add("/migration/postcopy/preempt/plain", test_postcopy_preempt); migration_test_add("/migration/postcopy/preempt/recovery/plain", -- 2.22.3