From: Thomas Huth <thuth@redhat.com>
When QEMU has been compiled with "--without-default-devices", the
migration cpr-tests are currently failing since the first test leaves
a socket file behind that avoids that the second test can be initialized
correctly. Make sure that we delete the socket file in case that the
migrate_start() failed due to the missing machine.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qtest/migration/framework.h | 2 +-
tests/qtest/migration/cpr-tests.c | 5 ++++-
tests/qtest/migration/framework.c | 6 ++++--
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/tests/qtest/migration/framework.h b/tests/qtest/migration/framework.h
index 01e425e64e2..744040d53a1 100644
--- a/tests/qtest/migration/framework.h
+++ b/tests/qtest/migration/framework.h
@@ -227,7 +227,7 @@ void migrate_end(QTestState *from, QTestState *to, bool test_dest);
void test_postcopy_common(MigrateCommon *args);
void test_postcopy_recovery_common(MigrateCommon *args);
-void test_precopy_common(MigrateCommon *args);
+int test_precopy_common(MigrateCommon *args);
void test_file_common(MigrateCommon *args, bool stop_src);
void *migrate_hook_start_precopy_tcp_multifd_common(QTestState *from,
QTestState *to,
diff --git a/tests/qtest/migration/cpr-tests.c b/tests/qtest/migration/cpr-tests.c
index 5e764a67876..c4ce60ff66b 100644
--- a/tests/qtest/migration/cpr-tests.c
+++ b/tests/qtest/migration/cpr-tests.c
@@ -97,7 +97,10 @@ static void test_mode_transfer_common(bool incoming_defer)
.start_hook = test_mode_transfer_start,
};
- test_precopy_common(&args);
+ if (test_precopy_common(&args) < 0) {
+ close(cpr_sockfd);
+ unlink(cpr_path);
+ }
}
static void test_mode_transfer(void)
diff --git a/tests/qtest/migration/framework.c b/tests/qtest/migration/framework.c
index 407c9023c05..a044b354658 100644
--- a/tests/qtest/migration/framework.c
+++ b/tests/qtest/migration/framework.c
@@ -736,7 +736,7 @@ void test_postcopy_recovery_common(MigrateCommon *args)
migrate_postcopy_complete(from, to, args);
}
-void test_precopy_common(MigrateCommon *args)
+int test_precopy_common(MigrateCommon *args)
{
QTestState *from, *to;
void *data_hook = NULL;
@@ -746,7 +746,7 @@ void test_precopy_common(MigrateCommon *args)
g_assert(!args->cpr_channel || args->connect_channels);
if (migrate_start(&from, &to, args->listen_uri, &args->start)) {
- return;
+ return -1;
}
if (args->start_hook) {
@@ -869,6 +869,8 @@ finish:
}
migrate_end(from, to, args->result == MIG_TEST_SUCCEED);
+
+ return 0;
}
static void file_dirty_offset_region(void)
--
2.51.0