aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/pair1/pair1_test.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-02-06 19:12:55 -0800
committerGarrett D'Amore <garrett@damore.org>2020-02-07 18:53:20 -0800
commitf79eb9473fbee6207b3e992aa884b8913d7cdc46 (patch)
tree5724eee808251a6fdec51b9d7a47550cb5852845 /src/protocol/pair1/pair1_test.c
parent28c38d4116ffe8a05123cf98f62f7a63fdd1c920 (diff)
downloadnng-f79eb9473fbee6207b3e992aa884b8913d7cdc46.tar.gz
nng-f79eb9473fbee6207b3e992aa884b8913d7cdc46.tar.bz2
nng-f79eb9473fbee6207b3e992aa884b8913d7cdc46.zip
fixes #1189 Extract and deprecate polyamorous mode
Diffstat (limited to 'src/protocol/pair1/pair1_test.c')
-rw-r--r--src/protocol/pair1/pair1_test.c486
1 files changed, 129 insertions, 357 deletions
diff --git a/src/protocol/pair1/pair1_test.c b/src/protocol/pair1/pair1_test.c
index 7011606a..0f0131b5 100644
--- a/src/protocol/pair1/pair1_test.c
+++ b/src/protocol/pair1/pair1_test.c
@@ -11,8 +11,8 @@
#include <string.h>
#include <nng/nng.h>
-#include <nng/protocol/pair1/pair.h>
#include <nng/protocol/pair0/pair.h>
+#include <nng/protocol/pair1/pair.h>
#include <testutil.h>
@@ -188,33 +188,33 @@ test_mono_raw_header(void)
nng_msg * msg;
uint32_t v;
- TEST_CHECK(nng_pair1_open_raw(&s1) == 0);
- TEST_CHECK(nng_pair1_open_raw(&c1) == 0);
+ TEST_NNG_PASS(nng_pair1_open_raw(&s1));
+ TEST_NNG_PASS(nng_pair1_open_raw(&c1));
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
- TEST_CHECK(testutil_marry(s1, c1) == 0);
+ TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5));
+ TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5));
+ TEST_NNG_PASS(testutil_marry(s1, c1));
// Missing bits in the header
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == NNG_ETIMEDOUT);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT);
// Valid header works
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_append_u32(msg, 0xFEEDFACE) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 1) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- TEST_CHECK(nng_msg_trim_u32(msg, &v) == 0);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_append_u32(msg, 0xFEEDFACE));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 1));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0));
+ TEST_NNG_PASS(nng_msg_trim_u32(msg, &v));
TEST_CHECK(v == 0xFEEDFACE);
nng_msg_free(msg);
// Header with reserved bits set dropped
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 0xDEAD0000) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == NNG_ETIMEDOUT);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 0xDEAD0000));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT);
// Header with no chance to add another hop gets dropped
TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
@@ -223,313 +223,40 @@ test_mono_raw_header(void)
TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT);
// With the same bits clear it works
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_append_u32(msg, 0xFEEDFACE) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 1) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- TEST_CHECK(nng_msg_trim_u32(msg, &v) == 0);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_append_u32(msg, 0xFEEDFACE));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 1));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0));
+ TEST_NNG_PASS(nng_msg_trim_u32(msg, &v));
TEST_CHECK(v == 0xFEEDFACE);
nng_msg_free(msg);
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c1) == 0);
-}
-
-void
-test_poly_best_effort(void)
-{
- nng_socket s1;
- nng_socket c1;
- nng_msg * msg;
-
- TEST_CHECK(nng_pair1_open(&s1) == 0);
- TEST_CHECK(nng_pair1_open(&c1) == 0);
-
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == 0);
-
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_RECVBUF, 1) == 0);
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_SENDBUF, 1) == 0);
- TEST_CHECK(nng_setopt_int(c1, NNG_OPT_RECVBUF, 1) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND) == 0);
-
- TEST_CHECK(testutil_marry(s1, c1) == 0);
-
- for (int i = 0; i < 10; i++) {
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- }
-
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c1) == 0);
-}
-
-void
-test_poly_cooked(void)
-{
- nng_socket s1;
- nng_socket c1;
- nng_socket c2;
- nng_msg * msg;
- bool v;
- nng_pipe p1;
- nng_pipe p2;
-
- TEST_CHECK(nng_pair1_open(&s1) == 0);
- TEST_CHECK(nng_pair1_open(&c1) == 0);
- TEST_CHECK(nng_pair1_open(&c2) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND) == 0);
- TEST_CHECK(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 10) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 10) == 0);
- TEST_CHECK(nng_setopt_ms(c2, NNG_OPT_RECVTIMEO, SECOND / 10) == 0);
-
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == false);
-
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == 0);
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == true);
-
- TEST_CHECK(testutil_marry(s1, c1) == 0);
- TEST_CHECK(testutil_marry(s1, c2) == 0);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "ONE");
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- CHECK_STR(msg, "ONE");
- p1 = nng_msg_get_pipe(msg);
- TEST_CHECK(nng_pipe_id(p1) > 0);
- nng_msg_free(msg);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "TWO");
- TEST_CHECK(nng_sendmsg(c2, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- CHECK_STR(msg, "TWO");
- p2 = nng_msg_get_pipe(msg);
- TEST_CHECK(nng_pipe_id(p2) > 0);
- nng_msg_free(msg);
-
- TEST_CHECK(nng_pipe_id(p1) != nng_pipe_id(p2));
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
-
- nng_msg_set_pipe(msg, p1);
- APPEND_STR(msg, "UNO");
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c1, &msg, 0) == 0);
- CHECK_STR(msg, "UNO");
- nng_msg_free(msg);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- nng_msg_set_pipe(msg, p2);
- APPEND_STR(msg, "DOS");
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c2, &msg, 0) == 0);
- CHECK_STR(msg, "DOS");
- nng_msg_free(msg);
-
- TEST_CHECK(nng_close(c1) == 0);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- nng_msg_set_pipe(msg, p1);
- APPEND_STR(msg, "EIN");
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c2, &msg, 0) == NNG_ETIMEDOUT);
-
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c2) == 0);
-}
-
-void
-test_poly_late(void)
-{
- nng_socket s1;
- nng_socket c1;
- bool v;
-
- TEST_CHECK(nng_pair1_open(&s1) == 0);
- TEST_CHECK(nng_pair1_open(&c1) == 0);
-
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == false);
-
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == 0);
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == true);
-
- TEST_CHECK(testutil_marry(s1, c1) == 0);
-
- TEST_CHECK(
- nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == NNG_ESTATE);
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c1) == 0);
-}
-
-void
-test_poly_default(void)
-{
- nng_socket s1;
- nng_socket c1;
- nng_socket c2;
- nng_msg * msg;
-
- TEST_CHECK(nng_pair1_open(&s1) == 0);
- TEST_CHECK(nng_pair1_open(&c1) == 0);
- TEST_CHECK(nng_pair1_open(&c2) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND) == 0);
- TEST_CHECK(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND) == 0);
-
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == 0);
-
- TEST_CHECK(testutil_marry(s1, c1) == 0);
- TEST_CHECK(testutil_marry(s1, c2) == 0);
-
- // This assumes poly picks the first suitor. Applications
- // should not make the same assumption.
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "YES");
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c1, &msg, 0) == 0);
- CHECK_STR(msg, "YES");
- nng_msg_free(msg);
-
- TEST_CHECK(nng_close(c1) == 0);
- testutil_sleep(10);
-
- // Verify that the other pipe is chosen as the next suitor.
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "AGAIN");
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c2, &msg, 0) == 0);
- CHECK_STR(msg, "AGAIN");
- nng_msg_free(msg);
-
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c2) == 0);
-}
-
-void
-test_poly_raw(void)
-{
- nng_socket s1;
- nng_socket c1;
- nng_socket c2;
- nng_msg * msg;
- bool v;
- uint32_t hops;
- nng_pipe p1;
- nng_pipe p2;
-
- TEST_CHECK(nng_pair1_open_raw(&s1) == 0);
- TEST_CHECK(nng_pair1_open(&c1) == 0);
- TEST_CHECK(nng_pair1_open(&c2) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
- TEST_CHECK(nng_setopt_ms(c2, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
-
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == 0);
-
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_PAIR1_POLY, true) == 0);
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v) == 0);
- TEST_CHECK(v == true);
-
- v = false;
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_RAW, &v) == 0);
- TEST_CHECK(v == true);
-
- TEST_CHECK(testutil_marry(s1, c1) == 0);
- TEST_CHECK(testutil_marry(s1, c2) == 0);
-
- // send/recv works
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "ONE");
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- CHECK_STR(msg, "ONE");
- p1 = nng_msg_get_pipe(msg);
- TEST_CHECK(nng_pipe_id(p1) > 0);
- TEST_CHECK(nng_msg_header_trim_u32(msg, &hops) == 0);
- TEST_CHECK(hops == 1);
- nng_msg_free(msg);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "TWO");
- TEST_CHECK(nng_sendmsg(c2, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- CHECK_STR(msg, "TWO");
- p2 = nng_msg_get_pipe(msg);
- TEST_CHECK(nng_pipe_id(p2) > 0);
- TEST_CHECK(nng_msg_header_trim_u32(msg, &hops) == 0);
- TEST_CHECK(hops == 1);
- nng_msg_free(msg);
-
- TEST_CHECK(nng_pipe_id(p1) != nng_pipe_id(p2));
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- nng_msg_set_pipe(msg, p1);
- APPEND_STR(msg, "UNO");
- TEST_CHECK(nng_msg_header_append_u32(msg, 1) == 0);
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c1, &msg, 0) == 0);
- CHECK_STR(msg, "UNO");
- nng_msg_free(msg);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- nng_msg_set_pipe(msg, p2);
- APPEND_STR(msg, "DOS");
- TEST_CHECK(nng_msg_header_append_u32(msg, 1) == 0);
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c2, &msg, 0) == 0);
- CHECK_STR(msg, "DOS");
- nng_msg_free(msg);
-
- // Verify closing the pipe stops any of its traffic
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- APPEND_STR(msg, "ONE");
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- CHECK_STR(msg, "ONE");
- p1 = nng_msg_get_pipe(msg);
- TEST_CHECK(nng_pipe_id(p1) > 0);
- nng_msg_free(msg);
-
- TEST_CHECK(nng_close(c1) == 0);
-
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- nng_msg_set_pipe(msg, p1);
- APPEND_STR(msg, "EIN");
- TEST_CHECK(nng_msg_header_append_u32(msg, 1) == 0);
- TEST_CHECK(nng_sendmsg(s1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(c2, &msg, 0) == NNG_ETIMEDOUT);
+ TEST_NNG_PASS(nng_close(s1));
+ TEST_NNG_PASS(nng_close(c1));
}
void
-test_raw(void)
+test_pair1_raw(void)
{
nng_socket s1;
bool raw;
- TEST_CHECK(nng_pair1_open(&s1) == 0);
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_RAW, &raw) == 0);
+ TEST_NNG_PASS(nng_pair1_open(&s1));
+ TEST_NNG_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw));
TEST_CHECK(raw == false);
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_RAW, true) == NNG_EREADONLY);
- TEST_CHECK(nng_close(s1) == 0);
+ TEST_NNG_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, true), NNG_EREADONLY);
+ TEST_NNG_PASS(nng_close(s1));
- TEST_CHECK(nng_pair1_open_raw(&s1) == 0);
- TEST_CHECK(nng_getopt_bool(s1, NNG_OPT_RAW, &raw) == 0);
+ TEST_NNG_PASS(nng_pair1_open_raw(&s1));
+ TEST_NNG_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw));
TEST_CHECK(raw == true);
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_RAW, false) == NNG_EREADONLY);
- TEST_CHECK(nng_close(s1) == 0);
+ TEST_NNG_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, false), NNG_EREADONLY);
+ TEST_NNG_PASS(nng_close(s1));
}
void
-test_ttl(void)
+test_pair1_ttl(void)
{
nng_socket s1;
nng_socket c1;
@@ -537,69 +264,69 @@ test_ttl(void)
uint32_t val;
int ttl;
- TEST_CHECK(nng_pair1_open_raw(&s1) == 0);
- TEST_CHECK(nng_pair1_open_raw(&c1) == 0);
- TEST_CHECK(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
- TEST_CHECK(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5) == 0);
+ TEST_NNG_PASS(nng_pair1_open_raw(&s1));
+ TEST_NNG_PASS(nng_pair1_open_raw(&c1));
+ TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5));
+ TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5));
// cannot set insane TTLs
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_MAXTTL, 0) == NNG_EINVAL);
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_MAXTTL, 1000) == NNG_EINVAL);
+ TEST_NNG_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 0), NNG_EINVAL);
+ TEST_NNG_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 1000), NNG_EINVAL);
ttl = 8;
- TEST_CHECK(nng_setopt(s1, NNG_OPT_MAXTTL, &ttl, 1) == NNG_EINVAL);
- TEST_CHECK(nng_setopt_bool(s1, NNG_OPT_MAXTTL, true) == NNG_EBADTYPE);
+ TEST_NNG_FAIL(nng_setopt(s1, NNG_OPT_MAXTTL, &ttl, 1), NNG_EINVAL);
+ TEST_NNG_FAIL(nng_setopt_bool(s1, NNG_OPT_MAXTTL, true), NNG_EBADTYPE);
- TEST_CHECK(testutil_marry(s1, c1) == 0);
+ TEST_NNG_PASS(testutil_marry(s1, c1));
// Let's check enforcement of TTL
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_MAXTTL, 4) == 0);
- TEST_CHECK(nng_getopt_int(s1, NNG_OPT_MAXTTL, &ttl) == 0);
+ TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 4));
+ TEST_NNG_PASS(nng_getopt_int(s1, NNG_OPT_MAXTTL, &ttl));
TEST_CHECK(ttl == 4);
// Bad TTL bounces
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 4) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == NNG_ETIMEDOUT);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 4));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT);
// Good TTL passes
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_append_u32(msg, 0xFEEDFACE) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 3) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- TEST_CHECK(nng_msg_trim_u32(msg, &val) == 0);
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_append_u32(msg, 0xFEEDFACE));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 3));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0));
+ TEST_NNG_PASS(nng_msg_trim_u32(msg, &val));
TEST_CHECK(val == 0xFEEDFACE);
- TEST_CHECK(nng_msg_header_trim_u32(msg, &val) == 0);
+ TEST_NNG_PASS(nng_msg_header_trim_u32(msg, &val));
TEST_CHECK(val == 4);
nng_msg_free(msg);
// Large TTL passes
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15) == 0);
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_append_u32(msg, 1234) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 14) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == 0);
- TEST_CHECK(nng_msg_trim_u32(msg, &val) == 0);
+ TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15));
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_append_u32(msg, 1234));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 14));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0));
+ TEST_NNG_PASS(nng_msg_trim_u32(msg, &val));
TEST_CHECK(val == 1234);
- TEST_CHECK(nng_msg_header_trim_u32(msg, &val) == 0);
+ TEST_NNG_PASS(nng_msg_header_trim_u32(msg, &val));
TEST_CHECK(val == 15);
nng_msg_free(msg);
// Max TTL fails
- TEST_CHECK(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15) == 0);
- TEST_CHECK(nng_msg_alloc(&msg, 0) == 0);
- TEST_CHECK(nng_msg_header_append_u32(msg, 15) == 0);
- TEST_CHECK(nng_sendmsg(c1, msg, 0) == 0);
- TEST_CHECK(nng_recvmsg(s1, &msg, 0) == NNG_ETIMEDOUT);
-
- TEST_CHECK(nng_close(s1) == 0);
- TEST_CHECK(nng_close(c1) == 0);
+ TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15));
+ TEST_NNG_PASS(nng_msg_alloc(&msg, 0));
+ TEST_NNG_PASS(nng_msg_header_append_u32(msg, 15));
+ TEST_NNG_PASS(nng_sendmsg(c1, msg, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT);
+
+ TEST_NNG_PASS(nng_close(s1));
+ TEST_NNG_PASS(nng_close(c1));
}
void
-test_validate_peer(void)
+test_pair1_validate_peer(void)
{
nng_socket s1, s2;
nng_stat * stats;
@@ -629,20 +356,65 @@ test_validate_peer(void)
nng_stats_free(stats);
}
+void
+test_pair1_recv_no_header(void)
+{
+ nng_socket s;
+ nng_socket c;
+ nng_msg * m;
+
+ TEST_NNG_PASS(nng_pair1_open(&s));
+ TEST_NNG_PASS(nng_pair1_open(&c));
+ TEST_NNG_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true));
+ TEST_NNG_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100));
+ TEST_NNG_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200));
+
+ TEST_NNG_PASS(testutil_marry(c, s));
+
+ TEST_NNG_PASS(nng_msg_alloc(&m, 0));
+ TEST_NNG_PASS(nng_sendmsg(c, m, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT);
+
+ TEST_NNG_PASS(nng_close(c));
+ TEST_NNG_PASS(nng_close(s));
+}
+
+void
+test_pair1_recv_garbage(void)
+{
+ nng_socket s;
+ nng_socket c;
+ nng_msg * m;
+
+ TEST_NNG_PASS(nng_pair1_open(&s));
+ TEST_NNG_PASS(nng_pair1_open(&c));
+ TEST_NNG_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true));
+ TEST_NNG_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100));
+ TEST_NNG_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200));
+
+ TEST_NNG_PASS(testutil_marry(c, s));
+
+ // ridiculous hop count
+ TEST_NNG_PASS(nng_msg_alloc(&m, 0));
+ TEST_NNG_PASS(nng_msg_append_u32(m, 0x1000));
+ TEST_NNG_PASS(nng_sendmsg(c, m, 0));
+ TEST_NNG_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT);
+
+ TEST_NNG_PASS(nng_close(c));
+ TEST_NNG_PASS(nng_close(s));
+}
+
TEST_LIST = {
{ "pair1 monogamous cooked", test_mono_cooked },
{ "pair1 monogamous faithful", test_mono_faithful },
{ "pair1 monogamous back pressure", test_mono_back_pressure },
{ "pair1 monogamous raw exchange", test_mono_raw_exchange },
{ "pair1 monogamous raw header", test_mono_raw_header },
- { "pair1 polyamorous best effort", test_poly_best_effort },
- { "pair1 polyamorous cooked", test_poly_cooked },
- { "pair1 polyamorous late", test_poly_late },
- { "pair1 polyamorous default", test_poly_default },
- { "pair1 polyamorous raw", test_poly_raw },
- { "pair1 raw", test_raw },
- { "pair1 ttl", test_ttl },
- { "pair1 validate peer", test_validate_peer },
+ { "pair1 raw", test_pair1_raw },
+ { "pair1 ttl", test_pair1_ttl },
+ { "pair1 validate peer", test_pair1_validate_peer },
+ { "pair1 recv no header", test_pair1_recv_no_header },
+ { "pair1 recv garbage", test_pair1_recv_garbage },
{ NULL, NULL },
};