1 #ifndef MESHLINK_TEST_UTILS_H
2 #define MESHLINK_TEST_UTILS_H
7 #include "../src/meshlink.h"
9 // Simple synchronisation between threads
11 pthread_mutex_t mutex;
16 extern void init_sync_flag(struct sync_flag *s);
17 extern void set_sync_flag(struct sync_flag *s, bool value);
18 extern bool check_sync_flag(struct sync_flag *s);
19 extern bool wait_sync_flag(struct sync_flag *s, int seconds);
21 /// Create a pair of meshlink instances that are already joined together.
22 extern void open_meshlink_pair(meshlink_handle_t **a, meshlink_handle_t **b, const char *prefix);
24 /// Start a pair of meshlink instances and wait for them to connect together.
25 extern void start_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b);
27 /// Stop a pair of meshlink instances.
28 extern void stop_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b);
30 /// Stop and cleanup a pair of meshlink instances.
31 extern void close_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b);
33 /// Link two meshlink instances.
34 extern void link_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b);
36 /// Default log callback
37 extern void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text);
39 #define assert_after(cond, timeout)\
41 for(int i = 0; i++ <= timeout;) {\
52 /// Compare two timespec values.
53 static inline bool timespec_lt(const struct timespec *a, const struct timespec *b) {
54 if(a->tv_sec == b->tv_sec) {
55 return a->tv_nsec < b->tv_nsec;
57 return a->tv_sec < b->tv_sec;