mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
tests/qtest/migration: Add a fd + file test
The fd URI supports an fd that is backed by a file. The code should select between QIOChannelFile and QIOChannelSocket, depending on the type of the fd. Add a test for that. Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Peter Xu <peterx@redhat.com> Link: https://lore.kernel.org/r/20240220224138.24759-4-farosas@suse.de Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
85cf9abd86
commit
6d79bd6818
1 changed files with 41 additions and 0 deletions
|
@ -2433,6 +2433,45 @@ static void test_migrate_precopy_fd_socket(void)
|
|||
};
|
||||
test_precopy_common(&args);
|
||||
}
|
||||
|
||||
static void *migrate_precopy_fd_file_start(QTestState *from, QTestState *to)
|
||||
{
|
||||
g_autofree char *file = g_strdup_printf("%s/%s", tmpfs, FILE_TEST_FILENAME);
|
||||
int src_flags = O_CREAT | O_RDWR;
|
||||
int dst_flags = O_CREAT | O_RDWR;
|
||||
int fds[2];
|
||||
|
||||
fds[0] = open(file, src_flags, 0660);
|
||||
assert(fds[0] != -1);
|
||||
|
||||
fds[1] = open(file, dst_flags, 0660);
|
||||
assert(fds[1] != -1);
|
||||
|
||||
|
||||
qtest_qmp_fds_assert_success(to, &fds[0], 1,
|
||||
"{ 'execute': 'getfd',"
|
||||
" 'arguments': { 'fdname': 'fd-mig' }}");
|
||||
|
||||
qtest_qmp_fds_assert_success(from, &fds[1], 1,
|
||||
"{ 'execute': 'getfd',"
|
||||
" 'arguments': { 'fdname': 'fd-mig' }}");
|
||||
|
||||
close(fds[0]);
|
||||
close(fds[1]);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void test_migrate_precopy_fd_file(void)
|
||||
{
|
||||
MigrateCommon args = {
|
||||
.listen_uri = "defer",
|
||||
.connect_uri = "fd:fd-mig",
|
||||
.start_hook = migrate_precopy_fd_file_start,
|
||||
.finish_hook = test_migrate_fd_finish_hook
|
||||
};
|
||||
test_file_common(&args, true);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
static void do_test_validate_uuid(MigrateStart *args, bool should_fail)
|
||||
|
@ -3529,6 +3568,8 @@ int main(int argc, char **argv)
|
|||
#ifndef _WIN32
|
||||
migration_test_add("/migration/precopy/fd/tcp",
|
||||
test_migrate_precopy_fd_socket);
|
||||
migration_test_add("/migration/precopy/fd/file",
|
||||
test_migrate_precopy_fd_file);
|
||||
#endif
|
||||
migration_test_add("/migration/validate_uuid", test_validate_uuid);
|
||||
migration_test_add("/migration/validate_uuid_error",
|
||||
|
|
Loading…
Reference in a new issue