X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test%2Ftrio.c;h=79013a6f5e3ed016a144fad68bb2c52b249ecb5e;hb=f73f697142bd5ce32d9b7273ed73ea798594854d;hp=0a494c28e3d36f0c2fa8f2f953ee6a0df709a615;hpb=8fde91038538d01aaa5b36ebb06b516a8c313364;p=meshlink diff --git a/test/trio.c b/test/trio.c index 0a494c28..79013a6f 100644 --- a/test/trio.c +++ b/test/trio.c @@ -5,33 +5,46 @@ #include #include #include +#include #include "meshlink.h" +#include "devtools.h" #include "utils.h" static void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) { + (void)mesh; + static struct timeval tv0; struct timeval tv; - if(tv0.tv_sec == 0) + if(tv0.tv_sec == 0) { gettimeofday(&tv0, NULL); + } + gettimeofday(&tv, NULL); fprintf(stderr, "%u.%.03u ", (unsigned int)(tv.tv_sec - tv0.tv_sec), (unsigned int)tv.tv_usec / 1000); - if(mesh) + if(mesh) { fprintf(stderr, "(%s) ", mesh->name); + } + fprintf(stderr, "[%d] %s\n", level, text); } static bool received = false; static void receive_cb(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len) { + (void)mesh; + (void)source; + fprintf(stderr, "RECEIVED SOMETHING\n"); - if(len == 5 && !memcmp(data, "Hello", 5)) + + if(len == 5 && !memcmp(data, "Hello", 5)) { received = true; + } } -int main(int argc, char *argv[]) { +int main() { // Create three instances. const char *name[3] = {"foo", "bar", "baz"}; @@ -40,12 +53,16 @@ int main(int argc, char *argv[]) { for(int i = 0; i < 3; i++) { char *path; - asprintf(&path, "trio_conf.%d", i); + int ret_val; + (void)ret_val; + ret_val = asprintf(&path, "trio_conf.%d", i); assert(path); mesh[i] = meshlink_open(path, name[i], "trio", DEV_CLASS_BACKBONE); assert(mesh[i]); + meshlink_add_address(mesh[i], "localhost"); + data[i] = meshlink_export(mesh[i]); assert(data[i]); } @@ -67,19 +84,26 @@ int main(int argc, char *argv[]) { // start the nodes - for(int i = 0; i < 3; i++) - meshlink_start(mesh[i]); + for(int i = 0; i < 3; i++) { + assert(meshlink_start(mesh[i])); + } // the nodes should now learn about each other assert_after(meshlink_get_node(mesh[1], name[2]), 5); assert_after(meshlink_get_node(mesh[2], name[1]), 5); - // Send a packet + // Send a packet, expect it is received meshlink_set_receive_cb(mesh[1], receive_cb); assert_after((meshlink_send(mesh[2], meshlink_get_node(mesh[2], name[1]), "Hello", 5), received), 15); + // Check that the second and third node have autoconnected to each other + + devtool_edge_t *edges = NULL; + size_t nedges = 0; + assert_after((edges = devtool_get_all_edges(mesh[1], edges, &nedges), nedges == 3), 15); + // Stop the first node meshlink_stop(mesh[0]); @@ -91,8 +115,9 @@ int main(int argc, char *argv[]) { // Stop the other nodes - for(int i = 1; i < 3; i++) + for(int i = 1; i < 3; i++) { meshlink_stop(mesh[i]); + } sleep(1); @@ -100,8 +125,9 @@ int main(int argc, char *argv[]) { meshlink_set_log_cb(mesh[1], MESHLINK_DEBUG, log_cb); - for(int i = 1; i < 3; i++) - meshlink_start(mesh[i]); + for(int i = 1; i < 3; i++) { + assert(meshlink_start(mesh[i])); + } assert(meshlink_get_node(mesh[1], name[2])); assert(meshlink_get_node(mesh[2], name[1])); @@ -113,6 +139,7 @@ int main(int argc, char *argv[]) { // Clean up. - for(int i = 0; i < 3; i++) + for(int i = 0; i < 3; i++) { meshlink_close(mesh[i]); + } }