X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test%2Fchannels-no-partial.c;h=c765456abff08e3de1b9c8a5151182e59c6ddd4d;hb=4b6c01b1d5383b1a7417244a31ad4652aab2d5db;hp=caa308fbb69cba4a2b9c5c3a1d5c67d4a28a4e92;hpb=a18da7ad8a0d9f28dabf97d15407ece748538888;p=meshlink diff --git a/test/channels-no-partial.c b/test/channels-no-partial.c index caa308fb..c765456a 100644 --- a/test/channels-no-partial.c +++ b/test/channels-no-partial.c @@ -1,3 +1,7 @@ +#ifdef NDEBUG +#undef NDEBUG +#endif + #include #include #include @@ -22,6 +26,8 @@ int main(int argc, char *argv[]) { (void)argc; (void)argv; + meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb); + // Start two new meshlink instance. meshlink_handle_t *mesh_a; @@ -36,13 +42,17 @@ int main(int argc, char *argv[]) { meshlink_node_t *b = meshlink_get_node(mesh_a, "b"); assert(b); - meshlink_channel_t *channel = meshlink_channel_open_ex(mesh_a, b, 1, NULL, NULL, 0, MESHLINK_CHANNEL_NO_PARTIAL); + meshlink_channel_t *channel = meshlink_channel_open_ex(mesh_a, b, 1, NULL, NULL, 0, MESHLINK_CHANNEL_TCP | MESHLINK_CHANNEL_NO_PARTIAL); assert(channel); + // Stop a to ensure we get deterministic behaviour for the channel send queue. + + meshlink_stop(mesh_a); + // Verify that no partial sends succeed. // If rejected sends would fit an empty send buffer, 0 should be returned, otherwise -1. - char buf[256] = ""; + char buf[512] = "data"; meshlink_set_channel_sndbuf(mesh_a, channel, 256); assert(meshlink_channel_send(mesh_a, channel, buf, 257) == -1); @@ -56,12 +66,14 @@ int main(int argc, char *argv[]) { assert(meshlink_channel_send(mesh_a, channel, buf, 29) == 0); assert(meshlink_channel_send(mesh_a, channel, buf, 513) == -1); + // Restart a to ensure it gets to flush the channel send queue. + + assert(meshlink_start(mesh_a)); + assert_after(!meshlink_channel_get_sendq(mesh_a, channel), 30); assert(meshlink_channel_send(mesh_a, channel, buf, 512) == 512); // Clean up. - close_meshlink_pair(mesh_a, mesh_b, "channels_no_partial"); - - return 0; + close_meshlink_pair(mesh_a, mesh_b); }