]> git.meshlink.io Git - meshlink/commitdiff
Fix the channels-no-partial test case.
authorGuus Sliepen <guus@meshlink.io>
Sat, 5 Oct 2019 12:32:19 +0000 (14:32 +0200)
committerGuus Sliepen <guus@meshlink.io>
Sat, 5 Oct 2019 12:32:19 +0000 (14:32 +0200)
src/utcp
test/channels-no-partial.c

index b92868c9f1e00601c1cb5cccc6dc01fdb79de4ca..eb0a013a9b6c957aee0aecebc7d451dfd6851661 160000 (submodule)
--- a/src/utcp
+++ b/src/utcp
@@ -1 +1 @@
-Subproject commit b92868c9f1e00601c1cb5cccc6dc01fdb79de4ca
+Subproject commit eb0a013a9b6c957aee0aecebc7d451dfd6851661
index caa308fbb69cba4a2b9c5c3a1d5c67d4a28a4e92..8216a5568bb9260f4b9e862fba3478732f82983b 100644 (file)
@@ -36,13 +36,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,6 +60,10 @@ 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.
+
+       meshlink_start(mesh_a);
+
        assert_after(!meshlink_channel_get_sendq(mesh_a, channel), 30);
        assert(meshlink_channel_send(mesh_a, channel, buf, 512) == 512);