xref: /openbmc/qemu/tests/qtest/migration/migration-util.h (revision 9af3d9a931156142199c61518937506bfa5475f1)
1b7d7f723SFabiano Rosas /*
2b7d7f723SFabiano Rosas  * QTest migration helpers
3b7d7f723SFabiano Rosas  *
4b7d7f723SFabiano Rosas  * Copyright (c) 2016-2018 Red Hat, Inc. and/or its affiliates
5b7d7f723SFabiano Rosas  *   based on the vhost-user-test.c that is:
6b7d7f723SFabiano Rosas  *      Copyright (c) 2014 Virtual Open Systems Sarl.
7b7d7f723SFabiano Rosas  *
8b7d7f723SFabiano Rosas  * This work is licensed under the terms of the GNU GPL, version 2 or later.
9b7d7f723SFabiano Rosas  * See the COPYING file in the top-level directory.
10b7d7f723SFabiano Rosas  *
11b7d7f723SFabiano Rosas  */
12b7d7f723SFabiano Rosas 
13b7d7f723SFabiano Rosas #ifndef MIGRATION_UTIL_H
14b7d7f723SFabiano Rosas #define MIGRATION_UTIL_H
15b7d7f723SFabiano Rosas 
16b7d7f723SFabiano Rosas #include "libqtest.h"
17b7d7f723SFabiano Rosas 
18b7d7f723SFabiano Rosas typedef struct QTestMigrationState {
19b7d7f723SFabiano Rosas     bool stop_seen;
20b7d7f723SFabiano Rosas     bool resume_seen;
21b7d7f723SFabiano Rosas     bool suspend_seen;
22b7d7f723SFabiano Rosas     bool suspend_me;
23b7d7f723SFabiano Rosas } QTestMigrationState;
24b7d7f723SFabiano Rosas 
25b7d7f723SFabiano Rosas bool migrate_watch_for_events(QTestState *who, const char *name,
26b7d7f723SFabiano Rosas                               QDict *event, void *opaque);
27b7d7f723SFabiano Rosas 
28b7d7f723SFabiano Rosas QDict *migrate_query(QTestState *who);
29b7d7f723SFabiano Rosas QDict *migrate_query_not_failed(QTestState *who);
30b7d7f723SFabiano Rosas 
31b7d7f723SFabiano Rosas void wait_for_migration_status(QTestState *who,
32b7d7f723SFabiano Rosas                                const char *goal, const char **ungoals);
33b7d7f723SFabiano Rosas 
34b7d7f723SFabiano Rosas void wait_for_migration_complete(QTestState *who);
35b7d7f723SFabiano Rosas 
36b7d7f723SFabiano Rosas void wait_for_migration_fail(QTestState *from, bool allow_active);
37b7d7f723SFabiano Rosas 
38b7d7f723SFabiano Rosas char *find_common_machine_version(const char *mtype, const char *var1,
39b7d7f723SFabiano Rosas                                   const char *var2);
40b7d7f723SFabiano Rosas char *resolve_machine_version(const char *alias, const char *var1,
41b7d7f723SFabiano Rosas                               const char *var2);
42b7d7f723SFabiano Rosas #ifdef O_DIRECT
43b7d7f723SFabiano Rosas bool probe_o_direct_support(const char *tmpfs);
44b7d7f723SFabiano Rosas #else
probe_o_direct_support(const char * tmpfs)45b7d7f723SFabiano Rosas static inline bool probe_o_direct_support(const char *tmpfs)
46b7d7f723SFabiano Rosas {
47b7d7f723SFabiano Rosas     return false;
48b7d7f723SFabiano Rosas }
49b7d7f723SFabiano Rosas #endif
50124a3c58SFabiano Rosas 
51124a3c58SFabiano Rosas bool ufd_version_check(bool *uffd_feature_thread_id);
522fa72ba7SFabiano Rosas bool kvm_dirty_ring_supported(void);
53b7d7f723SFabiano Rosas void migration_test_add(const char *path, void (*fn)(void));
54*aabb2a5bSFabiano Rosas void migration_test_add_suffix(const char *path, const char *suffix,
55*aabb2a5bSFabiano Rosas                                void (*fn)(void *));
56b7d7f723SFabiano Rosas char *migrate_get_connect_uri(QTestState *who);
57b7d7f723SFabiano Rosas void migrate_set_ports(QTestState *to, QList *channel_list);
58b7d7f723SFabiano Rosas 
59b7d7f723SFabiano Rosas #endif /* MIGRATION_UTIL_H */
60