X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test%2Futils.h;h=11facfc3c025b248772db1ae7e273ce04c0b2278;hb=bc2e55e940e45748a49f1a7eb44b156917fca469;hp=488721dd37af86748e9642879cad1da8588725d9;hpb=8fde91038538d01aaa5b36ebb06b516a8c313364;p=meshlink diff --git a/test/utils.h b/test/utils.h index 488721dd..11facfc3 100644 --- a/test/utils.h +++ b/test/utils.h @@ -1,6 +1,10 @@ #ifndef MESHLINK_TEST_UTILS_H #define MESHLINK_TEST_UTILS_H +#include +#include +#include + #include "../src/meshlink.h" // Simple synchronisation between threads @@ -10,11 +14,15 @@ struct sync_flag { bool flag; }; -extern void set_sync_flag(struct sync_flag *s); +extern void init_sync_flag(struct sync_flag *s); +extern void set_sync_flag(struct sync_flag *s, bool value); +extern void reset_sync_flag(struct sync_flag *s); +extern bool check_sync_flag(struct sync_flag *s); extern bool wait_sync_flag(struct sync_flag *s, int seconds); /// Create a pair of meshlink instances that are already joined together. extern void open_meshlink_pair(meshlink_handle_t **a, meshlink_handle_t **b, const char *prefix); +extern void open_meshlink_pair_ephemeral(meshlink_handle_t **a, meshlink_handle_t **b, const char *prefix); /// Start a pair of meshlink instances and wait for them to connect together. extern void start_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b); @@ -23,16 +31,32 @@ extern void start_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b); extern void stop_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b); /// Stop and cleanup a pair of meshlink instances. -extern void close_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b, const char *prefix); - -#define assert_after(cond, timeout) do {\ - for(int i = 0; i++ <= timeout;) {\ - if(cond)\ - break;\ - if(i == timeout)\ - assert(cond);\ - sleep(1);\ - }\ -} while(0); +extern void close_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b); + +/// Link two meshlink instances. +extern void link_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b); + +/// Default log callback +extern void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text); + +#define assert_after(cond, timeout)\ + do {\ + for(int i = 0; i++ <= timeout;) {\ + if(cond)\ + break;\ + if(i == timeout)\ + assert(cond);\ + sleep(1);\ + }\ + } while(0) #endif + +/// Compare two timespec values. +static inline bool timespec_lt(const struct timespec *a, const struct timespec *b) { + if(a->tv_sec == b->tv_sec) { + return a->tv_nsec < b->tv_nsec; + } else { + return a->tv_sec < b->tv_sec; + } +}