]> git.meshlink.io Git - meshlink/blob - test/ephemeral.c
Refactor the non-blackbox test suite.
[meshlink] / test / ephemeral.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/time.h>
4 #include <assert.h>
5
6 #include "meshlink.h"
7 #include "utils.h"
8
9 int main() {
10         meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb);
11
12         // Open two ephemeral meshlink instance.
13
14         meshlink_handle_t *mesh1 = meshlink_open_ephemeral("foo", "ephemeral", DEV_CLASS_BACKBONE);
15         meshlink_handle_t *mesh2 = meshlink_open_ephemeral("bar", "ephemeral", DEV_CLASS_BACKBONE);
16
17         assert(mesh1);
18         assert(mesh2);
19
20         meshlink_set_log_cb(mesh1, MESHLINK_DEBUG, log_cb);
21         meshlink_set_log_cb(mesh2, MESHLINK_DEBUG, log_cb);
22
23         // Exchange data
24
25         char *export1 = meshlink_export(mesh1);
26         char *export2 = meshlink_export(mesh2);
27
28         assert(export1);
29         assert(export2);
30
31         assert(meshlink_import(mesh1, export2));
32         assert(meshlink_import(mesh2, export1));
33
34         free(export1);
35         free(export2);
36
37         // Check that they know each other
38
39         assert(meshlink_get_node(mesh1, "bar"));
40         assert(meshlink_get_node(mesh2, "foo"));
41
42         // Close the ephemeral instances and reopen them.
43
44         meshlink_close(mesh1);
45         meshlink_close(mesh2);
46
47         mesh1 = meshlink_open_ephemeral("foo", "ephemeral", DEV_CLASS_BACKBONE);
48         mesh2 = meshlink_open_ephemeral("bar", "ephemeral", DEV_CLASS_BACKBONE);
49
50         assert(mesh1);
51         assert(mesh2);
52
53         meshlink_set_log_cb(mesh1, MESHLINK_DEBUG, log_cb);
54         meshlink_set_log_cb(mesh2, MESHLINK_DEBUG, log_cb);
55
56         // Check that the nodes no longer know each other
57
58         assert(!meshlink_get_node(mesh1, "bar"));
59         assert(!meshlink_get_node(mesh2, "foo"));
60
61         // That's it.
62
63         meshlink_close(mesh1);
64         meshlink_close(mesh2);
65 }