diff --git a/CMakeLists.txt b/CMakeLists.txt index bd13b7eb9..f73e4e50d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,9 +87,7 @@ endif () # include or not include code based on what's actually present. add_library(nng) -add_library(nng_testing STATIC EXCLUDE_FROM_ALL - ${PROJECT_SOURCE_DIR}/tests/testutil.c - ${PROJECT_SOURCE_DIR}/tests/testutil.h) +add_library(nng_testing STATIC EXCLUDE_FROM_ALL) target_compile_definitions(nng_testing PUBLIC NNG_STATIC_LIB NNG_TEST_LIB NNG_PRIVATE) add_library(nng_private INTERFACE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5e0170a34..9a06bb9b3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,6 +30,8 @@ add_subdirectory(supplemental/tls) add_subdirectory(supplemental/util) add_subdirectory(supplemental/websocket) +add_subdirectory(testing) + # When building shared libraries we prefer to suppress default symbol # visibility, so that only the symbols that should be exposed in the # resulting library are. This is the default with Windows. diff --git a/src/compat/nanomsg/compat_tcp_test.c b/src/compat/nanomsg/compat_tcp_test.c index 24b42a010..ae4193b70 100644 --- a/src/compat/nanomsg/compat_tcp_test.c +++ b/src/compat/nanomsg/compat_tcp_test.c @@ -32,28 +32,28 @@ #include "compat_testutil.h" -#include -#include +#include void test_bind_and_close(void) { - int sb; - char addr[64]; - testutil_scratch_addr("tcp", sizeof (addr), addr); + int sb; + char *addr; - TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK(nn_bind(sb, addr) >= 0); - TEST_CHECK(nn_close(sb) == 0); + NUTS_ADDR(addr, "tcp"); + + NUTS_TRUE((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE(nn_bind(sb, addr) >= 0); + NUTS_TRUE(nn_close(sb) == 0); } void test_connect_and_close(void) { - int sc; - char addr[64]; - testutil_scratch_addr("tcp", sizeof (addr), addr); + int sc; + char *addr; + NUTS_ADDR(addr, "tcp"); TEST_NN_PASS((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); TEST_NN_PASS(nn_connect(sc, addr)); TEST_NN_PASS(nn_close(sc)); @@ -62,26 +62,25 @@ test_connect_and_close(void) void test_bind_and_connect(void) { - int sb, sc, p1, p2; - char addr[64]; - - testutil_scratch_addr("tcp", sizeof (addr), addr); + int sb, sc, p1, p2; + char *addr; - TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK(sb != sc); + NUTS_ADDR(addr, "tcp"); + NUTS_TRUE((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE(sb != sc); TEST_NN_MARRY_EX(sb, sc, addr, p1, p2); - TEST_CHECK(nn_close(sb) == 0); - TEST_CHECK(nn_close(sc) == 0); + TEST_NN_PASS(nn_close(sb)); + TEST_NN_PASS(nn_close(sc)); } void test_bad_addresses(void) { int s; - TEST_CHECK((s = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((s = nn_socket(AF_SP, NN_PAIR)) >= 0); TEST_NN_FAIL(nn_connect(s, "tcp://*:"), EINVAL); TEST_NN_FAIL(nn_connect(s, "tcp://*:1000000"), EINVAL); @@ -100,12 +99,12 @@ test_no_delay(void) int s; int opt; size_t sz; - TEST_CHECK((s = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((s = nn_socket(AF_SP, NN_PAIR)) >= 0); sz = sizeof(opt); TEST_NN_PASS(nn_getsockopt(s, NN_TCP, NN_TCP_NODELAY, &opt, &sz)); - TEST_CHECK(sz == sizeof(opt)); - TEST_CHECK(opt == 0); + NUTS_TRUE(sz == sizeof(opt)); + NUTS_TRUE(opt == 0); opt = 2; TEST_NN_FAIL( nn_setsockopt(s, NN_TCP, NN_TCP_NODELAY, &opt, sz), EINVAL); @@ -115,25 +114,24 @@ test_no_delay(void) opt = 3; TEST_NN_PASS(nn_getsockopt(s, NN_TCP, NN_TCP_NODELAY, &opt, &sz)); - TEST_CHECK(sz == sizeof(opt)); - TEST_CHECK(opt == 1); + NUTS_TRUE(sz == sizeof(opt)); + NUTS_TRUE(opt == 1); TEST_NN_PASS(nn_close(s)); } void test_ping_pong(void) { - int sb, sc, p1, p2; - char addr[64]; - - testutil_scratch_addr("tcp", sizeof(addr), addr); + int sb, sc, p1, p2; + char *addr; + NUTS_ADDR(addr, "tcp"); TEST_NN_PASS((sb = nn_socket(AF_SP, NN_PAIR))); TEST_NN_PASS((sc = nn_socket(AF_SP, NN_PAIR))); - TEST_CHECK(sb != sc); + NUTS_TRUE(sb != sc); TEST_NN_MARRY_EX(sc, sb, addr, p1, p2); - TEST_CHECK(p1 >= 0); - TEST_CHECK(p2 >= 0); + NUTS_TRUE(p1 >= 0); + NUTS_TRUE(p2 >= 0); /* Ping-pong test. */ for (int i = 0; i != 100; ++i) { @@ -142,75 +140,74 @@ test_ping_pong(void) int n; TEST_NN_PASS(nn_send(sc, "ABC", 3, 0)); TEST_NN_PASS(n = nn_recv(sb, buf, 4, 0)); - TEST_CHECK(n == 3); - TEST_CHECK(memcmp(buf, "ABC", 3) == 0); + NUTS_TRUE(n == 3); + NUTS_TRUE(memcmp(buf, "ABC", 3) == 0); TEST_NN_PASS(nn_send(sb, "DEF", 3, 0)); TEST_NN_PASS(n = nn_recv(sc, buf, 4, 0)); - TEST_CHECK(n == 3); - TEST_CHECK(memcmp(buf, "DEF", 3) == 0); + NUTS_TRUE(n == 3); + NUTS_TRUE(memcmp(buf, "DEF", 3) == 0); } - TEST_CHECK(nn_close(sb) == 0); - TEST_CHECK(nn_close(sc) == 0); + TEST_NN_PASS(nn_close(sb)); + TEST_NN_PASS(nn_close(sc)); } void test_pair_reject(void) { - int sb, sc, sd, p1, p2; - char addr[32]; + int sb, sc, sd, p1, p2; + char *addr; - testutil_scratch_addr("tcp", sizeof(addr), addr); + NUTS_ADDR(addr, "tcp"); - TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK((sd = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK(sb != sc); + NUTS_TRUE((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((sd = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE(sb != sc); TEST_NN_MARRY_EX(sc, sb, addr, p1, p2); - TEST_CHECK(nn_connect(sd, addr) >= 0); - testutil_sleep(200); + NUTS_TRUE(nn_connect(sd, addr) >= 0); + NUTS_SLEEP(200); - TEST_CHECK(nn_close(sb) == 0); - TEST_CHECK(nn_close(sc) == 0); - TEST_CHECK(nn_close(sd) == 0); + TEST_NN_PASS(nn_close(sb)); + TEST_NN_PASS(nn_close(sc)); + TEST_NN_PASS(nn_close(sd)); } void test_addr_in_use(void) { - int sb, sc; - char addr[64]; - - testutil_scratch_addr("tcp", sizeof(addr), addr); + int sb, sc; + char *addr; - TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK(sb != sc); + NUTS_ADDR(addr, "tcp"); + NUTS_TRUE((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE(sb != sc); TEST_NN_PASS(nn_bind(sb, addr)); TEST_NN_FAIL(nn_bind(sc, addr), EADDRINUSE); - TEST_CHECK(nn_close(sb) == 0); - TEST_CHECK(nn_close(sc) == 0); + TEST_NN_PASS(nn_close(sb)); + TEST_NN_PASS(nn_close(sc)); } void test_max_recv_size(void) { - int sb, sc, p1, p2; - int opt; - int n; - size_t sz; - char addr[64]; - char buf[64]; - - testutil_scratch_addr("tcp", sizeof(addr), addr); - - TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); - TEST_CHECK(sb != sc); + int sb, sc, p1, p2; + int opt; + int n; + size_t sz; + char buf[64]; + char *addr; + + NUTS_ADDR(addr, "tcp"); + + NUTS_TRUE((sb = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE((sc = nn_socket(AF_SP, NN_PAIR)) >= 0); + NUTS_TRUE(sb != sc); opt = 100; sz = sizeof(opt); TEST_NN_PASS(nn_setsockopt(sb, NN_SOL_SOCKET, NN_RCVTIMEO, &opt, sz)); @@ -231,8 +228,8 @@ test_max_recv_size(void) opt = -5; TEST_NN_PASS( nn_getsockopt(sb, NN_SOL_SOCKET, NN_RCVMAXSIZE, &opt, &sz)); - TEST_CHECK(opt == 4); - TEST_CHECK(sz == sizeof(opt)); + NUTS_TRUE(opt == 4); + NUTS_TRUE(sz == sizeof(opt)); TEST_NN_MARRY_EX(sc, sb, addr, p1, p2); @@ -240,8 +237,8 @@ test_max_recv_size(void) TEST_NN_PASS(nn_send(sc, "012345", 6, 0)); TEST_NN_PASS(n = nn_recv(sb, buf, sizeof(buf), 0)); - TEST_CHECK(n == 4); - TEST_CHECK(strcmp(buf, "ABC") == 0); + NUTS_TRUE(n == 4); + NUTS_TRUE(strcmp(buf, "ABC") == 0); TEST_NN_FAIL(nn_recv(sb, buf, sizeof(buf), 0), ETIMEDOUT); diff --git a/src/compat/nanomsg/compat_testutil.h b/src/compat/nanomsg/compat_testutil.h index 113d6672c..e0612adb2 100644 --- a/src/compat/nanomsg/compat_testutil.h +++ b/src/compat/nanomsg/compat_testutil.h @@ -45,30 +45,26 @@ extern "C" { // We do that to facilitate testing. Don't rely on this equivalence in your // own application code. -#define TEST_NN_MARRY(s1, s2) \ - do { \ - int rv_; \ - nng_socket s1_, s2_; \ - s1_.id = s1; \ - s2_.id = s2; \ - \ - TEST_CHECK_(testutil_marry(s1_, s2_) == 0, "marry %s", \ - nng_strerror(rv_)); \ +#define TEST_NN_MARRY(s1, s2) \ + do { \ + nng_socket s1_, s2_; \ + s1_.id = s1; \ + s2_.id = s2; \ + \ + NUTS_MARRY(s1_, s2_); \ } while (0) -#define TEST_NN_MARRY_EX(s1, s2, url, p1, p2) \ - do { \ - int rv_; \ - nng_socket s1_, s2_; \ - nng_pipe p1_, p2_; \ - s1_.id = s1; \ - s2_.id = s2; \ - rv_ = testutil_marry_ex(s1_, s2_, url, &p1_, &p2_); \ - TEST_CHECK_(rv_ == 0, "marry %s", nng_strerror(rv_)); \ - p1 = p1_.id; \ - p2 = p2_.id; \ - TEST_CHECK(p1 >= 0); \ - TEST_CHECK(p2 >= 0); \ +#define TEST_NN_MARRY_EX(s1, s2, url, p1, p2) \ + do { \ + nng_socket s1_, s2_; \ + nng_pipe p1_, p2_; \ + s1_.id = s1; \ + s2_.id = s2; \ + NUTS_MARRY_EX(s1_, s2_, url, &p1_, &p2_); \ + p1 = p1_.id; \ + p2 = p2_.id; \ + NUTS_TRUE(p1 >= 0); \ + NUTS_TRUE(p2 >= 0); \ } while (0) #ifdef __cplusplus diff --git a/src/core/aio_test.c b/src/core/aio_test.c index 787b6149e..3dab4b041 100644 --- a/src/core/aio_test.c +++ b/src/core/aio_test.c @@ -10,12 +10,7 @@ #include -#include -#include -#include - -#include "acutest.h" -#include "testutil.h" +#include static void cb_done(void *p) @@ -43,16 +38,16 @@ test_sleep(void) nng_time end = 0; nng_aio *aio; - TEST_NNG_PASS(nng_aio_alloc(&aio, sleep_done, &end)); + NUTS_PASS(nng_aio_alloc(&aio, sleep_done, &end)); start = nng_clock(); nng_sleep_aio(200, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(end != 0); - TEST_CHECK((end - start) >= 200); - TEST_CHECK((end - start) <= 1000); - TEST_CHECK((nng_clock() - start) >= 200); - TEST_CHECK((nng_clock() - start) <= 1000); + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(end != 0); + NUTS_TRUE((end - start) >= 200); + NUTS_TRUE((end - start) <= 1000); + NUTS_TRUE((nng_clock() - start) >= 200); + NUTS_TRUE((nng_clock() - start) <= 1000); nng_aio_free(aio); } @@ -63,17 +58,17 @@ test_sleep_timeout(void) nng_time end = 0; nng_aio *aio; - TEST_CHECK(nng_aio_alloc(&aio, sleep_done, &end) == 0); + NUTS_TRUE(nng_aio_alloc(&aio, sleep_done, &end) == 0); nng_aio_set_timeout(aio, 100); start = nng_clock(); nng_sleep_aio(2000, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_CHECK(end != 0); - TEST_CHECK((end - start) >= 100); - TEST_CHECK((end - start) <= 1000); - TEST_CHECK((nng_clock() - start) >= 100); - TEST_CHECK((nng_clock() - start) <= 1000); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_TRUE(end != 0); + NUTS_TRUE((end - start) >= 100); + NUTS_TRUE((end - start) <= 1000); + NUTS_TRUE((nng_clock() - start) >= 100); + NUTS_TRUE((nng_clock() - start) <= 1000); nng_aio_free(aio); } @@ -83,8 +78,8 @@ test_insane_nio(void) nng_aio *aio; nng_iov iov; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_FAIL(nng_aio_set_iov(aio, 1024, &iov), NNG_EINVAL); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_FAIL(nng_aio_set_iov(aio, 1024, &iov), NNG_EINVAL); nng_aio_free(aio); } @@ -94,12 +89,12 @@ test_provider_cancel(void) nng_aio *aio; int rv = 0; // We fake an empty provider that does not do anything. - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_CHECK(nng_aio_begin(aio) == true); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_TRUE(nng_aio_begin(aio) == true); nng_aio_defer(aio, cancel, &rv); nng_aio_cancel(aio); nng_aio_wait(aio); - TEST_CHECK(rv == NNG_ECANCELED); + NUTS_TRUE(rv == NNG_ECANCELED); nng_aio_free(aio); } @@ -110,18 +105,18 @@ test_consumer_cancel(void) nng_socket s1; int done = 0; - TEST_CHECK(nng_pair1_open(&s1) == 0); - TEST_CHECK(nng_aio_alloc(&a, cb_done, &done) == 0); + NUTS_TRUE(nng_pair1_open(&s1) == 0); + NUTS_TRUE(nng_aio_alloc(&a, cb_done, &done) == 0); nng_aio_set_timeout(a, NNG_DURATION_INFINITE); nng_recv_aio(s1, a); nng_aio_cancel(a); nng_aio_wait(a); - TEST_CHECK(done == 1); - TEST_CHECK(nng_aio_result(a) == NNG_ECANCELED); + NUTS_TRUE(done == 1); + NUTS_TRUE(nng_aio_result(a) == NNG_ECANCELED); nng_aio_free(a); - TEST_CHECK(nng_close(s1) == 0); + NUTS_TRUE(nng_close(s1) == 0); } void @@ -136,20 +131,20 @@ test_traffic(void) nng_msg * m; char * addr = "inproc://traffic"; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&s2)); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_pair1_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); - TEST_NNG_PASS(nng_aio_alloc(&rx_aio, cb_done, &rx_done)); - TEST_NNG_PASS(nng_aio_alloc(&tx_aio, cb_done, &tx_done)); + NUTS_PASS(nng_aio_alloc(&rx_aio, cb_done, &rx_done)); + NUTS_PASS(nng_aio_alloc(&tx_aio, cb_done, &tx_done)); nng_aio_set_timeout(rx_aio, 1000); nng_aio_set_timeout(tx_aio, 1000); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append(m, "hello", strlen("hello"))); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append(m, "hello", strlen("hello"))); nng_recv_aio(s2, rx_aio); @@ -159,22 +154,22 @@ test_traffic(void) nng_aio_wait(tx_aio); nng_aio_wait(rx_aio); - TEST_NNG_PASS(nng_aio_result(rx_aio)); - TEST_NNG_PASS(nng_aio_result(tx_aio)); + NUTS_PASS(nng_aio_result(rx_aio)); + NUTS_PASS(nng_aio_result(tx_aio)); - TEST_CHECK((m = nng_aio_get_msg(rx_aio)) != NULL); - TEST_CHECK(nng_msg_len(m) == strlen("hello")); - TEST_CHECK(memcmp(nng_msg_body(m), "hello", strlen("hello")) == 0); + NUTS_TRUE((m = nng_aio_get_msg(rx_aio)) != NULL); + NUTS_TRUE(nng_msg_len(m) == strlen("hello")); + NUTS_TRUE(memcmp(nng_msg_body(m), "hello", strlen("hello")) == 0); nng_msg_free(m); - TEST_CHECK(rx_done == 1); - TEST_CHECK(tx_done == 1); + NUTS_TRUE(rx_done == 1); + NUTS_TRUE(tx_done == 1); nng_aio_free(rx_aio); nng_aio_free(tx_aio); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s2)); } void @@ -184,15 +179,15 @@ test_explicit_timeout(void) nng_aio * a; int done = 0; - TEST_NNG_PASS(nng_pair1_open(&s)); - TEST_NNG_PASS(nng_aio_alloc(&a, cb_done, &done)); + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_aio_alloc(&a, cb_done, &done)); nng_aio_set_timeout(a, 40); nng_recv_aio(s, a); nng_aio_wait(a); - TEST_CHECK(done == 1); - TEST_NNG_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); + NUTS_TRUE(done == 1); + NUTS_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); nng_aio_free(a); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_close(s)); } void @@ -202,15 +197,15 @@ test_inherited_timeout(void) nng_aio * a; int done = 0; - TEST_NNG_PASS(nng_pair1_open(&s)); - TEST_NNG_PASS(nng_aio_alloc(&a, cb_done, &done)); - TEST_NNG_PASS(nng_socket_set_ms(s, NNG_OPT_RECVTIMEO, 40)); + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_aio_alloc(&a, cb_done, &done)); + NUTS_PASS(nng_socket_set_ms(s, NNG_OPT_RECVTIMEO, 40)); nng_recv_aio(s, a); nng_aio_wait(a); - TEST_CHECK(done == 1); - TEST_NNG_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); + NUTS_TRUE(done == 1); + NUTS_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); nng_aio_free(a); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_close(s)); } void @@ -220,18 +215,18 @@ test_zero_timeout(void) nng_aio * a; int done = 0; - TEST_NNG_PASS(nng_pair1_open(&s)); - TEST_NNG_PASS(nng_aio_alloc(&a, cb_done, &done)); + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_aio_alloc(&a, cb_done, &done)); nng_aio_set_timeout(a, NNG_DURATION_ZERO); nng_recv_aio(s, a); nng_aio_wait(a); - TEST_CHECK(done == 1); - TEST_NNG_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); + NUTS_TRUE(done == 1); + NUTS_FAIL(nng_aio_result(a), NNG_ETIMEDOUT); nng_aio_free(a); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_close(s)); } -TEST_LIST = { +NUTS_TESTS = { { "sleep", test_sleep }, { "sleep timeout", test_sleep_timeout }, { "insane nio", test_insane_nio }, diff --git a/src/core/buf_size_test.c b/src/core/buf_size_test.c index 172cb1f0e..b87579911 100644 --- a/src/core/buf_size_test.c +++ b/src/core/buf_size_test.c @@ -8,16 +8,11 @@ // found online at https://opensource.org/licenses/MIT. // -#include -#include -#include +#include #include -#include "acutest.h" -#include "testutil.h" - -void + void test_buffer_options(void) { nng_socket s1; @@ -31,38 +26,37 @@ test_buffer_options(void) NULL, }; - TEST_CHECK(nng_pair1_open(&s1) == 0); + NUTS_PASS(nng_pair1_open(&s1)); for (int i = 0; (opt = cases[i]) != NULL; i++) { - TEST_CASE(opt); + NUTS_CASE(opt); // Can't receive a size into zero bytes. sz = 0; - TEST_NNG_FAIL(nng_socket_get(s1, opt, &val, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(s1, opt, &val, &sz), NNG_EINVAL); // Can set a valid size - TEST_NNG_PASS(nng_socket_set_int(s1, opt, 1234)); - TEST_NNG_PASS(nng_socket_get_int(s1, opt, &val)); - TEST_CHECK(val == 1234); + NUTS_PASS(nng_socket_set_int(s1, opt, 1234)); + NUTS_PASS(nng_socket_get_int(s1, opt, &val)); + NUTS_TRUE(val == 1234); val = 0; sz = sizeof(val); - TEST_NNG_PASS(nng_socket_get(s1, opt, &val, &sz)); - TEST_CHECK(val == 1234); - TEST_CHECK(sz == sizeof(val)); + NUTS_PASS(nng_socket_get(s1, opt, &val, &sz)); + NUTS_TRUE(val == 1234); + NUTS_TRUE(sz == sizeof(val)); // Can't set a negative size - TEST_NNG_FAIL(nng_socket_set_int(s1, opt, -5), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(s1, opt, -5), NNG_EINVAL); // Can't pass a buf too small for size sz = sizeof(val) - 1; val = 1; - TEST_NNG_FAIL(nng_socket_set(s1, opt, &val, sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, opt, &val, sz), NNG_EINVAL); // Buffer sizes are limited to sane levels - TEST_NNG_FAIL( - nng_socket_set_int(s1, opt, 0x100000), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(s1, opt, 0x100000), NNG_EINVAL); } - TEST_CHECK(nng_close(s1) == 0); + NUTS_PASS(nng_close(s1)); } void @@ -81,38 +75,38 @@ test_buffer_legacy(void) NN_SNDBUF, }; - TEST_CHECK(nng_pair1_open(&s1) == 0); + NUTS_PASS(nng_pair1_open(&s1)); for (int i = 0; (opt = cases[i]) != NULL; i++) { int cnt; int os = (int) s1.id; size_t sz; int nno = legacy[i]; - TEST_CASE(opt); + NUTS_CASE(opt); sz = sizeof(cnt); - TEST_NNG_PASS(nng_socket_set_int(s1, opt, 10)); - TEST_CHECK( + NUTS_PASS(nng_socket_set_int(s1, opt, 10)); + NUTS_TRUE( nn_getsockopt(os, NN_SOL_SOCKET, nno, &cnt, &sz) == 0); - TEST_CHECK(cnt == 10240); // 1k multiple + NUTS_TRUE(cnt == 10240); // 1k multiple cnt = 1; - TEST_CHECK( + NUTS_TRUE( nn_setsockopt(os, NN_SOL_SOCKET, nno, &cnt, sz) == 0); - TEST_CHECK( + NUTS_TRUE( nn_getsockopt(os, NN_SOL_SOCKET, nno, &cnt, &sz) == 0); - TEST_CHECK(cnt == 1024); // round up! - TEST_NNG_PASS(nng_socket_get_int(s1, opt, &cnt)); - TEST_CHECK(cnt == 1); + NUTS_TRUE(cnt == 1024); // round up! + NUTS_PASS(nng_socket_get_int(s1, opt, &cnt)); + NUTS_TRUE(cnt == 1); - TEST_CHECK( + NUTS_TRUE( nn_setsockopt(os, NN_SOL_SOCKET, nno, &cnt, 100) == -1); - TEST_CHECK(nn_errno() == EINVAL); + NUTS_TRUE(nn_errno() == EINVAL); } - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s1)); } -TEST_LIST = { +NUTS_TESTS = { { "buffer options", test_buffer_options }, { "buffer legacy", test_buffer_legacy }, { NULL, NULL }, diff --git a/src/core/errors_test.c b/src/core/errors_test.c index 4e50467cf..52d820fe3 100644 --- a/src/core/errors_test.c +++ b/src/core/errors_test.c @@ -10,35 +10,31 @@ #include #include -#include - -#include -#include +#include static void test_known_errors(void) { - - TEST_STREQUAL(nng_strerror(NNG_ECLOSED), "Object closed"); - TEST_STREQUAL(nng_strerror(NNG_ETIMEDOUT), "Timed out"); + NUTS_MATCH(nng_strerror(NNG_ECLOSED), "Object closed"); + NUTS_MATCH(nng_strerror(NNG_ETIMEDOUT), "Timed out"); } static void test_unknown_errors(void) { for (unsigned i = 1; i < 0x1000000; i = i * 2 + 100) { - TEST_CHECK(nng_strerror(i) != NULL); + NUTS_TRUE(nng_strerror(i) != NULL); } } static void test_system_errors(void) { - TEST_STREQUAL(nng_strerror(NNG_ESYSERR + ENOENT), strerror(ENOENT)); - TEST_STREQUAL(nng_strerror(NNG_ESYSERR + EINVAL), strerror(EINVAL)); + NUTS_MATCH(nng_strerror(NNG_ESYSERR + ENOENT), strerror(ENOENT)); + NUTS_MATCH(nng_strerror(NNG_ESYSERR + EINVAL), strerror(EINVAL)); } -TEST_LIST = { +NUTS_TESTS = { { "known errors", test_known_errors }, { "unknown errors", test_unknown_errors }, { "system errors", test_system_errors }, diff --git a/src/core/id_test.c b/src/core/id_test.c index 8312b5ccc..51872e690 100644 --- a/src/core/id_test.c +++ b/src/core/id_test.c @@ -7,8 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include "acutest.h" -#include "testutil.h" +#include #include "idhash.h" @@ -22,16 +21,16 @@ test_basic(void) nni_id_map_init(&m, 0, 0, false); // insert it - TEST_NNG_PASS(nni_id_set(&m, 5, five)); + NUTS_PASS(nni_id_set(&m, 5, five)); // retrieve it - TEST_CHECK(nni_id_get(&m, 5) == five); + NUTS_TRUE(nni_id_get(&m, 5) == five); // change it - TEST_NNG_PASS(nni_id_set(&m, 5, four)); - TEST_CHECK(nni_id_get(&m, 5) == four); + NUTS_PASS(nni_id_set(&m, 5, four)); + NUTS_TRUE(nni_id_get(&m, 5) == four); // delete - TEST_NNG_PASS(nni_id_remove(&m, 5)); + NUTS_PASS(nni_id_remove(&m, 5)); nni_id_map_fini(&m); } @@ -44,17 +43,17 @@ test_random(void) for (i = 0; i < 2; i++) { nni_id_map m; nni_id_map_init(&m, 0, 0, true); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &id)); + NUTS_PASS(nni_id_alloc(&m, &id, &id)); nni_id_map_fini(&m); - TEST_CHECK(id != 0); + NUTS_TRUE(id != 0); if (id != 1) { break; } // one chance in 4 billion, but try again } - TEST_CHECK(id != 1); - TEST_CHECK(i < 2); + NUTS_TRUE(id != 1); + NUTS_TRUE(i < 2); } void @@ -67,14 +66,14 @@ test_collision(void) nni_id_map_init(&m, 0, 0, false); // Carefully crafted -- 13 % 8 == 5. - TEST_NNG_PASS(nni_id_set(&m, 5, five)); - TEST_NNG_PASS(nni_id_set(&m, 13, four)); - TEST_CHECK(nni_id_get(&m, 5) == five); - TEST_CHECK(nni_id_get(&m, 13) == four); + NUTS_PASS(nni_id_set(&m, 5, five)); + NUTS_PASS(nni_id_set(&m, 13, four)); + NUTS_TRUE(nni_id_get(&m, 5) == five); + NUTS_TRUE(nni_id_get(&m, 13) == four); // Delete the intermediate - TEST_NNG_PASS(nni_id_remove(&m, 5)); - TEST_CHECK(nni_id_get(&m, 13) == four); + NUTS_PASS(nni_id_remove(&m, 5)); + NUTS_TRUE(nni_id_get(&m, 13) == four); nni_id_map_fini(&m); } @@ -85,9 +84,9 @@ test_empty(void) nni_id_map m; nni_id_map_init(&m, 0, 0, false); - TEST_CHECK(nni_id_get(&m, 42) == NULL); - TEST_NNG_FAIL(nni_id_remove(&m, 42), NNG_ENOENT); - TEST_NNG_FAIL(nni_id_remove(&m, 1), NNG_ENOENT); + NUTS_TRUE(nni_id_get(&m, 42) == NULL); + NUTS_FAIL(nni_id_remove(&m, 42), NNG_ENOENT); + NUTS_FAIL(nni_id_remove(&m, 1), NNG_ENOENT); nni_id_map_fini(&m); } @@ -98,10 +97,10 @@ test_not_found(void) uint32_t id; nni_id_map_init(&m, 0, 0, false); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &id)); - TEST_NNG_FAIL(nni_id_remove(&m, 42), NNG_ENOENT); - TEST_NNG_FAIL(nni_id_remove(&m, 2), NNG_ENOENT); - TEST_NNG_PASS(nni_id_remove(&m, id)); + NUTS_PASS(nni_id_alloc(&m, &id, &id)); + NUTS_FAIL(nni_id_remove(&m, 42), NNG_ENOENT); + NUTS_FAIL(nni_id_remove(&m, 2), NNG_ENOENT); + NUTS_PASS(nni_id_remove(&m, id)); nni_id_map_fini(&m); } @@ -121,13 +120,13 @@ test_resize(void) for (i = 0; i < 1024; i++) { if ((rv = nni_id_set(&m, i, &expect[i])) != 0) { - TEST_NNG_PASS(rv); + NUTS_PASS(rv); } } for (i = 0; i < 1024; i++) { if ((rv = nni_id_remove(&m, i)) != 0) { - TEST_NNG_PASS(rv); + NUTS_PASS(rv); } } nni_id_map_fini(&m); @@ -143,24 +142,24 @@ test_dynamic(void) nni_id_map_init(&m, 10, 13, false); // We can fill the table. - TEST_NNG_PASS(nni_id_alloc(&m, &id, &expect[0])); - TEST_CHECK(id == 10); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &expect[1])); - TEST_CHECK(id == 11); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &expect[2])); - TEST_CHECK(id == 12); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &expect[3])); - TEST_CHECK(id == 13); + NUTS_PASS(nni_id_alloc(&m, &id, &expect[0])); + NUTS_TRUE(id == 10); + NUTS_PASS(nni_id_alloc(&m, &id, &expect[1])); + NUTS_TRUE(id == 11); + NUTS_PASS(nni_id_alloc(&m, &id, &expect[2])); + NUTS_TRUE(id == 12); + NUTS_PASS(nni_id_alloc(&m, &id, &expect[3])); + NUTS_TRUE(id == 13); // Adding another fails. - TEST_NNG_FAIL(nni_id_alloc(&m, &id, &expect[4]), NNG_ENOMEM); + NUTS_FAIL(nni_id_alloc(&m, &id, &expect[4]), NNG_ENOMEM); // Delete one. - TEST_NNG_PASS(nni_id_remove(&m, 11)); + NUTS_PASS(nni_id_remove(&m, 11)); // And now we can allocate one. - TEST_NNG_PASS(nni_id_alloc(&m, &id, &expect[4])); - TEST_CHECK(id == 11); + NUTS_PASS(nni_id_alloc(&m, &id, &expect[4])); + NUTS_TRUE(id == 11); nni_id_map_fini(&m); } @@ -174,10 +173,10 @@ test_set_out_of_range(void) nni_id_map_init(&m, 10, 13, false); // We can insert outside the range forcibly. - TEST_NNG_PASS(nni_id_set(&m, 1, &x)); - TEST_NNG_PASS(nni_id_set(&m, 100, &x)); - TEST_NNG_PASS(nni_id_alloc(&m, &id, &x)); - TEST_CHECK(id == 10); + NUTS_PASS(nni_id_set(&m, 1, &x)); + NUTS_PASS(nni_id_set(&m, 100, &x)); + NUTS_PASS(nni_id_alloc(&m, &id, &x)); + NUTS_TRUE(id == 10); nni_id_map_fini(&m); } @@ -207,7 +206,7 @@ test_stress(void) x = &values[rand() % NUM_VALUES]; values[v] = x; if ((rv = nni_id_set(&m, v, x)) != 0) { - TEST_NNG_PASS(rv); + NUTS_PASS(rv); goto out; } break; @@ -216,13 +215,13 @@ test_stress(void) rv = nni_id_remove(&m, v); if (values[v] == NULL) { if (rv != NNG_ENOENT) { - TEST_NNG_FAIL(rv, NNG_ENOENT); + NUTS_FAIL(rv, NNG_ENOENT); goto out; } } else { values[v] = NULL; if (rv != 0) { - TEST_NNG_PASS(rv); + NUTS_PASS(rv); goto out; } } @@ -230,20 +229,20 @@ test_stress(void) case 2: x = nni_id_get(&m, v); if (x != values[v]) { - TEST_CHECK(x == values[v]); + NUTS_TRUE(x == values[v]); goto out; } break; } } out: - TEST_CHECK(i == STRESS_LOAD); + NUTS_TRUE(i == STRESS_LOAD); // Post stress check. for (i = 0; i < NUM_VALUES; i++) { x = nni_id_get(&m, i); if (x != values[i]) { - TEST_CHECK(x == values[i]); + NUTS_TRUE(x == values[i]); break; } @@ -251,17 +250,17 @@ test_stress(void) // to fail. Otherwise there will be too many errors reported. rv = nni_id_remove(&m, i); if ((x == NULL) && (rv != NNG_ENOENT)) { - TEST_NNG_FAIL(rv, NNG_ENOENT); + NUTS_FAIL(rv, NNG_ENOENT); } else if ((x != NULL) && (rv != 0)) { - TEST_NNG_PASS(rv); + NUTS_PASS(rv); } } - TEST_CHECK(i == NUM_VALUES); + NUTS_TRUE(i == NUM_VALUES); nni_id_map_fini(&m); } -TEST_LIST = { +NUTS_TESTS = { { "basic", test_basic }, { "random", test_random }, { "collision", test_collision }, diff --git a/src/core/reconnect_test.c b/src/core/reconnect_test.c index 669261c94..308a3f78e 100644 --- a/src/core/reconnect_test.c +++ b/src/core/reconnect_test.c @@ -10,101 +10,95 @@ #include -#include -#include -#include -#include - -#include "acutest.h" -#include "testutil.h" +#include void test_dial_before_listen(void) { - nng_socket push; - nng_socket pull; - char addr[64]; + nng_socket s1; + nng_socket s2; + char *addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_push0_open(&push)); - TEST_NNG_PASS(nng_pull0_open(&pull)); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMINT, 10)); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMAXT, 10)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECONNMINT, 10)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECONNMAXT, 10)); - TEST_NNG_PASS(nng_dial(pull, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_listen(push, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_SLEEP(100); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_SEND_STR(push, "hello"); - TEST_NNG_RECV_STR(pull, "hello"); + NUTS_SEND(s1, "hello"); + NUTS_RECV(s2, "hello"); - TEST_NNG_PASS(nng_close(push)); - TEST_NNG_PASS(nng_close(pull)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void test_reconnect(void) { - nng_socket push; - nng_socket pull; + nng_socket s1; + nng_socket s2; nng_listener l; - char addr[64]; + char *addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_push0_open(&push)); - TEST_NNG_PASS(nng_pull0_open(&pull)); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMINT, 10)); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMAXT, 10)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECONNMINT, 10)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECONNMAXT, 10)); - TEST_NNG_PASS(nng_dial(pull, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_listen(push, addr, &l, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_SLEEP(100); + NUTS_PASS(nng_listen(s1, addr, &l, 0)); - TEST_NNG_SEND_STR(push, "hello"); - TEST_NNG_RECV_STR(pull, "hello"); + NUTS_SEND(s1, "hello"); + NUTS_RECV(s2, "hello"); // Close the listener - TEST_NNG_PASS(nng_listener_close(l)); + NUTS_PASS(nng_listener_close(l)); - TEST_NNG_PASS(nng_listen(push, addr, &l, 0)); - TEST_NNG_SEND_STR(push, "again"); - TEST_NNG_RECV_STR(pull, "again"); + NUTS_PASS(nng_listen(s1, addr, &l, 0)); + NUTS_SEND(s1, "again"); + NUTS_RECV(s2, "again"); - TEST_NNG_PASS(nng_close(push)); - TEST_NNG_PASS(nng_close(pull)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void test_reconnect_pipe(void) { - nng_socket push; - nng_socket pull; + nng_socket s1; + nng_socket s2; nng_listener l; nng_msg * msg; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_push0_open(&push)); - TEST_NNG_PASS(nng_pull0_open(&pull)); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMINT, 10)); - TEST_NNG_PASS(nng_socket_set_ms(pull, NNG_OPT_RECONNMAXT, 10)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMINT, 10)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMAXT, 10)); - TEST_NNG_PASS(nng_dial(pull, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_listen(push, addr, &l, 0)); + NUTS_PASS(nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_SLEEP(100); + NUTS_PASS(nng_listen(s2, addr, &l, 0)); - TEST_NNG_SEND_STR(push, "hello"); + NUTS_SEND(s2, "hello"); - TEST_NNG_PASS(nng_recvmsg(pull, &msg, 0)); - TEST_CHECK(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 6); - TEST_CHECK(strcmp(nng_msg_body(msg), "hello") == 0); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_TRUE(msg != NULL); + NUTS_TRUE(nng_msg_len(msg) == 6); + NUTS_MATCH(nng_msg_body(msg), "hello"); nng_pipe_close(nng_msg_get_pipe(msg)); nng_msg_free(msg); @@ -112,53 +106,54 @@ test_reconnect_pipe(void) // receiver, the receiver might not have got the update. If we // send too soon, then the message gets routed to the sender pipe // that is about to close. - testutil_sleep(100); + NUTS_SLEEP(100); - // Reconnect should happen more ore less immediately. - TEST_NNG_SEND_STR(push, "again"); - TEST_NNG_RECV_STR(pull, "again"); + // Reconnect should happen more or less immediately. + NUTS_SEND(s2, "again"); + NUTS_RECV(s1, "again"); - TEST_NNG_PASS(nng_close(push)); - TEST_NNG_PASS(nng_close(pull)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void test_reconnect_back_off_zero(void) { - nng_socket push; - nng_socket pull; - nng_time start; - char addr[64]; - testutil_scratch_addr("inproc", sizeof(addr), addr); + nng_socket s1; + nng_socket s2; + uint64_t start; + char * addr; + + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_push0_open(&push)); - TEST_NNG_PASS(nng_pull0_open(&pull)); + NUTS_ADDR(addr, "inproc"); // redial every 10 ms. - TEST_NNG_PASS(nng_socket_set_ms(push, NNG_OPT_RECONNMAXT, 0)); - TEST_NNG_PASS(nng_socket_set_ms(push, NNG_OPT_RECONNMINT, 10)); - TEST_NNG_PASS(nng_dial(push, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMAXT, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMINT, 10)); + NUTS_PASS(nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK)); // Start up the dialer first. It should keep retrying every 10 ms. // Wait 500 milliseconds. This gives a chance for an exponential // back-off to increase to a longer time. It should by this point // be well over 100 and probably closer to 200 ms. - nng_msleep(500); + NUTS_SLEEP(500); - start = nng_clock(); - TEST_NNG_PASS(nng_listen(pull, addr, NULL, 0)); + NUTS_CLOCK(start); + NUTS_PASS(nng_listen(s2, addr, NULL, 0)); - TEST_NNG_SEND_STR(push, "hello"); - TEST_NNG_RECV_STR(pull, "hello"); + NUTS_SEND(s1, "hello"); + NUTS_RECV(s2, "hello"); - TEST_CHECK(nng_clock() - start < 100); + NUTS_BEFORE(start + 100); - TEST_NNG_PASS(nng_close(push)); - TEST_NNG_PASS(nng_close(pull)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } -TEST_LIST = { +NUTS_TESTS = { { "dial before listen", test_dial_before_listen }, { "reconnect", test_reconnect }, { "reconnect back-off zero", test_reconnect_back_off_zero }, diff --git a/src/core/sock_test.c b/src/core/sock_test.c index ab557632d..9edfbf535 100644 --- a/src/core/sock_test.c +++ b/src/core/sock_test.c @@ -8,14 +8,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include "acutest.h" -#include "testutil.h" +#include void test_recv_timeout(void) @@ -24,14 +17,14 @@ test_recv_timeout(void) uint64_t now; nng_msg * msg = NULL; - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 10)); - now = testutil_clock(); - TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); - TEST_CHECK(msg == NULL); - TEST_CHECK(testutil_clock() >= (now + 9)); - TEST_CHECK(testutil_clock() < (now + 500)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 10)); + NUTS_CLOCK(now); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); + NUTS_TRUE(msg == NULL); + NUTS_BEFORE(now + 500); + NUTS_AFTER(now + 9); + NUTS_CLOSE(s1); } void @@ -41,13 +34,13 @@ test_recv_nonblock(void) uint64_t now; nng_msg * msg = NULL; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 10)); - now = testutil_clock(); - TEST_NNG_FAIL(nng_recvmsg(s1, &msg, NNG_FLAG_NONBLOCK), NNG_EAGAIN); - TEST_CHECK(msg == NULL); - TEST_CHECK(testutil_clock() < (now + 500)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 10)); + NUTS_CLOCK(now); + NUTS_FAIL(nng_recvmsg(s1, &msg, NNG_FLAG_NONBLOCK), NNG_EAGAIN); + NUTS_TRUE(msg == NULL); + NUTS_BEFORE(now + 500); + NUTS_CLOSE(s1); } void @@ -57,15 +50,15 @@ test_send_timeout(void) uint64_t now; nng_msg * msg; - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); - now = testutil_clock(); - TEST_NNG_FAIL(nng_sendmsg(s1, msg, 0), NNG_ETIMEDOUT); - TEST_CHECK(testutil_clock() >= (now + 9)); - TEST_CHECK(testutil_clock() < (now + 500)); + NUTS_OPEN(s1); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); + NUTS_CLOCK(now); + NUTS_FAIL(nng_sendmsg(s1, msg, 0), NNG_ETIMEDOUT); + NUTS_BEFORE(now + 500); + NUTS_AFTER(now + 9); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -75,26 +68,24 @@ test_send_nonblock(void) uint64_t now; nng_msg * msg; - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 500)); - now = testutil_clock(); - TEST_NNG_FAIL(nng_sendmsg(s1, msg, NNG_FLAG_NONBLOCK), NNG_EAGAIN); - TEST_CHECK(testutil_clock() < (now + 100)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 500)); + NUTS_CLOCK(now); + NUTS_FAIL(nng_sendmsg(s1, msg, NNG_FLAG_NONBLOCK), NNG_EAGAIN); + NUTS_BEFORE(now + 100); nng_msg_free(msg); + NUTS_CLOSE(s1); } void test_readonly_options(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_FAIL( - nng_socket_set_int(s1, NNG_OPT_RECVFD, 0), NNG_EREADONLY); - TEST_NNG_FAIL( - nng_socket_set_int(s1, NNG_OPT_SENDFD, 0), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_FAIL(nng_socket_set_int(s1, NNG_OPT_RECVFD, 0), NNG_EREADONLY); + NUTS_FAIL(nng_socket_set_int(s1, NNG_OPT_SENDFD, 0), NNG_EREADONLY); + NUTS_CLOSE(s1); } void @@ -102,14 +93,14 @@ test_socket_base(void) { nng_socket s1 = NNG_SOCKET_INITIALIZER; - TEST_CHECK(nng_socket_id(s1) < 0); - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_CHECK(nng_socket_id(s1) > 0); + NUTS_TRUE(nng_socket_id(s1) < 0); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_TRUE(nng_socket_id(s1) > 0); // Cannot set bogus options - TEST_NNG_FAIL(nng_socket_set_bool(s1, "BAD_OPT", false), NNG_ENOTSUP); + NUTS_FAIL(nng_socket_set_bool(s1, "BAD_OPT", false), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -123,34 +114,33 @@ test_socket_name(void) size_t sz; sz = sizeof(name); - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_socket_get(s1, NNG_OPT_SOCKNAME, name, &sz)); - TEST_CHECK(sz > 0 && sz < 64); - TEST_CHECK(sz == strlen(name) + 1); + NUTS_OPEN(s1); + NUTS_PASS(nng_socket_get(s1, NNG_OPT_SOCKNAME, name, &sz)); + NUTS_TRUE(sz > 0 && sz < 64); + NUTS_TRUE(sz == strlen(name) + 1); id = strtol(name, &end, 10); - TEST_CHECK(id == (long) s1.id); - TEST_CHECK(end != NULL && *end == '\0'); + NUTS_TRUE(id == (long) s1.id); + NUTS_TRUE(end != NULL && *end == '\0'); - TEST_NNG_PASS(nng_socket_set(s1, NNG_OPT_SOCKNAME, "hello", 6)); + NUTS_PASS(nng_socket_set(s1, NNG_OPT_SOCKNAME, "hello", 6)); sz = sizeof(name); - TEST_NNG_PASS(nng_socket_get(s1, NNG_OPT_SOCKNAME, name, &sz)); - TEST_CHECK(sz == 6); - TEST_STREQUAL(name, "hello"); + NUTS_PASS(nng_socket_get(s1, NNG_OPT_SOCKNAME, name, &sz)); + NUTS_TRUE(sz == 6); + NUTS_MATCH(name, "hello"); memset(name, 'A', 64); name[64] = '\0'; // strings must be NULL terminated - TEST_NNG_FAIL( - nng_socket_set(s1, NNG_OPT_SOCKNAME, name, 5), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, NNG_OPT_SOCKNAME, name, 5), NNG_EINVAL); - TEST_NNG_PASS(nng_socket_get_string(s1, NNG_OPT_SOCKNAME, &str)); - TEST_ASSERT(str != NULL); - TEST_CHECK(strlen(str) == 5); - TEST_STREQUAL(str, "hello"); + NUTS_PASS(nng_socket_get_string(s1, NNG_OPT_SOCKNAME, &str)); + NUTS_ASSERT(str != NULL); + NUTS_TRUE(strlen(str) == 5); + NUTS_MATCH(str, "hello"); nng_strfree(str); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -161,22 +151,20 @@ test_socket_name_oversize(void) size_t sz = sizeof(name); memset(name, 'A', sz); - TEST_NNG_PASS(nng_pair_open(&s1)); + NUTS_OPEN(s1); - TEST_NNG_FAIL( - nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz), NNG_EINVAL); name[sz - 1] = '\0'; - TEST_NNG_FAIL( - nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz), NNG_EINVAL); strcpy(name, "hello"); - TEST_NNG_PASS(nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz)); + NUTS_PASS(nng_socket_set(s1, NNG_OPT_SOCKNAME, name, sz)); sz = sizeof(name); memset(name, 'B', sz); - TEST_NNG_PASS(nng_getopt(s1, NNG_OPT_SOCKNAME, name, &sz)); - TEST_CHECK(sz == 6); - TEST_STREQUAL(name, "hello"); - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_getopt(s1, NNG_OPT_SOCKNAME, name, &sz)); + NUTS_TRUE(sz == 6); + NUTS_MATCH(name, "hello"); + NUTS_CLOSE(s1); } void @@ -190,33 +178,33 @@ test_send_recv(void) char * buf; char * a = "inproc://t1"; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_socket_set_int(s1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_socket_get_int(s1, NNG_OPT_RECVBUF, &len)); - TEST_CHECK(len == 1); + NUTS_PASS(nng_socket_set_int(s1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_get_int(s1, NNG_OPT_RECVBUF, &len)); + NUTS_TRUE(len == 1); - TEST_NNG_PASS(nng_socket_set_int(s1, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_socket_set_int(s2, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(s1, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(s2, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, to)); - TEST_NNG_PASS(nng_listen(s1, a, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, a, NULL, 0)); + NUTS_PASS(nng_listen(s1, a, NULL, 0)); + NUTS_PASS(nng_dial(s2, a, NULL, 0)); - TEST_NNG_PASS(nng_send(s1, "abc", 4, 0)); - TEST_NNG_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); - TEST_CHECK(buf != NULL); - TEST_CHECK(sz == 4); - TEST_CHECK(memcmp(buf, "abc", 4) == 0); + NUTS_PASS(nng_send(s1, "abc", 4, 0)); + NUTS_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); + NUTS_TRUE(buf != NULL); + NUTS_TRUE(sz == 4); + NUTS_TRUE(memcmp(buf, "abc", 4) == 0); nng_free(buf, sz); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void @@ -230,32 +218,32 @@ test_send_recv_zero_length(void) char * buf; char * a = "inproc://send-recv-zero-length"; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_socket_set_int(s1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_getopt_int(s1, NNG_OPT_RECVBUF, &len)); - TEST_CHECK(len == 1); + NUTS_PASS(nng_socket_set_int(s1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_getopt_int(s1, NNG_OPT_RECVBUF, &len)); + NUTS_TRUE(len == 1); - TEST_NNG_PASS(nng_socket_set_int(s1, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_socket_set_int(s2, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(s1, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(s2, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, to)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, to)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, to)); - TEST_NNG_PASS(nng_listen(s1, a, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, a, NULL, 0)); + NUTS_PASS(nng_listen(s1, a, NULL, 0)); + NUTS_PASS(nng_dial(s2, a, NULL, 0)); - TEST_NNG_PASS(nng_send(s1, "", 0, 0)); - TEST_NNG_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); - TEST_CHECK(buf == NULL); - TEST_CHECK(sz == 0); + NUTS_PASS(nng_send(s1, "", 0, 0)); + NUTS_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); + NUTS_TRUE(buf == NULL); + NUTS_TRUE(sz == 0); nng_free(buf, sz); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void @@ -263,9 +251,9 @@ test_connection_refused(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_FAIL(nng_dial(s1, "inproc://no", NULL, 0), NNG_ECONNREFUSED); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_FAIL(nng_dial(s1, "inproc://no", NULL, 0), NNG_ECONNREFUSED); + NUTS_CLOSE(s1); } void @@ -277,23 +265,23 @@ test_late_connection(void) nng_socket s2; char * a = "inproc://asy"; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMINT, 10)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMAXT, 10)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMINT, 10)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECONNMAXT, 10)); - TEST_NNG_PASS(nng_dial(s1, a, NULL, NNG_FLAG_NONBLOCK)); - TEST_NNG_PASS(nng_listen(s2, a, NULL, 0)); + NUTS_PASS(nng_dial(s1, a, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s2, a, NULL, 0)); nng_msleep(100); - TEST_NNG_PASS(nng_send(s1, "abc", 4, 0)); - TEST_NNG_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); - TEST_CHECK(sz == 4); - TEST_CHECK(memcmp(buf, "abc", 4) == 0); + NUTS_PASS(nng_send(s1, "abc", 4, 0)); + NUTS_PASS(nng_recv(s2, &buf, &sz, NNG_FLAG_ALLOC)); + NUTS_TRUE(sz == 4); + NUTS_TRUE(memcmp(buf, "abc", 4) == 0); nng_free(buf, sz); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void @@ -305,26 +293,26 @@ test_address_busy(void) nng_socket s1; nng_socket s2; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - TEST_CHECK(nng_listener_id(l) < 0); - TEST_NNG_PASS(nng_listen(s1, a, &l, 0)); - TEST_CHECK(nng_listener_id(l) > 0); + NUTS_TRUE(nng_listener_id(l) < 0); + NUTS_PASS(nng_listen(s1, a, &l, 0)); + NUTS_TRUE(nng_listener_id(l) > 0); // Cannot start another one. - TEST_NNG_FAIL(nng_listen(s1, a, NULL, 0), NNG_EADDRINUSE); + NUTS_FAIL(nng_listen(s1, a, NULL, 0), NNG_EADDRINUSE); // We can't restart it -- it's already running - TEST_NNG_FAIL(nng_listener_start(l, 0), NNG_ESTATE); + NUTS_FAIL(nng_listener_start(l, 0), NNG_ESTATE); // We can connect to it. - TEST_CHECK(nng_dialer_id(d) < 0); - TEST_NNG_PASS(nng_dial(s2, a, &d, 0)); - TEST_CHECK(nng_dialer_id(d) > 0); + NUTS_TRUE(nng_dialer_id(d) < 0); + NUTS_PASS(nng_dial(s2, a, &d, 0)); + NUTS_TRUE(nng_dialer_id(d) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void @@ -338,29 +326,29 @@ test_endpoint_types(void) char * a = "inproc://mumble..."; bool b; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); - TEST_CHECK(nng_dialer_id(d) < 0); - TEST_NNG_PASS(nng_dialer_create(&d, s1, a)); - TEST_CHECK(nng_dialer_id(d) > 0); + NUTS_TRUE(nng_dialer_id(d) < 0); + NUTS_PASS(nng_dialer_create(&d, s1, a)); + NUTS_TRUE(nng_dialer_id(d) > 0); // Forge a listener l2.id = nng_dialer_id(d); - TEST_NNG_FAIL(nng_listener_get_bool(l2, NNG_OPT_RAW, &b), NNG_ENOENT); - TEST_NNG_FAIL(nng_listener_close(l2), NNG_ENOENT); - TEST_NNG_PASS(nng_dialer_close(d)); + NUTS_FAIL(nng_listener_get_bool(l2, NNG_OPT_RAW, &b), NNG_ENOENT); + NUTS_FAIL(nng_listener_close(l2), NNG_ENOENT); + NUTS_PASS(nng_dialer_close(d)); - TEST_CHECK(nng_listener_id(l) < 0); - TEST_NNG_PASS(nng_listener_create(&l, s1, a)); - TEST_CHECK(nng_listener_id(l) > 0); + NUTS_TRUE(nng_listener_id(l) < 0); + NUTS_PASS(nng_listener_create(&l, s1, a)); + NUTS_TRUE(nng_listener_id(l) > 0); // Forge a dialer d2.id = nng_listener_id(l); - TEST_NNG_FAIL(nng_dialer_get_bool(d2, NNG_OPT_RAW, &b), NNG_ENOENT); - TEST_NNG_FAIL(nng_dialer_close(d2), NNG_ENOENT); - TEST_NNG_PASS(nng_listener_close(l)); + NUTS_FAIL(nng_dialer_get_bool(d2, NNG_OPT_RAW, &b), NNG_ENOENT); + NUTS_FAIL(nng_dialer_close(d2), NNG_ENOENT); + NUTS_PASS(nng_listener_close(l)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -368,10 +356,10 @@ test_bad_url(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_FAIL(nng_dial(s1, "bogus://1", NULL, 0), NNG_ENOTSUP); - TEST_NNG_FAIL(nng_listen(s1, "bogus://2", NULL, 0), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s1)); + NUTS_OPEN(s1); + NUTS_FAIL(nng_dial(s1, "bogus://1", NULL, 0), NNG_ENOTSUP); + NUTS_FAIL(nng_listen(s1, "bogus://2", NULL, 0), NNG_ENOTSUP); + NUTS_CLOSE(s1); } void @@ -383,25 +371,24 @@ test_url_option(void) nng_dialer d; size_t sz; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); // Listener - TEST_NNG_PASS(nng_listener_create(&l, s1, "inproc://url1")); + NUTS_PASS(nng_listener_create(&l, s1, "inproc://url1")); memset(url, 0, sizeof(url)); sz = sizeof(url); - TEST_NNG_PASS(nng_listener_get(l, NNG_OPT_URL, url, &sz)); - TEST_STREQUAL(url, "inproc://url1"); - TEST_NNG_FAIL( - nng_listener_set(l, NNG_OPT_URL, url, sz), NNG_EREADONLY); + NUTS_PASS(nng_listener_get(l, NNG_OPT_URL, url, &sz)); + NUTS_MATCH(url, "inproc://url1"); + NUTS_FAIL(nng_listener_set(l, NNG_OPT_URL, url, sz), NNG_EREADONLY); sz = sizeof(url); // Dialer - TEST_NNG_PASS(nng_dialer_create(&d, s1, "inproc://url2")); - TEST_NNG_PASS(nng_dialer_get(d, NNG_OPT_URL, url, &sz)); - TEST_STREQUAL(url, "inproc://url2"); - TEST_NNG_FAIL(nng_dialer_set(d, NNG_OPT_URL, url, sz), NNG_EREADONLY); + NUTS_PASS(nng_dialer_create(&d, s1, "inproc://url2")); + NUTS_PASS(nng_dialer_get(d, NNG_OPT_URL, url, &sz)); + NUTS_MATCH(url, "inproc://url2"); + NUTS_FAIL(nng_dialer_set(d, NNG_OPT_URL, url, sz), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -411,56 +398,53 @@ test_listener_options(void) nng_listener l; size_t sz; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); #ifndef NNG_ELIDE_DEPRECATED // Create a listener with the specified options - TEST_NNG_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 543)); - TEST_NNG_PASS(nng_listener_create(&l, s1, "inproc://listener_opts")); - TEST_NNG_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 543); + NUTS_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 543)); + NUTS_PASS(nng_listener_create(&l, s1, "inproc://listener_opts")); + NUTS_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 543); // Verify endpoint overrides - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 678)); - TEST_NNG_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 678); - TEST_NNG_PASS(nng_socket_get_size(s1, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 543); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 678)); + NUTS_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 678); + NUTS_PASS(nng_socket_get_size(s1, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 543); // And socket overrides again - TEST_NNG_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 911)); - TEST_NNG_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 911); + NUTS_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 911)); + NUTS_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 911); #else - TEST_NNG_PASS(nng_listener_create(&l, s1, "inproc://listener_opts")); - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 678)); - TEST_NNG_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 678); + NUTS_PASS(nng_listener_create(&l, s1, "inproc://listener_opts")); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 678)); + NUTS_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 678); #endif // Cannot set invalid options - TEST_NNG_FAIL(nng_listener_set_size(l, "BAD_OPT", 1), NNG_ENOTSUP); - TEST_NNG_FAIL( + NUTS_FAIL(nng_listener_set_size(l, "BAD_OPT", 1), NNG_ENOTSUP); + NUTS_FAIL( nng_listener_set_bool(l, NNG_OPT_RECVMAXSZ, true), NNG_EBADTYPE); - TEST_NNG_FAIL( - nng_listener_set(l, NNG_OPT_RECVMAXSZ, &sz, 1), NNG_EINVAL); + NUTS_FAIL(nng_listener_set(l, NNG_OPT_RECVMAXSZ, &sz, 1), NNG_EINVAL); // Cannot set inappropriate options - TEST_NNG_FAIL( + NUTS_FAIL( nng_listener_set_string(l, NNG_OPT_SOCKNAME, "1"), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_listener_set_bool(l, NNG_OPT_RAW, true), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_listener_set_ms(l, NNG_OPT_RECONNMINT, 1), NNG_ENOTSUP); - TEST_NNG_FAIL(nng_listener_set_string(l, NNG_OPT_SOCKNAME, "bogus"), + NUTS_FAIL(nng_listener_set_bool(l, NNG_OPT_RAW, true), NNG_ENOTSUP); + NUTS_FAIL(nng_listener_set_ms(l, NNG_OPT_RECONNMINT, 1), NNG_ENOTSUP); + NUTS_FAIL(nng_listener_set_string(l, NNG_OPT_SOCKNAME, "bogus"), NNG_ENOTSUP); // Read only options - TEST_NNG_FAIL(nng_listener_set_string(l, NNG_OPT_URL, "inproc://junk"), + NUTS_FAIL(nng_listener_set_string(l, NNG_OPT_URL, "inproc://junk"), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -470,54 +454,53 @@ test_dialer_options(void) nng_dialer d; size_t sz; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); #ifndef NNG_ELIDE_DEPRECATED // NOTE: This test will fail if eliding deprecated behavior. // Create a dialer with the specified options - TEST_NNG_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 543)); - TEST_NNG_PASS(nng_dialer_create(&d, s1, "inproc://dialer_opts")); - TEST_NNG_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 543); + NUTS_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 543)); + NUTS_PASS(nng_dialer_create(&d, s1, "inproc://dialer_opts")); + NUTS_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 543); // Verify endpoint overrides - TEST_NNG_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 678)); - TEST_NNG_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 678); - TEST_NNG_PASS(nng_socket_get_size(s1, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 543); + NUTS_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 678)); + NUTS_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 678); + NUTS_PASS(nng_socket_get_size(s1, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 543); // And socket overrides again - TEST_NNG_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 911)); - TEST_NNG_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 911); + NUTS_PASS(nng_socket_set_size(s1, NNG_OPT_RECVMAXSZ, 911)); + NUTS_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 911); #else - TEST_NNG_PASS(nng_dialer_create(&d, s1, "inproc://dialer_opts")); - TEST_NNG_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 678)); - TEST_NNG_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 678); + NUTS_PASS(nng_dialer_create(&d, s1, "inproc://dialer_opts")); + NUTS_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 678)); + NUTS_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 678); #endif // Cannot set invalid options - TEST_NNG_FAIL(nng_dialer_set_size(d, "BAD_OPT", 1), NNG_ENOTSUP); - TEST_NNG_FAIL( + NUTS_FAIL(nng_dialer_set_size(d, "BAD_OPT", 1), NNG_ENOTSUP); + NUTS_FAIL( nng_dialer_set_bool(d, NNG_OPT_RECVMAXSZ, true), NNG_EBADTYPE); - TEST_NNG_FAIL( - nng_dialer_set(d, NNG_OPT_RECVMAXSZ, &sz, 1), NNG_EINVAL); + NUTS_FAIL(nng_dialer_set(d, NNG_OPT_RECVMAXSZ, &sz, 1), NNG_EINVAL); // Cannot set inappropriate options - TEST_NNG_FAIL( + NUTS_FAIL( nng_dialer_set_string(d, NNG_OPT_SOCKNAME, "1"), NNG_ENOTSUP); - TEST_NNG_FAIL(nng_dialer_set_bool(d, NNG_OPT_RAW, true), NNG_ENOTSUP); - TEST_NNG_FAIL(nng_dialer_set_ms(d, NNG_OPT_SENDTIMEO, 1), NNG_ENOTSUP); - TEST_NNG_FAIL( + NUTS_FAIL(nng_dialer_set_bool(d, NNG_OPT_RAW, true), NNG_ENOTSUP); + NUTS_FAIL(nng_dialer_set_ms(d, NNG_OPT_SENDTIMEO, 1), NNG_ENOTSUP); + NUTS_FAIL( nng_dialer_set_string(d, NNG_OPT_SOCKNAME, "bogus"), NNG_ENOTSUP); // Read only options - TEST_NNG_FAIL(nng_dialer_set_string(d, NNG_OPT_URL, "inproc://junk"), + NUTS_FAIL(nng_dialer_set_string(d, NNG_OPT_URL, "inproc://junk"), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -532,25 +515,20 @@ test_endpoint_absent_options(void) d.id = 1999; l.id = 1999; - TEST_NNG_FAIL( - nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 10), NNG_ENOENT); - TEST_NNG_FAIL( - nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 10), NNG_ENOENT); + NUTS_FAIL(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, 10), NNG_ENOENT); + NUTS_FAIL(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 10), NNG_ENOENT); - TEST_NNG_FAIL(nng_dialer_get_bool(d, NNG_OPT_RAW, &b), NNG_ENOENT); - TEST_NNG_FAIL(nng_listener_get_bool(l, NNG_OPT_RAW, &b), NNG_ENOENT); + NUTS_FAIL(nng_dialer_get_bool(d, NNG_OPT_RAW, &b), NNG_ENOENT); + NUTS_FAIL(nng_listener_get_bool(l, NNG_OPT_RAW, &b), NNG_ENOENT); - TEST_NNG_FAIL( - nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &s), NNG_ENOENT); - TEST_NNG_FAIL( - nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &s), NNG_ENOENT); + NUTS_FAIL(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &s), NNG_ENOENT); + NUTS_FAIL(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &s), NNG_ENOENT); - TEST_NNG_FAIL(nng_dialer_get_int(d, NNG_OPT_RAW, &i), NNG_ENOENT); - TEST_NNG_FAIL(nng_listener_get_int(l, NNG_OPT_RAW, &i), NNG_ENOENT); + NUTS_FAIL(nng_dialer_get_int(d, NNG_OPT_RAW, &i), NNG_ENOENT); + NUTS_FAIL(nng_listener_get_int(l, NNG_OPT_RAW, &i), NNG_ENOENT); - TEST_NNG_FAIL(nng_dialer_get_ms(d, NNG_OPT_RECVTIMEO, &t), NNG_ENOENT); - TEST_NNG_FAIL( - nng_listener_get_ms(l, NNG_OPT_SENDTIMEO, &t), NNG_ENOENT); + NUTS_FAIL(nng_dialer_get_ms(d, NNG_OPT_RECVTIMEO, &t), NNG_ENOENT); + NUTS_FAIL(nng_listener_get_ms(l, NNG_OPT_SENDTIMEO, &t), NNG_ENOENT); } void @@ -568,44 +546,40 @@ test_timeout_options(void) NULL, }; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); for (int i = 0; cases[i] != NULL; i++) { bool b; TEST_CASE(cases[i]); // Can't receive a duration into zero bytes. sz = 0; - TEST_NNG_FAIL( - nng_socket_get(s1, cases[i], &to, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(s1, cases[i], &to, &sz), NNG_EINVAL); // Type mismatches - TEST_NNG_FAIL( - nng_socket_get_bool(s1, cases[i], &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(s1, cases[i], &b), NNG_EBADTYPE); sz = 1; - TEST_NNG_FAIL( - nng_socket_get(s1, cases[i], &b, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(s1, cases[i], &b, &sz), NNG_EINVAL); // Can set a valid duration - TEST_NNG_PASS(nng_socket_set_ms(s1, cases[i], 1234)); - TEST_NNG_PASS(nng_socket_get_ms(s1, cases[i], &to)); - TEST_CHECK(to == 1234); + NUTS_PASS(nng_socket_set_ms(s1, cases[i], 1234)); + NUTS_PASS(nng_socket_get_ms(s1, cases[i], &to)); + NUTS_TRUE(to == 1234); to = 0; sz = sizeof(to); - TEST_NNG_PASS(nng_socket_get(s1, cases[i], &to, &sz)); - TEST_CHECK(to == 1234); - TEST_CHECK(sz == sizeof(to)); + NUTS_PASS(nng_socket_get(s1, cases[i], &to, &sz)); + NUTS_TRUE(to == 1234); + NUTS_TRUE(sz == sizeof(to)); // Can't set a negative duration - TEST_NNG_FAIL(nng_socket_set_ms(s1, cases[i], -5), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_ms(s1, cases[i], -5), NNG_EINVAL); // Can't pass a buf too small for duration sz = sizeof(to) - 1; to = 1; - TEST_NNG_FAIL( - nng_socket_set(s1, cases[i], &to, sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, cases[i], &to, sz), NNG_EINVAL); } - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -621,44 +595,44 @@ test_size_options(void) NULL, }; - TEST_NNG_PASS(nng_pair1_open(&s1)); + NUTS_OPEN(s1); for (int i = 0; (opt = cases[i]) != NULL; i++) { TEST_CASE(opt); // Can't receive a size into zero bytes. sz = 0; - TEST_NNG_FAIL(nng_socket_get(s1, opt, &val, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(s1, opt, &val, &sz), NNG_EINVAL); // Can set a valid duration - TEST_NNG_PASS(nng_socket_set_size(s1, opt, 1234)); - TEST_NNG_PASS(nng_socket_get_size(s1, opt, &val)); - TEST_CHECK(val == 1234); + NUTS_PASS(nng_socket_set_size(s1, opt, 1234)); + NUTS_PASS(nng_socket_get_size(s1, opt, &val)); + NUTS_TRUE(val == 1234); val = 0; sz = sizeof(val); - TEST_NNG_PASS(nng_socket_get(s1, opt, &val, &sz)); - TEST_CHECK(val == 1234); - TEST_CHECK(sz == sizeof(val)); + NUTS_PASS(nng_socket_get(s1, opt, &val, &sz)); + NUTS_TRUE(val == 1234); + NUTS_TRUE(sz == sizeof(val)); // Can't pass a buf too small for size sz = sizeof(val) - 1; val = 1; - TEST_NNG_FAIL(nng_socket_set(s1, opt, &val, sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s1, opt, &val, sz), NNG_EINVAL); // We limit the limit to 4GB. Clear it if you want to // ship more than 4GB at a time. #if defined(_WIN64) || defined(_LP64) val = 0x10000u; val <<= 30u; - TEST_NNG_FAIL(nng_socket_set_size(s1, opt, val), NNG_EINVAL); - TEST_NNG_PASS(nng_socket_get_size(s1, opt, &val)); - TEST_CHECK(val == 1234); + NUTS_FAIL(nng_socket_set_size(s1, opt, val), NNG_EINVAL); + NUTS_PASS(nng_socket_get_size(s1, opt, &val)); + NUTS_TRUE(val == 1234); #endif } - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } -TEST_LIST = { +NUTS_TESTS = { { "recv timeout", test_recv_timeout }, { "recv non-block", test_recv_nonblock }, { "send timeout", test_send_timeout }, diff --git a/src/core/stats.c b/src/core/stats.c index 85e7d0309..e47650782 100644 --- a/src/core/stats.c +++ b/src/core/stats.c @@ -79,8 +79,8 @@ stat_unregister(nni_stat_item *item) } if ((item->si_info->si_alloc) && (item->si_info->si_type == NNG_STAT_STRING)) { - nni_strfree(item->si_value.sv_string); - item->si_value.sv_string = NULL; + nni_strfree(item->si_u.sv_string); + item->si_u.sv_string = NULL; } nni_list_node_remove(&item->si_node); } @@ -116,9 +116,9 @@ nni_stat_inc(nni_stat_item *item, uint64_t inc) { #ifdef NNG_ENABLE_STATS if (item->si_info->si_atomic) { - nni_atomic_add64(&item->si_value.sv_atomic, inc); + nni_atomic_add64(&item->si_u.sv_atomic, inc); } else { - item->si_value.sv_number += inc; + item->si_u.sv_number += inc; } #else NNI_ARG_UNUSED(item); @@ -132,9 +132,9 @@ nni_stat_dec(nni_stat_item *item, uint64_t inc) #ifdef NNG_ENABLE_STATS if (item->si_info->si_atomic) { - nni_atomic_sub64(&item->si_value.sv_atomic, inc); + nni_atomic_sub64(&item->si_u.sv_atomic, inc); } else { - item->si_value.sv_number -= inc; + item->si_u.sv_number -= inc; } #else NNI_ARG_UNUSED(item); @@ -147,7 +147,7 @@ nni_stat_set_id(nni_stat_item *item, int id) { #ifdef NNG_ENABLE_STATS // IDs don't change, so just set it. - item->si_value.sv_id = id; + item->si_u.sv_id = id; #else NNI_ARG_UNUSED(item); NNI_ARG_UNUSED(id); @@ -159,7 +159,7 @@ nni_stat_set_bool(nni_stat_item *item, bool b) { #ifdef NNG_ENABLE_STATS // bool is atomic by definitions. - item->si_value.sv_bool = b; + item->si_u.sv_bool = b; #else NNI_ARG_UNUSED(item); NNI_ARG_UNUSED(b); @@ -171,7 +171,7 @@ nni_stat_set_string(nni_stat_item *item, const char *s) { #ifdef NNG_ENABLE_STATS const nni_stat_info *info = item->si_info; - char * old = item->si_value.sv_string; + char * old = item->si_u.sv_string; nni_mtx_lock(&stats_val_lock); if ((s != NULL) && (old != NULL) && (strcmp(s, old) == 0)) { @@ -182,12 +182,12 @@ nni_stat_set_string(nni_stat_item *item, const char *s) if (!info->si_alloc) { // no allocation, just set it. - item->si_value.sv_string = (char *) s; + item->si_u.sv_string = (char *) s; nni_mtx_unlock(&stats_val_lock); return; } - item->si_value.sv_string = nni_strdup(s); + item->si_u.sv_string = nni_strdup(s); nni_mtx_unlock(&stats_val_lock); nni_strfree(old); @@ -202,9 +202,9 @@ nni_stat_set_value(nni_stat_item *item, uint64_t v) { #ifdef NNG_ENABLE_STATS if (item->si_info->si_atomic) { - nni_atomic_set64(&item->si_value.sv_atomic, v); + nni_atomic_set64(&item->si_u.sv_atomic, v); } else { - item->si_value.sv_number = v; + item->si_u.sv_number = v; } #else NNI_ARG_UNUSED(item); @@ -272,24 +272,24 @@ stat_update(nni_stat *stat) switch (info->si_type) { case NNG_STAT_SCOPE: case NNG_STAT_ID: - stat->s_val.sv_id = item->si_value.sv_id; + stat->s_val.sv_id = item->si_u.sv_id; break; case NNG_STAT_BOOLEAN: - stat->s_val.sv_bool = item->si_value.sv_bool; + stat->s_val.sv_bool = item->si_u.sv_bool; break; case NNG_STAT_COUNTER: case NNG_STAT_LEVEL: if (info->si_atomic) { stat->s_val.sv_value = nni_atomic_get64( - (nni_atomic_u64 *) &item->si_value.sv_atomic); + (nni_atomic_u64 *) &item->si_u.sv_atomic); } else { - stat->s_val.sv_value = item->si_value.sv_number; + stat->s_val.sv_value = item->si_u.sv_number; } break; case NNG_STAT_STRING: nni_mtx_lock(&stats_val_lock); old = stat->s_val.sv_string; - str = item->si_value.sv_string; + str = item->si_u.sv_string; // If we have to allocate a new string, do so. But // only do it if new string is different. diff --git a/src/core/stats.h b/src/core/stats.h index 950df78f0..de1879cac 100644 --- a/src/core/stats.h +++ b/src/core/stats.h @@ -14,7 +14,7 @@ #include "core/defs.h" // Statistics support. This is inspired in part by the Solaris -// kstats framework, but we've simplified and tuned it for our use. +// kernel stats framework, but we've simplified and tuned it for our use. // // Collection of the stats will be done in two steps. First we // will walk the list of stats, with the chain held, allocating @@ -45,7 +45,7 @@ struct nni_stat_item { char * sv_string; bool sv_bool; int sv_id; - } si_value; + } si_u; }; struct nni_stat_info { diff --git a/src/core/url_test.c b/src/core/url_test.c index 847b7df33..6504ff6c4 100644 --- a/src/core/url_test.c +++ b/src/core/url_test.c @@ -1,5 +1,5 @@ // -// Copyright 2018 Staysail Systems, Inc. +// Copyright 2020 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This software is supplied under the terms of the MIT License, a @@ -8,33 +8,26 @@ // found online at https://opensource.org/licenses/MIT. // - -#include "acutest.h" - +#include "nng_impl.h" +#include #include -#include - -#include "core/url.h" - -#include "testutil.h" - void test_url_host(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://www.google.com")); - TEST_ASSERT(url != NULL); - TEST_CHECK(strcmp(url->u_scheme, "http") == 0); - TEST_CHECK(strcmp(url->u_host, "www.google.com") == 0); - TEST_CHECK(strcmp(url->u_hostname, "www.google.com") == 0); - TEST_CHECK(strcmp(url->u_port, "80") == 0); - TEST_CHECK(strcmp(url->u_path, "") == 0); - TEST_CHECK(strcmp(url->u_requri, "") == 0); - TEST_CHECK(url->u_query == NULL); - TEST_CHECK(url->u_fragment == NULL); - TEST_CHECK(url->u_userinfo == NULL); + NUTS_PASS(nng_url_parse(&url, "http://www.google.com")); + NUTS_ASSERT(url != NULL); + NUTS_TRUE(strcmp(url->u_scheme, "http") == 0); + NUTS_TRUE(strcmp(url->u_host, "www.google.com") == 0); + NUTS_TRUE(strcmp(url->u_hostname, "www.google.com") == 0); + NUTS_TRUE(strcmp(url->u_port, "80") == 0); + NUTS_TRUE(strcmp(url->u_path, "") == 0); + NUTS_TRUE(strcmp(url->u_requri, "") == 0); + NUTS_TRUE(url->u_query == NULL); + NUTS_TRUE(url->u_fragment == NULL); + NUTS_TRUE(url->u_userinfo == NULL); nng_url_free(url); } @@ -42,17 +35,17 @@ void test_url_host_port(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://www.google.com:1234")); - TEST_ASSERT(url != NULL); - TEST_CHECK(strcmp(url->u_scheme, "http") == 0); - TEST_CHECK(strcmp(url->u_host, "www.google.com:1234") == 0); - TEST_CHECK(strcmp(url->u_hostname, "www.google.com") == 0); - TEST_CHECK(strcmp(url->u_port, "1234") == 0); - TEST_CHECK(strcmp(url->u_path, "") == 0); - TEST_CHECK(strcmp(url->u_requri, "") == 0); - TEST_CHECK(url->u_query == NULL); - TEST_CHECK(url->u_fragment == NULL); - TEST_CHECK(url->u_userinfo == NULL); + NUTS_PASS(nng_url_parse(&url, "http://www.google.com:1234")); + NUTS_ASSERT(url != NULL); + NUTS_TRUE(strcmp(url->u_scheme, "http") == 0); + NUTS_TRUE(strcmp(url->u_host, "www.google.com:1234") == 0); + NUTS_TRUE(strcmp(url->u_hostname, "www.google.com") == 0); + NUTS_TRUE(strcmp(url->u_port, "1234") == 0); + NUTS_TRUE(strcmp(url->u_path, "") == 0); + NUTS_TRUE(strcmp(url->u_requri, "") == 0); + NUTS_TRUE(url->u_query == NULL); + NUTS_TRUE(url->u_fragment == NULL); + NUTS_TRUE(url->u_userinfo == NULL); nng_url_free(url); } @@ -61,18 +54,18 @@ test_url_host_port_path(void) { nng_url *url; - TEST_NNG_PASS( + NUTS_PASS( nng_url_parse(&url, "http://www.google.com:1234/somewhere")); - TEST_ASSERT(url != NULL); - TEST_CHECK(strcmp(url->u_scheme, "http") == 0); - TEST_CHECK(strcmp(url->u_host, "www.google.com:1234") == 0); - TEST_CHECK(strcmp(url->u_hostname, "www.google.com") == 0); - TEST_CHECK(strcmp(url->u_port, "1234") == 0); - TEST_CHECK(strcmp(url->u_path, "/somewhere") == 0); - TEST_CHECK(strcmp(url->u_requri, "/somewhere") == 0); - TEST_CHECK(url->u_userinfo == NULL); - TEST_CHECK(url->u_query == NULL); - TEST_CHECK(url->u_fragment == NULL); + NUTS_ASSERT(url != NULL); + NUTS_TRUE(strcmp(url->u_scheme, "http") == 0); + NUTS_TRUE(strcmp(url->u_host, "www.google.com:1234") == 0); + NUTS_TRUE(strcmp(url->u_hostname, "www.google.com") == 0); + NUTS_TRUE(strcmp(url->u_port, "1234") == 0); + NUTS_TRUE(strcmp(url->u_path, "/somewhere") == 0); + NUTS_TRUE(strcmp(url->u_requri, "/somewhere") == 0); + NUTS_TRUE(url->u_userinfo == NULL); + NUTS_TRUE(url->u_query == NULL); + NUTS_TRUE(url->u_fragment == NULL); nng_url_free(url); } @@ -80,18 +73,18 @@ void test_url_user_info(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse( + NUTS_PASS(nng_url_parse( &url, "http://garrett@www.google.com:1234/somewhere")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_userinfo, "garrett"); - TEST_STREQUAL(url->u_host, "www.google.com:1234"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_port, "1234"); - TEST_STREQUAL(url->u_path, "/somewhere"); - TEST_STREQUAL(url->u_requri, "/somewhere"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_userinfo, "garrett"); + NUTS_MATCH(url->u_host, "www.google.com:1234"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_port, "1234"); + NUTS_MATCH(url->u_path, "/somewhere"); + NUTS_MATCH(url->u_requri, "/somewhere"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); nng_url_free(url); } @@ -99,18 +92,18 @@ void test_url_path_query_param(void) { nng_url *url; - TEST_NNG_PASS( + NUTS_PASS( nng_url_parse(&url, "http://www.google.com/somewhere?result=yes")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "www.google.com"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/somewhere"); - TEST_STREQUAL(url->u_query, "result=yes"); - TEST_STREQUAL(url->u_requri, "/somewhere?result=yes"); - TEST_NULL(url->u_userinfo); - TEST_NULL(url->u_fragment); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "www.google.com"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/somewhere"); + NUTS_MATCH(url->u_query, "result=yes"); + NUTS_MATCH(url->u_requri, "/somewhere?result=yes"); + NUTS_NULL(url->u_userinfo); + NUTS_NULL(url->u_fragment); nng_url_free(url); } @@ -118,19 +111,19 @@ void test_url_query_param_anchor(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, + NUTS_PASS(nng_url_parse(&url, "http://www.google.com/" "somewhere?result=yes#chapter1")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "www.google.com"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/somewhere"); - TEST_STREQUAL(url->u_query, "result=yes"); - TEST_STREQUAL(url->u_fragment, "chapter1"); - TEST_STREQUAL(url->u_requri, "/somewhere?result=yes#chapter1"); - TEST_NULL(url->u_userinfo); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "www.google.com"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/somewhere"); + NUTS_MATCH(url->u_query, "result=yes"); + NUTS_MATCH(url->u_fragment, "chapter1"); + NUTS_MATCH(url->u_requri, "/somewhere?result=yes#chapter1"); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -138,18 +131,18 @@ void test_url_path_anchor(void) { nng_url *url; - TEST_NNG_PASS( + NUTS_PASS( nng_url_parse(&url, "http://www.google.com/somewhere#chapter2")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "www.google.com"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/somewhere"); - TEST_STREQUAL(url->u_fragment, "chapter2"); - TEST_STREQUAL(url->u_requri, "/somewhere#chapter2"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_userinfo); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "www.google.com"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/somewhere"); + NUTS_MATCH(url->u_fragment, "chapter2"); + NUTS_MATCH(url->u_requri, "/somewhere#chapter2"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -157,17 +150,17 @@ void test_url_anchor(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://www.google.com#chapter3")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "www.google.com"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_fragment, "chapter3"); - TEST_STREQUAL(url->u_requri, "#chapter3"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "http://www.google.com#chapter3")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "www.google.com"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_fragment, "chapter3"); + NUTS_MATCH(url->u_requri, "#chapter3"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -175,17 +168,17 @@ void test_url_query_param(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://www.google.com?color=red")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "www.google.com"); - TEST_STREQUAL(url->u_hostname, "www.google.com"); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_query, "color=red"); - TEST_STREQUAL(url->u_requri, "?color=red"); - TEST_ASSERT(url != NULL); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "http://www.google.com?color=red")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "www.google.com"); + NUTS_MATCH(url->u_hostname, "www.google.com"); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_query, "color=red"); + NUTS_MATCH(url->u_requri, "?color=red"); + NUTS_ASSERT(url != NULL); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -193,16 +186,16 @@ void test_url_v6_host(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://[::1]")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "[::1]"); - TEST_STREQUAL(url->u_hostname, "::1"); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "80"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "http://[::1]")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "[::1]"); + NUTS_MATCH(url->u_hostname, "::1"); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "80"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -210,16 +203,16 @@ void test_url_v6_host_port(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://[::1]:29")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "[::1]:29"); - TEST_STREQUAL(url->u_hostname, "::1"); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "29"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "http://[::1]:29")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "[::1]:29"); + NUTS_MATCH(url->u_hostname, "::1"); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "29"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -227,16 +220,16 @@ void test_url_v6_host_port_path(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "http://[::1]:29/bottles")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_host, "[::1]:29"); - TEST_STREQUAL(url->u_hostname, "::1"); - TEST_STREQUAL(url->u_path, "/bottles"); - TEST_STREQUAL(url->u_port, "29"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "http://[::1]:29/bottles")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_host, "[::1]:29"); + NUTS_MATCH(url->u_hostname, "::1"); + NUTS_MATCH(url->u_path, "/bottles"); + NUTS_MATCH(url->u_port, "29"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -244,16 +237,16 @@ void test_url_tcp_port(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "tcp://:9876/")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "tcp"); - TEST_STREQUAL(url->u_host, ":9876"); - TEST_STREQUAL(url->u_hostname, ""); - TEST_STREQUAL(url->u_path, "/"); - TEST_STREQUAL(url->u_port, "9876"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "tcp://:9876/")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "tcp"); + NUTS_MATCH(url->u_host, ":9876"); + NUTS_MATCH(url->u_hostname, ""); + NUTS_MATCH(url->u_path, "/"); + NUTS_MATCH(url->u_port, "9876"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -262,16 +255,16 @@ test_url_bare_ws(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "ws://")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "ws"); - TEST_STREQUAL(url->u_host, ""); - TEST_STREQUAL(url->u_hostname, ""); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "80"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "ws://")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "ws"); + NUTS_MATCH(url->u_host, ""); + NUTS_MATCH(url->u_hostname, ""); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "80"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -279,16 +272,16 @@ void test_url_ws_wildcard(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "ws://*:12345/foobar")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "ws"); - TEST_STREQUAL(url->u_host, ":12345"); - TEST_STREQUAL(url->u_hostname, ""); - TEST_STREQUAL(url->u_path, "/foobar"); - TEST_STREQUAL(url->u_port, "12345"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_NULL(url->u_userinfo); + NUTS_PASS(nng_url_parse(&url, "ws://*:12345/foobar")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "ws"); + NUTS_MATCH(url->u_host, ":12345"); + NUTS_MATCH(url->u_hostname, ""); + NUTS_MATCH(url->u_path, "/foobar"); + NUTS_MATCH(url->u_port, "12345"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_NULL(url->u_userinfo); nng_url_free(url); } @@ -296,16 +289,16 @@ void test_url_ssh(void) { nng_url *url; - TEST_NNG_PASS(nng_url_parse(&url, "ssh://user@host.example.com")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "ssh"); - TEST_STREQUAL(url->u_host, "host.example.com"); - TEST_STREQUAL(url->u_hostname, "host.example.com"); - TEST_STREQUAL(url->u_path, ""); - TEST_STREQUAL(url->u_port, "22"); - TEST_NULL(url->u_query); - TEST_NULL(url->u_fragment); - TEST_STREQUAL(url->u_userinfo, "user"); + NUTS_PASS(nng_url_parse(&url, "ssh://user@host.example.com")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "ssh"); + NUTS_MATCH(url->u_host, "host.example.com"); + NUTS_MATCH(url->u_hostname, "host.example.com"); + NUTS_MATCH(url->u_path, ""); + NUTS_MATCH(url->u_port, "22"); + NUTS_NULL(url->u_query); + NUTS_NULL(url->u_fragment); + NUTS_MATCH(url->u_userinfo, "user"); nng_url_free(url); } @@ -313,33 +306,33 @@ void test_url_bad_scheme(void) { nng_url *url = NULL; - TEST_NNG_FAIL(nng_url_parse(&url, "www.google.com"), NNG_EINVAL); - TEST_NULL(url); - TEST_NNG_FAIL(nng_url_parse(&url, "http:www.google.com"), NNG_EINVAL); - TEST_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "www.google.com"), NNG_EINVAL); + NUTS_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "http:www.google.com"), NNG_EINVAL); + NUTS_NULL(url); } void test_url_bad_ipv6(void) { nng_url *url = NULL; - TEST_NNG_FAIL(nng_url_parse(&url, "http://[::1"), NNG_EINVAL); - TEST_NULL(url); - TEST_NNG_FAIL(nng_url_parse(&url, "http://[::1]bogus"), NNG_EINVAL); - TEST_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "http://[::1"), NNG_EINVAL); + NUTS_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "http://[::1]bogus"), NNG_EINVAL); + NUTS_NULL(url); } void test_url_canonify(void) { nng_url *url = NULL; - TEST_NNG_PASS(nng_url_parse( + NUTS_PASS(nng_url_parse( &url, "hTTp://www.EXAMPLE.com/bogus/.%2e/%7egarrett")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_hostname, "www.example.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/~garrett"); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_hostname, "www.example.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/~garrett"); nng_url_free(url); } @@ -347,12 +340,12 @@ void test_url_path_resolve(void) { nng_url *url = NULL; - TEST_NNG_PASS( + NUTS_PASS( nng_url_parse(&url, "http://www.x.com//abc/def/./x/..///./../y")); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_hostname, "www.x.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/abc/y"); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_hostname, "www.x.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/abc/y"); nng_url_free(url); } @@ -360,14 +353,14 @@ void test_url_query_info_pass(void) { nng_url *url = NULL; - TEST_NNG_PASS( + NUTS_PASS( nng_url_parse(&url, "http://www.x.com/?/abc/def/./x/.././../y")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_hostname, "www.x.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/"); - TEST_STREQUAL(url->u_query, "/abc/def/./x/.././../y"); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_hostname, "www.x.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/"); + NUTS_MATCH(url->u_query, "/abc/def/./x/.././../y"); nng_url_free(url); } @@ -375,22 +368,22 @@ void test_url_bad_utf8(void) { nng_url *url = NULL; - TEST_NNG_FAIL(nng_url_parse(&url, "http://x.com/x%80x"), NNG_EINVAL); - TEST_NULL(url); - TEST_NNG_FAIL(nng_url_parse(&url, "http://x.com/x%c0%81"), NNG_EINVAL); - TEST_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "http://x.com/x%80x"), NNG_EINVAL); + NUTS_NULL(url); + NUTS_FAIL(nng_url_parse(&url, "http://x.com/x%c0%81"), NNG_EINVAL); + NUTS_NULL(url); } void test_url_good_utf8(void) { nng_url *url = NULL; - TEST_NNG_PASS(nng_url_parse(&url, "http://www.x.com/%c2%a2_cents")); - TEST_ASSERT(url != NULL); - TEST_STREQUAL(url->u_scheme, "http"); - TEST_STREQUAL(url->u_hostname, "www.x.com"); - TEST_STREQUAL(url->u_port, "80"); - TEST_STREQUAL(url->u_path, "/\xc2\xa2_cents"); + NUTS_PASS(nng_url_parse(&url, "http://www.x.com/%c2%a2_cents")); + NUTS_ASSERT(url != NULL); + NUTS_MATCH(url->u_scheme, "http"); + NUTS_MATCH(url->u_hostname, "www.x.com"); + NUTS_MATCH(url->u_port, "80"); + NUTS_MATCH(url->u_path, "/\xc2\xa2_cents"); nng_url_free(url); } @@ -402,55 +395,55 @@ test_url_decode(void) out[3] = 'x'; len = nni_url_decode(out, "abc", 3); - TEST_CHECK(len == 3); - TEST_CHECK(memcmp(out, "abc", 3) == 0); - TEST_CHECK(out[3] == 'x'); + NUTS_TRUE(len == 3); + NUTS_TRUE(memcmp(out, "abc", 3) == 0); + NUTS_TRUE(out[3] == 'x'); len = nni_url_decode(out, "x%00y", 3); // embedded NULL - TEST_CHECK(len == 3); - TEST_CHECK(memcmp(out, "x\x00y", 3) == 0); - TEST_CHECK(out[3] == 'x'); + NUTS_TRUE(len == 3); + NUTS_TRUE(memcmp(out, "x\x00y", 3) == 0); + NUTS_TRUE(out[3] == 'x'); len = nni_url_decode(out, "%3987", 3); - TEST_CHECK(len == 3); - TEST_CHECK(memcmp(out, "987", 3) == 0); - TEST_CHECK(out[3] == 'x'); + NUTS_TRUE(len == 3); + NUTS_TRUE(memcmp(out, "987", 3) == 0); + NUTS_TRUE(out[3] == 'x'); len = nni_url_decode(out, "78%39", 3); - TEST_CHECK(len == 3); - TEST_CHECK(memcmp(out, "789", 3) == 0); - TEST_CHECK(out[3] == 'x'); + NUTS_TRUE(len == 3); + NUTS_TRUE(memcmp(out, "789", 3) == 0); + NUTS_TRUE(out[3] == 'x'); - len = nni_url_decode(out, "", 5); - TEST_CHECK(len == 0); - TEST_CHECK(memcmp(out, "789", 3) == 0); - TEST_CHECK(out[3] == 'x'); + len = nni_url_decode(out, "", 5); + NUTS_TRUE(len == 0); + NUTS_TRUE(memcmp(out, "789", 3) == 0); + NUTS_TRUE(out[3] == 'x'); - len = nni_url_decode(out, "be", 2); - TEST_CHECK(len == 2); - TEST_CHECK(memcmp(out, "be9", 3) == 0); - TEST_CHECK(out[3] == 'x'); + len = nni_url_decode(out, "be", 2); + NUTS_TRUE(len == 2); + NUTS_TRUE(memcmp(out, "be9", 3) == 0); + NUTS_TRUE(out[3] == 'x'); - len = nni_url_decode(out, "78%39", 2); - TEST_CHECK(len == (size_t) -1); + len = nni_url_decode(out, "78%39", 2); + NUTS_TRUE(len == (size_t) -1); - len = nni_url_decode(out, "", 2); - TEST_CHECK(len == 0); + len = nni_url_decode(out, "", 2); + NUTS_TRUE(len == 0); - len = nni_url_decode(out, "78%", 5); - TEST_CHECK(len == (size_t) -1); + len = nni_url_decode(out, "78%", 5); + NUTS_TRUE(len == (size_t) -1); - len = nni_url_decode(out, "78%xy", 5); - TEST_CHECK(len == (size_t) -1); + len = nni_url_decode(out, "78%xy", 5); + NUTS_TRUE(len == (size_t) -1); - len = nni_url_decode(out, "78%1$", 5); - TEST_CHECK(len == (size_t) -1); + len = nni_url_decode(out, "78%1$", 5); + NUTS_TRUE(len == (size_t) -1); - len = nni_url_decode(out, "%%20", 5); - TEST_CHECK(len == (size_t) -1); + len = nni_url_decode(out, "%%20", 5); + NUTS_TRUE(len == (size_t) -1); } -TEST_LIST = { +NUTS_TESTS = { { "url host", test_url_host }, { "url host port", test_url_host_port }, { "url host port path", test_url_host_port_path }, diff --git a/src/platform/platform_test.c b/src/platform/platform_test.c index e7dcabaa6..581e3cb18 100644 --- a/src/platform/platform_test.c +++ b/src/platform/platform_test.c @@ -8,17 +8,13 @@ // found online at https://opensource.org/licenses/MIT. // -#include "testutil.h" - -#include -#include - -#include "acutest.h" +#include struct add_arg { - int cnt; - nng_mtx *mx; - nng_cv * cv; + int cnt; + nng_duration delay; + nng_mtx * mx; + nng_cv * cv; }; void @@ -26,58 +22,51 @@ add(void *arg) { struct add_arg *aa = arg; + if (aa->delay > 0) { + nng_msleep(aa->delay); + } nng_mtx_lock(aa->mx); aa->cnt++; nng_cv_wake(aa->cv); nng_mtx_unlock(aa->mx); } +#ifdef __has_feature +#if __has_feature(thread_sanitizer) || __has_feature(memory_sanitizer) +#define RELAXED_CLOCKS +#endif +#endif + void test_sleep(void) { - uint64_t start, end; - start = testutil_clock(); + uint64_t start; + NUTS_CLOCK(start); nng_msleep(100); - end = testutil_clock(); - TEST_CHECK((end - start) >= 100); -#ifdef __has_feature -#if !__has_feature(thread_sanitizer) && !__has_feature(memory_sanitizer) - TEST_CHECK((end - start) <= 500); -#endif + NUTS_AFTER(start + 100); +#ifndef RELAXED_CLOCKS + NUTS_BEFORE(start + 500); #endif } void test_clock(void) { - uint64_t mstart; - uint64_t msend; - nng_time usend; - nng_time usnow; + uint64_t s0, s1; + nng_time t0, t1; - mstart = testutil_clock(); - usnow = nng_clock(); + NUTS_CLOCK(s0); + t0 = nng_clock(); nng_msleep(200); - usend = nng_clock(); - msend = testutil_clock(); + t1 = nng_clock(); + NUTS_CLOCK(s1); - TEST_CHECK(usend > usnow); - TEST_CHECK(msend > mstart); + NUTS_TRUE(t1 > t0); + NUTS_TRUE((t1 - t0) >= 200); + NUTS_TRUE((t1 - t0) < 500); -#ifdef __has_feature -#if !__has_feature(thread_sanitizer) && !__has_feature(memory_sanitizer) - uint64_t usdelta; - uint64_t msdelta; - usdelta = usend - usnow; - msdelta = msend - mstart; - TEST_CHECK(usdelta >= 200); - TEST_CHECK(usdelta < 500); // increased tolerance for CIs - if (msdelta > usdelta) { - TEST_CHECK((msdelta - usdelta) < 50); - } else { - TEST_CHECK((usdelta - msdelta) < 50); - } -#endif +#ifndef RELAXED_CLOCKS + NUTS_TRUE(abs((int) (s1 - s0) - (int) (t1 - t0)) < 50); #endif } @@ -86,7 +75,7 @@ test_mutex(void) { nng_mtx *mx, *mx2; - TEST_CHECK(nng_mtx_alloc(&mx) == 0); + NUTS_PASS(nng_mtx_alloc(&mx)); nng_mtx_lock(mx); nng_mtx_unlock(mx); @@ -95,9 +84,9 @@ test_mutex(void) nng_mtx_free(mx); // Verify that the mutexes are not always the same! - TEST_CHECK(nng_mtx_alloc(&mx) == 0); - TEST_CHECK(nng_mtx_alloc(&mx2) == 0); - TEST_CHECK(mx != mx2); + NUTS_PASS(nng_mtx_alloc(&mx)); + NUTS_PASS(nng_mtx_alloc(&mx2)); + NUTS_TRUE(mx != mx2); nng_mtx_free(mx); nng_mtx_free(mx2); } @@ -106,16 +95,16 @@ void test_thread(void) { nng_thread * thr; - int rv; struct add_arg aa; - TEST_CHECK(nng_mtx_alloc(&aa.mx) == 0); - TEST_CHECK(nng_cv_alloc(&aa.cv, aa.mx) == 0); + NUTS_PASS(nng_mtx_alloc(&aa.mx)); + NUTS_PASS(nng_cv_alloc(&aa.cv, aa.mx)); aa.cnt = 0; + aa.delay = 0; - TEST_CHECK((rv = nng_thread_create(&thr, add, &aa)) == 0); + NUTS_PASS(nng_thread_create(&thr, add, &aa)); nng_thread_destroy(thr); - TEST_CHECK(aa.cnt == 1); + NUTS_TRUE(aa.cnt == 1); nng_cv_free(aa.cv); nng_mtx_free(aa.mx); @@ -124,15 +113,15 @@ test_thread(void) void test_cond_var(void) { - nng_thread * thr; - int rv; + nng_thread * thr; struct add_arg aa; - TEST_CHECK(nng_mtx_alloc(&aa.mx) == 0); - TEST_CHECK(nng_cv_alloc(&aa.cv, aa.mx) == 0); + NUTS_PASS(nng_mtx_alloc(&aa.mx)); + NUTS_PASS(nng_cv_alloc(&aa.cv, aa.mx)); aa.cnt = 0; + aa.delay = 0; - TEST_CHECK((rv = nng_thread_create(&thr, add, &aa)) == 0); + NUTS_PASS(nng_thread_create(&thr, add, &aa)); nng_mtx_lock(aa.mx); while (aa.cnt == 0) { @@ -140,7 +129,58 @@ test_cond_var(void) } nng_mtx_unlock(aa.mx); nng_thread_destroy(thr); - TEST_CHECK(aa.cnt == 1); + NUTS_TRUE(aa.cnt == 1); + + nng_cv_free(aa.cv); + nng_mtx_free(aa.mx); +} + +void +test_cond_wake(void) +{ + nng_thread * thr; + struct add_arg aa; + nng_time now; + + NUTS_PASS(nng_mtx_alloc(&aa.mx)); + NUTS_PASS(nng_cv_alloc(&aa.cv, aa.mx)); + aa.cnt = 0; + aa.delay = 200; + + now = nng_clock(); + + NUTS_PASS(nng_thread_create(&thr, add, &aa)); + + nng_mtx_lock(aa.mx); + nng_cv_until(aa.cv, now + 500); + nng_mtx_unlock(aa.mx); + + NUTS_TRUE(nng_clock() >= now + 200); + NUTS_TRUE(nng_clock() < now + 500); + + nng_cv_free(aa.cv); + nng_mtx_free(aa.mx); +} + +void +test_cond_until(void) +{ + struct add_arg aa; + nng_time now; + + NUTS_PASS(nng_mtx_alloc(&aa.mx)); + NUTS_PASS(nng_cv_alloc(&aa.cv, aa.mx)); + aa.cnt = 0; + aa.delay = 0; + + now = nng_clock(); + nng_mtx_lock(aa.mx); + nng_cv_until(aa.cv, now + 100); + nng_mtx_unlock(aa.mx); + + NUTS_TRUE(nng_clock() > now); + NUTS_TRUE(nng_clock() - now >= 100); + NUTS_TRUE(nng_clock() - now < 1000); nng_cv_free(aa.cv); nng_mtx_free(aa.mx); @@ -166,16 +206,18 @@ test_random(void) // 1% reproduction is *highly* unlikely. // There are 4 billion possible options, we are only looking at // 1000 of them. In general, it would be an extreme outlier - // to see more than 2 repeats, unless you RNG is biased. - TEST_CHECK_(same < 5, "fewer than 5 in 1000 repeats: %d", same); + // to see more than 2 repeats, unless your RNG is biased. + NUTS_TRUE(same < 5); } -TEST_LIST = { +NUTS_TESTS = { { "sleep", test_sleep }, { "clock", test_clock }, { "mutex", test_mutex }, { "thread", test_thread }, { "cond var", test_cond_var }, + { "cond wake", test_cond_wake }, + { "cond until", test_cond_until }, { "random", test_random }, { NULL, NULL }, }; diff --git a/src/platform/resolver_test.c b/src/platform/resolver_test.c index 43168cdbb..442d1982b 100644 --- a/src/platform/resolver_test.c +++ b/src/platform/resolver_test.c @@ -8,18 +8,9 @@ // found online at https://opensource.org/licenses/MIT. // -#include "testutil.h" - -#include +#include #include "core/nng_impl.h" -#include "stubs.h" - -#include "acutest.h" - -#ifndef _WIN32 -#include // for htons, htonl -#endif uint8_t v6loop[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; @@ -29,14 +20,14 @@ test_google_dns(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("google-public-dns-a.google.com", "80", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in.sa_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_port == ntohs(80)); - TEST_CHECK(sa.s_in.sa_addr == 0x08080808); // aka 8.8.8.8 + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); + NUTS_TRUE(sa.s_in.sa_addr == 0x08080808); // aka 8.8.8.8 nng_aio_free(aio); } @@ -46,13 +37,13 @@ test_numeric_addr(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("8.8.4.4", "69", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in.sa_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_port == ntohs(69)); - TEST_CHECK(sa.s_in.sa_addr == ntohl(0x08080404)); // 8.8.4.4. + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(69)); + NUTS_TRUE(sa.s_in.sa_addr == nuts_be32(0x08080404)); // 8.8.4.4. nng_aio_free(aio); } @@ -69,13 +60,13 @@ test_numeric_v6(void) return; // skip this one. } - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("::1", "80", NNG_AF_INET6, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in6.sa_family == NNG_AF_INET6); - TEST_CHECK(sa.s_in6.sa_port == ntohs(80)); - TEST_CHECK(memcmp(sa.s_in6.sa_addr, v6loop, 16) == 0); + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in6.sa_family == NNG_AF_INET6); + NUTS_TRUE(sa.s_in6.sa_port == nuts_be16(80)); + NUTS_TRUE(memcmp(sa.s_in6.sa_addr, v6loop, 16) == 0); nng_aio_free(aio); } @@ -85,12 +76,12 @@ test_service_names(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("8.8.4.4", "http", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in.sa_port == ntohs(80)); - TEST_CHECK(sa.s_in.sa_addr = ntohl(0x08080404)); + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); + NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x08080404)); nng_aio_free(aio); } @@ -100,36 +91,36 @@ test_localhost_v4(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("localhost", "80", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in.sa_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_port == ntohs(80)); - TEST_CHECK(sa.s_in.sa_addr == ntohl(0x7f000001)); + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); + NUTS_TRUE(sa.s_in.sa_addr == nuts_be32(0x7f000001)); nng_aio_free(aio); } void -test_localhost_unspec(void) +test_localhost_unspecified(void) { nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("localhost", "80", NNG_AF_UNSPEC, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK( + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE( (sa.s_family == NNG_AF_INET) || (sa.s_family == NNG_AF_INET6)); switch (sa.s_family) { case NNG_AF_INET: - TEST_CHECK(sa.s_in.sa_port == ntohs(80)); - TEST_CHECK(sa.s_in.sa_addr == ntohl(0x7f000001)); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); + NUTS_TRUE(sa.s_in.sa_addr == nuts_be32(0x7f000001)); break; case NNG_AF_INET6: - TEST_CHECK(sa.s_in6.sa_port == ntohs(80)); - TEST_CHECK(memcmp(sa.s_in6.sa_addr, v6loop, 16) == 0); + NUTS_TRUE(sa.s_in6.sa_port == nuts_be16(80)); + NUTS_TRUE(memcmp(sa.s_in6.sa_addr, v6loop, 16) == 0); break; } nng_aio_free(aio); @@ -141,13 +132,13 @@ test_null_passive(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip(NULL, "80", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_CHECK(sa.s_in.sa_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_port == ntohs(80)); - TEST_CHECK(sa.s_in.sa_addr == 0); // INADDR_ANY + NUTS_PASS(nng_aio_result(aio)); + NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); + NUTS_TRUE(sa.s_in.sa_addr == 0); // any local address nng_aio_free(aio); } @@ -157,17 +148,17 @@ test_null_not_passive(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip(NULL, "80", NNG_AF_INET, false, &sa, aio); nng_aio_wait(aio); - // We can either get NNG_EADDRINVAL, or a loopback address. + // We can either get invalid address, or a loopback address. // Most systems do the former, but Linux does the latter. if (nng_aio_result(aio) == 0) { - TEST_CHECK(sa.s_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_addr == htonl(0x7f000001)); - TEST_CHECK(sa.s_in.sa_port == htons(80)); + NUTS_TRUE(sa.s_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_addr == nuts_be32(0x7f000001)); + NUTS_TRUE(sa.s_in.sa_port == nuts_be16(80)); } else { - TEST_NNG_FAIL(nng_aio_result(aio), NNG_EADDRINVAL); + NUTS_FAIL(nng_aio_result(aio), NNG_EADDRINVAL); } nng_aio_free(aio); } @@ -178,20 +169,20 @@ test_bad_port_number(void) nng_aio * aio; nng_sockaddr sa; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nni_resolv_ip("1.1.1.1", "1000000", NNG_AF_INET, true, &sa, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_EADDRINVAL); + NUTS_FAIL(nng_aio_result(aio), NNG_EADDRINVAL); nng_aio_free(aio); } -TEST_LIST = { +NUTS_TESTS = { { "resolve google dns", test_google_dns }, { "resolve numeric addr", test_numeric_addr }, { "resolve numeric v6", test_numeric_v6 }, { "resolve service names", test_service_names }, { "resolve localhost v4", test_localhost_v4 }, - { "resolve localhost unspec", test_localhost_unspec }, + { "resolve localhost unspecified", test_localhost_unspecified }, { "resolve null passive", test_null_passive }, { "resolve null not passive", test_null_not_passive }, { "resolve bad port number", test_bad_port_number }, diff --git a/src/protocol/bus0/bug1247_test.c b/src/protocol/bus0/bug1247_test.c index 6f418f53c..bbc6958b7 100644 --- a/src/protocol/bus0/bug1247_test.c +++ b/src/protocol/bus0/bug1247_test.c @@ -7,30 +7,26 @@ // found online at https://opensource.org/licenses/MIT. // -#include +#include -#include #include -#include "acutest.h" -#include "testutil.h" - void test_bug1247(void) { nng_socket bus1, bus2; - char addr[64]; + char * addr; - testutil_scratch_addr("tcp", sizeof(addr), addr); + NUTS_ADDR(addr, "tcp"); - TEST_NNG_PASS(nng_bus0_open(&bus1)); - TEST_NNG_PASS(nng_bus0_open(&bus2)); + NUTS_PASS(nng_bus0_open(&bus1)); + NUTS_PASS(nng_bus0_open(&bus2)); - TEST_NNG_PASS(nng_listen(bus1, addr, NULL, 0)); - TEST_NNG_FAIL(nng_listen(bus2, addr, NULL, 0), NNG_EADDRINUSE); + NUTS_PASS(nng_listen(bus1, addr, NULL, 0)); + NUTS_FAIL(nng_listen(bus2, addr, NULL, 0), NNG_EADDRINUSE); - TEST_NNG_PASS(nng_close(bus2)); - TEST_NNG_PASS(nng_close(bus1)); + NUTS_PASS(nng_close(bus2)); + NUTS_PASS(nng_close(bus1)); } TEST_LIST = { diff --git a/src/protocol/pair1/pair1_poly_test.c b/src/protocol/pair1/pair1_poly_test.c index c4acbd86f..f26f78095 100644 --- a/src/protocol/pair1/pair1_poly_test.c +++ b/src/protocol/pair1/pair1_poly_test.c @@ -8,22 +8,35 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include - -#include +#include #define SECOND 1000 -#define APPEND_STR(m, s) TEST_NNG_PASS(nng_msg_append(m, s, strlen(s))) -#define CHECK_STR(m, s) \ - TEST_CHECK(nng_msg_len(m) == strlen(s)); \ - TEST_CHECK(memcmp(nng_msg_body(m), s, strlen(s)) == 0) +#define APPEND_STR(m, s) NUTS_PASS(nng_msg_append(m, s, strlen(s))) +#define CHECK_STR(m, s) \ + NUTS_TRUE(nng_msg_len(m) == strlen(s)); \ + NUTS_TRUE(memcmp(nng_msg_body(m), s, strlen(s)) == 0) + +static void +test_poly_identity(void) +{ + nng_socket s; + int p; + char * n; + + NUTS_PASS(nng_pair1_open_poly(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NUTS_PROTO(1u, 1u)); // 32 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NUTS_PROTO(1u, 1u)); // 33 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, "pair1"); + nng_strfree(n); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, "pair1"); + nng_strfree(n); + NUTS_CLOSE(s); +} void test_poly_best_effort(void) @@ -32,23 +45,23 @@ test_poly_best_effort(void) nng_socket c1; nng_msg * msg; - TEST_NNG_PASS(nng_pair1_open_poly(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nng_pair1_open_poly(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(c1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(c1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_MARRY(s1, c1); for (int i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); } - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c1)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -62,69 +75,69 @@ test_poly_cooked(void) nng_pipe p1; nng_pipe p2; - TEST_NNG_PASS(nng_pair1_open_poly(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(nng_pair1_open(&c2)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 10)); - TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 10)); - TEST_NNG_PASS(nng_setopt_ms(c2, NNG_OPT_RECVTIMEO, SECOND / 10)); + NUTS_PASS(nng_pair1_open_poly(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nng_pair1_open(&c2)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 10)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 10)); + NUTS_PASS(nng_setopt_ms(c2, NNG_OPT_RECVTIMEO, SECOND / 10)); - TEST_NNG_PASS(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v)); - TEST_CHECK(v == true); + NUTS_PASS(nng_getopt_bool(s1, NNG_OPT_PAIR1_POLY, &v)); + NUTS_TRUE(v); - TEST_NNG_PASS(testutil_marry(s1, c1)); - TEST_NNG_PASS(testutil_marry(s1, c2)); + NUTS_MARRY(s1, c1); + NUTS_MARRY(s1, c2); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "ONE"); - TEST_NNG_PASS(nng_sendmsg(c1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); CHECK_STR(msg, "ONE"); p1 = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p1) > 0); + NUTS_TRUE(nng_pipe_id(p1) > 0); nng_msg_free(msg); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "TWO"); - TEST_NNG_PASS(nng_sendmsg(c2, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_sendmsg(c2, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); CHECK_STR(msg, "TWO"); p2 = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p2) > 0); + NUTS_TRUE(nng_pipe_id(p2) > 0); nng_msg_free(msg); - TEST_CHECK(nng_pipe_id(p1) != nng_pipe_id(p2)); + NUTS_TRUE(nng_pipe_id(p1) != nng_pipe_id(p2)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); nng_msg_set_pipe(msg, p1); APPEND_STR(msg, "UNO"); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c1, &msg, 0)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c1, &msg, 0)); CHECK_STR(msg, "UNO"); nng_msg_free(msg); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); nng_msg_set_pipe(msg, p2); APPEND_STR(msg, "DOS"); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c2, &msg, 0)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c2, &msg, 0)); CHECK_STR(msg, "DOS"); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(c1)); + NUTS_PASS(nng_close(c1)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); nng_msg_set_pipe(msg, p1); APPEND_STR(msg, "EIN"); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_FAIL(nng_recvmsg(c2, &msg, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_FAIL(nng_recvmsg(c2, &msg, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c2); } void @@ -135,38 +148,38 @@ test_poly_default(void) nng_socket c2; nng_msg * msg; - TEST_NNG_PASS(nng_pair1_open_poly(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(nng_pair1_open(&c2)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_pair1_open_poly(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nng_pair1_open(&c2)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(testutil_marry(s1, c1)); - TEST_NNG_PASS(testutil_marry(s1, c2)); + NUTS_MARRY(s1, c1); + NUTS_MARRY(s1, c2); // This assumes poly picks the first suitor. Applications // should not make the same assumption. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "YES"); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c1, &msg, 0)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c1, &msg, 0)); CHECK_STR(msg, "YES"); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(c1)); - testutil_sleep(10); + NUTS_CLOSE(c1); + NUTS_SLEEP(10); // Verify that the other pipe is chosen as the next suitor. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "AGAIN"); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c2, &msg, 0)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c2, &msg, 0)); CHECK_STR(msg, "AGAIN"); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c2); } void @@ -175,25 +188,24 @@ test_poly_close_abort(void) nng_socket s; nng_socket c; - TEST_NNG_PASS(nng_pair1_open_poly(&s)); - TEST_NNG_PASS(nng_pair1_open(&c)); - 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(nng_setopt_int(s, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(c, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_pair1_open_poly(&s)); + NUTS_PASS(nng_pair1_open(&c)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_setopt_int(s, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_int(c, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry(c, s)); + NUTS_MARRY(c, s); for (int i = 0; i < 20; i++) { - TEST_NNG_SEND_STR(c, "TEST"); + NUTS_SEND(c, "TEST"); } - testutil_sleep(50); + NUTS_SLEEP(50); - TEST_NNG_PASS(nng_close(s)); - TEST_NNG_PASS(nng_close(c)); + NUTS_CLOSE(s); + NUTS_CLOSE(c); } - void test_poly_recv_no_header(void) { @@ -201,20 +213,20 @@ test_poly_recv_no_header(void) nng_socket c; nng_msg * m; - TEST_NNG_PASS(nng_pair1_open_poly(&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)); + NUTS_PASS(nng_pair1_open_poly(&s)); + NUTS_PASS(nng_pair1_open(&c)); + NUTS_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(testutil_marry(c, s)); + NUTS_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); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_sendmsg(c, m, 0)); + NUTS_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(c)); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(c); + NUTS_CLOSE(s); } void @@ -224,22 +236,22 @@ test_poly_recv_garbage(void) nng_socket c; nng_msg * m; - TEST_NNG_PASS(nng_pair1_open_poly(&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)); + NUTS_PASS(nng_pair1_open_poly(&s)); + NUTS_PASS(nng_pair1_open(&c)); + NUTS_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(testutil_marry(c, s)); + NUTS_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); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 0x1000)); + NUTS_PASS(nng_sendmsg(c, m, 0)); + NUTS_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(c)); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(c); + NUTS_CLOSE(s); } void @@ -251,65 +263,65 @@ test_poly_ttl(void) uint32_t val; int ttl; - TEST_NNG_PASS(nng_pair1_open_poly(&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)); + NUTS_PASS(nng_pair1_open_poly(&s1)); + NUTS_PASS(nng_pair1_open_raw(&c1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5)); // cannot set insane TTLs - 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); + NUTS_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 0), NNG_EINVAL); + NUTS_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 1000), NNG_EINVAL); ttl = 8; - 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); + NUTS_FAIL(nng_setopt(s1, NNG_OPT_MAXTTL, &ttl, 1), NNG_EINVAL); + NUTS_FAIL(nng_setopt_bool(s1, NNG_OPT_MAXTTL, true), NNG_EBADTYPE); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_MARRY(s1, c1); // Let's check enforcement of TTL - 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); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 4)); + NUTS_PASS(nng_getopt_int(s1, NNG_OPT_MAXTTL, &ttl)); + NUTS_TRUE(ttl == 4); // Bad TTL bounces - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 4)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); // Good TTL passes - 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_NNG_PASS(nng_msg_header_trim_u32(msg, &val)); - TEST_CHECK(val == 4); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0xFEEDFACE)); + NUTS_PASS(nng_msg_header_append_u32(msg, 3)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &val)); + NUTS_TRUE(val == 0xFEEDFACE); + NUTS_PASS(nng_msg_header_trim_u32(msg, &val)); + NUTS_TRUE(val == 4); nng_msg_free(msg); // Large TTL passes - 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_NNG_PASS(nng_msg_header_trim_u32(msg, &val)); - TEST_CHECK(val == 15); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 1234)); + NUTS_PASS(nng_msg_header_append_u32(msg, 14)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &val)); + NUTS_TRUE(val == 1234); + NUTS_PASS(nng_msg_header_trim_u32(msg, &val)); + NUTS_TRUE(val == 15); nng_msg_free(msg); // Max TTL fails - 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)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 15)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); + + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -318,40 +330,41 @@ test_poly_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_pair1_open_poly(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_PASS(nng_pair1_open_poly(&s1)); + NUTS_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } TEST_LIST = { - { "pair1 polyamorous best effort", test_poly_best_effort }, - { "pair1 polyamorous cooked", test_poly_cooked }, - { "pair1 polyamorous default", test_poly_default }, - { "pair1 polyamorous recv no header", test_poly_recv_no_header }, - { "pair1 polyamorous recv garbage", test_poly_recv_garbage }, - { "pair1 polyamorous ttl", test_poly_ttl }, - { "pair1 polyamorous close abort", test_poly_close_abort }, - { "pair1 polyamorous validate peer", test_poly_validate_peer }, + { "pair1 poly identity", test_poly_identity }, + { "pair1 poly best effort", test_poly_best_effort }, + { "pair1 poly cooked", test_poly_cooked }, + { "pair1 poly default", test_poly_default }, + { "pair1 poly recv no header", test_poly_recv_no_header }, + { "pair1 poly recv garbage", test_poly_recv_garbage }, + { "pair1 poly ttl", test_poly_ttl }, + { "pair1 poly close abort", test_poly_close_abort }, + { "pair1 poly validate peer", test_poly_validate_peer }, { NULL, NULL }, }; diff --git a/src/protocol/pair1/pair1_test.c b/src/protocol/pair1/pair1_test.c index 0f0131b5e..881c4ac8e 100644 --- a/src/protocol/pair1/pair1_test.c +++ b/src/protocol/pair1/pair1_test.c @@ -8,22 +8,35 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include - -#include +#include #define SECOND 1000 -#define APPEND_STR(m, s) TEST_CHECK(nng_msg_append(m, s, strlen(s)) == 0) -#define CHECK_STR(m, s) \ - TEST_CHECK(nng_msg_len(m) == strlen(s)); \ - TEST_CHECK(memcmp(nng_msg_body(m), s, strlen(s)) == 0) +#define APPEND_STR(m, s) NUTS_TRUE(nng_msg_append(m, s, strlen(s)) == 0) +#define CHECK_STR(m, s) \ + NUTS_TRUE(nng_msg_len(m) == strlen(s)); \ + NUTS_TRUE(memcmp(nng_msg_body(m), s, strlen(s)) == 0) + +static void +test_mono_identity(void) +{ + nng_socket s; + int p; + char * n; + + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NUTS_PROTO(1u, 1u)); // 32 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NUTS_PROTO(1u, 1u)); // 33 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, "pair1"); + nng_strfree(n); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, "pair1"); + nng_strfree(n); + NUTS_CLOSE(s); +} void test_mono_cooked(void) @@ -32,28 +45,28 @@ test_mono_cooked(void) nng_socket c1; nng_msg * msg; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nuts_marry(s1, c1)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_msg_append(msg, "ALPHA", strlen("ALPHA") + 1)); - TEST_NNG_PASS(nng_sendmsg(c1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0)); - TEST_CHECK(nng_msg_len(msg) == strlen("ALPHA") + 1); - TEST_CHECK(strcmp(nng_msg_body(msg), "ALPHA") == 0); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append(msg, "ALPHA", strlen("ALPHA") + 1)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_TRUE(nng_msg_len(msg) == strlen("ALPHA") + 1); + NUTS_MATCH(nng_msg_body(msg), "ALPHA"); nng_msg_free(msg); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_msg_append(msg, "BETA", strlen("BETA") + 1)); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c1, &msg, 0)); - TEST_CHECK(nng_msg_len(msg) == strlen("BETA") + 1); - TEST_CHECK(strcmp(nng_msg_body(msg), "BETA") == 0); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append(msg, "BETA", strlen("BETA") + 1)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c1, &msg, 0)); + NUTS_TRUE(nng_msg_len(msg) == strlen("BETA") + 1); + NUTS_MATCH(nng_msg_body(msg), "BETA"); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(c1)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(c1); + NUTS_CLOSE(s1); } void @@ -65,35 +78,35 @@ test_mono_faithful(void) nng_msg * msg; const char *addr = "inproc://pair1_mono_faithful"; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(nng_pair1_open(&c2)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 4)); - TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_int(c2, NNG_OPT_SENDBUF, 2)); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nng_pair1_open(&c2)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 4)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c2, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_setopt_int(c2, NNG_OPT_SENDBUF, 2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(testutil_marry(s1, c1)); - TEST_NNG_PASS(nng_dial(c2, addr, NULL, 0)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_MARRY(s1, c1); + NUTS_PASS(nng_dial(c2, addr, NULL, 0)); - testutil_sleep(100); + NUTS_SLEEP(100); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "ONE"); - TEST_NNG_PASS(nng_sendmsg(c1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); CHECK_STR(msg, "ONE"); nng_msg_free(msg); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "TWO"); - TEST_NNG_PASS(nng_sendmsg(c2, msg, 0)); - TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(c2, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c1)); - TEST_NNG_PASS(nng_close(c2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); + NUTS_CLOSE(c2); } void @@ -106,28 +119,28 @@ test_mono_back_pressure(void) nng_msg * msg; nng_duration to = 100; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair1_open(&c1)); - TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(s1, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(c1, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, to)); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_pair1_open(&c1)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(c1, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_SENDTIMEO, to)); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_MARRY(s1, c1); // We choose to allow some buffering. In reality the // buffer size is just 1, and we will fail after 2. for (i = 0, rv = 0; i < 10; i++) { - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); if ((rv = nng_sendmsg(s1, msg, 0)) != 0) { nng_msg_free(msg); break; } } - TEST_NNG_FAIL(rv, NNG_ETIMEDOUT); - TEST_CHECK(i < 10); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c1)); + NUTS_FAIL(rv, NNG_ETIMEDOUT); + NUTS_TRUE(i < 10); + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -139,45 +152,45 @@ test_mono_raw_exchange(void) nng_msg *msg; uint32_t hops; - TEST_NNG_PASS(nng_pair1_open_raw(&s1)); - TEST_NNG_PASS(nng_pair1_open_raw(&c1)); + NUTS_PASS(nng_pair1_open_raw(&s1)); + NUTS_PASS(nng_pair1_open_raw(&c1)); - TEST_NNG_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_MARRY(s1, c1); nng_pipe p = NNG_PIPE_INITIALIZER; - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "GAMMA"); - TEST_NNG_PASS(nng_msg_header_append_u32(msg, 1)); - TEST_CHECK(nng_msg_header_len(msg) == sizeof(uint32_t)); - TEST_NNG_PASS(nng_sendmsg(c1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 1)); + NUTS_TRUE(nng_msg_header_len(msg) == sizeof(uint32_t)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); p = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p) > 0); + NUTS_TRUE(nng_pipe_id(p) > 0); CHECK_STR(msg, "GAMMA"); - TEST_CHECK(nng_msg_header_len(msg) == sizeof(uint32_t)); - TEST_NNG_PASS(nng_msg_header_trim_u32(msg, &hops)); - TEST_CHECK(hops == 2); + NUTS_TRUE(nng_msg_header_len(msg) == sizeof(uint32_t)); + NUTS_PASS(nng_msg_header_trim_u32(msg, &hops)); + NUTS_TRUE(hops == 2); nng_msg_free(msg); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); APPEND_STR(msg, "EPSILON"); - TEST_NNG_PASS(nng_msg_header_append_u32(msg, 1)); - TEST_NNG_PASS(nng_sendmsg(s1, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(c1, &msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 1)); + NUTS_PASS(nng_sendmsg(s1, msg, 0)); + NUTS_PASS(nng_recvmsg(c1, &msg, 0)); CHECK_STR(msg, "EPSILON"); - TEST_CHECK(nng_msg_header_len(msg) == sizeof(uint32_t)); - TEST_NNG_PASS(nng_msg_header_trim_u32(msg, &hops)); + NUTS_TRUE(nng_msg_header_len(msg) == sizeof(uint32_t)); + NUTS_PASS(nng_msg_header_trim_u32(msg, &hops)); p = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p) > 0); + NUTS_TRUE(nng_pipe_id(p) > 0); - TEST_CHECK(hops == 2); + NUTS_TRUE(hops == 2); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c1)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -188,52 +201,52 @@ test_mono_raw_header(void) nng_msg * msg; uint32_t v; - TEST_NNG_PASS(nng_pair1_open_raw(&s1)); - TEST_NNG_PASS(nng_pair1_open_raw(&c1)); + NUTS_PASS(nng_pair1_open_raw(&s1)); + NUTS_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)); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5)); + NUTS_MARRY(s1, c1); // Missing bits in the header - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); // Valid header works - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0xFEEDFACE)); + NUTS_PASS(nng_msg_header_append_u32(msg, 1)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &v)); + NUTS_TRUE(v == 0xFEEDFACE); nng_msg_free(msg); // Header with reserved bits set dropped - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 0xDEAD0000)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_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)); - TEST_NNG_PASS(nng_msg_header_append_u32(msg, 0xff)); - TEST_NNG_PASS(nng_sendmsg(c1, msg, 0)); - TEST_NNG_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 0xff)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); // With the same bits clear it works - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0xFEEDFACE)); + NUTS_PASS(nng_msg_header_append_u32(msg, 1)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &v)); + NUTS_TRUE(v == 0xFEEDFACE); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(c1)); + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -242,17 +255,17 @@ test_pair1_raw(void) nng_socket s1; bool raw; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw)); - TEST_CHECK(raw == false); - TEST_NNG_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, true), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); - - TEST_NNG_PASS(nng_pair1_open_raw(&s1)); - TEST_NNG_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw)); - TEST_CHECK(raw == true); - TEST_NNG_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, false), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw)); + NUTS_TRUE(raw == false); + NUTS_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, true), NNG_EREADONLY); + NUTS_PASS(nng_close(s1)); + + NUTS_PASS(nng_pair1_open_raw(&s1)); + NUTS_PASS(nng_getopt_bool(s1, NNG_OPT_RAW, &raw)); + NUTS_TRUE(raw == true); + NUTS_FAIL(nng_setopt_bool(s1, NNG_OPT_RAW, false), NNG_EREADONLY); + NUTS_PASS(nng_close(s1)); } void @@ -264,65 +277,65 @@ test_pair1_ttl(void) uint32_t val; int ttl; - 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)); + NUTS_PASS(nng_pair1_open_raw(&s1)); + NUTS_PASS(nng_pair1_open_raw(&c1)); + NUTS_PASS(nng_setopt_ms(s1, NNG_OPT_RECVTIMEO, SECOND / 5)); + NUTS_PASS(nng_setopt_ms(c1, NNG_OPT_RECVTIMEO, SECOND / 5)); // cannot set insane TTLs - 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); + NUTS_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 0), NNG_EINVAL); + NUTS_FAIL(nng_setopt_int(s1, NNG_OPT_MAXTTL, 1000), NNG_EINVAL); ttl = 8; - 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); + NUTS_FAIL(nng_setopt(s1, NNG_OPT_MAXTTL, &ttl, 1), NNG_EINVAL); + NUTS_FAIL(nng_setopt_bool(s1, NNG_OPT_MAXTTL, true), NNG_EBADTYPE); - TEST_NNG_PASS(testutil_marry(s1, c1)); + NUTS_MARRY(s1, c1); // Let's check enforcement of TTL - 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); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 4)); + NUTS_PASS(nng_getopt_int(s1, NNG_OPT_MAXTTL, &ttl)); + NUTS_TRUE(ttl == 4); // Bad TTL bounces - 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); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 4)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); // Good TTL passes - 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_NNG_PASS(nng_msg_header_trim_u32(msg, &val)); - TEST_CHECK(val == 4); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0xFEEDFACE)); + NUTS_PASS(nng_msg_header_append_u32(msg, 3)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &val)); + NUTS_TRUE(val == 0xFEEDFACE); + NUTS_PASS(nng_msg_header_trim_u32(msg, &val)); + NUTS_TRUE(val == 4); nng_msg_free(msg); // Large TTL passes - 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_NNG_PASS(nng_msg_header_trim_u32(msg, &val)); - TEST_CHECK(val == 15); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 1234)); + NUTS_PASS(nng_msg_header_append_u32(msg, 14)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_PASS(nng_recvmsg(s1, &msg, 0)); + NUTS_PASS(nng_msg_trim_u32(msg, &val)); + NUTS_TRUE(val == 1234); + NUTS_PASS(nng_msg_header_trim_u32(msg, &val)); + NUTS_TRUE(val == 15); nng_msg_free(msg); // Max TTL fails - 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)); + NUTS_PASS(nng_setopt_int(s1, NNG_OPT_MAXTTL, 15)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_header_append_u32(msg, 15)); + NUTS_PASS(nng_sendmsg(c1, msg, 0)); + NUTS_FAIL(nng_recvmsg(s1, &msg, 0), NNG_ETIMEDOUT); + + NUTS_CLOSE(s1); + NUTS_CLOSE(c1); } void @@ -331,28 +344,27 @@ test_pair1_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; - - testutil_scratch_addr("inproc", sizeof(addr), addr); + char * addr; - TEST_NNG_PASS(nng_pair1_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_ADDR(addr, "inproc"); + NUTS_PASS(nng_pair1_open(&s1)); + NUTS_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -363,20 +375,20 @@ test_pair1_recv_no_header(void) 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)); + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_pair1_open(&c)); + NUTS_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(testutil_marry(c, s)); + NUTS_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); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_sendmsg(c, m, 0)); + NUTS_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(c)); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(c); + NUTS_CLOSE(s); } void @@ -386,30 +398,31 @@ test_pair1_recv_garbage(void) 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)); + NUTS_PASS(nng_pair1_open(&s)); + NUTS_PASS(nng_pair1_open(&c)); + NUTS_PASS(nng_setopt_bool(c, "pair1_test_inject_header", true)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_setopt_ms(s, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(testutil_marry(c, s)); + NUTS_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); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 0x1000)); + NUTS_PASS(nng_sendmsg(c, m, 0)); + NUTS_FAIL(nng_recvmsg(s, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(c)); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(c); + NUTS_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 }, +NUTS_TESTS = { + { "pair1 mono identity", test_mono_identity }, + { "pair1 mono cooked", test_mono_cooked }, + { "pair1 mono faithful", test_mono_faithful }, + { "pair1 mono back pressure", test_mono_back_pressure }, + { "pair1 mono raw exchange", test_mono_raw_exchange }, + { "pair1 mono raw header", test_mono_raw_header }, { "pair1 raw", test_pair1_raw }, { "pair1 ttl", test_pair1_ttl }, { "pair1 validate peer", test_pair1_validate_peer }, diff --git a/src/protocol/pubsub0/pub_test.c b/src/protocol/pubsub0/pub_test.c index 94d5c3338..a430b6104 100644 --- a/src/protocol/pubsub0/pub_test.c +++ b/src/protocol/pubsub0/pub_test.c @@ -7,18 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include - -#ifndef NNI_PROTO -#define NNI_PROTO(x, y) (((x) << 4u) | (y)) -#endif +#include static void test_pub_identity(void) @@ -27,18 +16,18 @@ test_pub_identity(void) int p; char * n; - TEST_NNG_PASS(nng_pub0_open(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 0u)); // 32 - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 1u)); // 33 - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n)); - TEST_CHECK(strcmp(n, "pub") == 0); + NUTS_PASS(nng_pub0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 0u)); // 32 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 1u)); // 33 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, "pub"); nng_strfree(n); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n)); - TEST_CHECK(strcmp(n, "sub") == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, "sub"); nng_strfree(n); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } static void @@ -46,9 +35,9 @@ test_pub_cannot_recv(void) { nng_socket pub; - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_FAIL(nng_recv(pub, "", 0, 0), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(pub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_FAIL(nng_recv(pub, "", 0, 0), NNG_ENOTSUP); + NUTS_CLOSE(pub); } static void @@ -57,9 +46,9 @@ test_pub_no_context(void) nng_socket pub; nng_ctx ctx; - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, pub), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(pub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_FAIL(nng_ctx_open(&ctx, pub), NNG_ENOTSUP); + NUTS_CLOSE(pub); } static void @@ -68,9 +57,9 @@ test_pub_not_readable(void) int fd; nng_socket pub; - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_FAIL(nng_getopt_int(pub, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(pub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_FAIL(nng_socket_get_int(pub, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_CLOSE(pub); } static void @@ -80,25 +69,24 @@ test_pub_poll_writeable(void) nng_socket pub; nng_socket sub; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_getopt_int(pub, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_get_int(pub, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Pub is *always* writeable - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_MARRY(pub, sub); + NUTS_TRUE(nuts_poll_fd(fd)); - // But once we send messages, it is. - // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(pub, "abc"); - TEST_CHECK(testutil_pollfd(fd) == true); + // Even if we send messages. + NUTS_SEND(pub, "abc"); + NUTS_TRUE(nuts_poll_fd(fd)); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void @@ -106,10 +94,10 @@ test_pub_send_no_pipes(void) { nng_socket pub; - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_SEND_STR(pub, "DROP1"); - TEST_NNG_SEND_STR(pub, "DROP2"); - TEST_NNG_PASS(nng_close(pub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_SEND(pub, "DROP1"); + NUTS_SEND(pub, "DROP2"); + NUTS_CLOSE(pub); } void @@ -118,28 +106,28 @@ test_pub_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char *addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_pub0_open(&s1)); - TEST_NNG_PASS(nng_pub0_open(&s2)); + NUTS_PASS(nng_pub0_open(&s1)); + NUTS_PASS(nng_pub0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -152,26 +140,26 @@ test_pub_send_queued(void) // MB: What we really need is a mock so that we can send harder // than we receive -- we need a way to apply back-pressure for this // test to be really meaningful. - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "", 0)); - TEST_NNG_PASS(nng_setopt_int(pub, NNG_OPT_SENDBUF, 10)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 10)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_NNG_SEND_STR(pub, "first"); - TEST_NNG_SEND_STR(pub, "second"); - TEST_NNG_SEND_STR(pub, "three musketeers"); - TEST_NNG_SEND_STR(pub, "four"); - testutil_sleep(50); - TEST_NNG_RECV_STR(sub, "first"); - TEST_NNG_RECV_STR(sub, "second"); - TEST_NNG_RECV_STR(sub, "three musketeers"); - TEST_NNG_RECV_STR(sub, "four"); - - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "", 0)); + NUTS_PASS(nng_socket_set_int(pub, NNG_OPT_SENDBUF, 10)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 10)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_MARRY(pub, sub); + NUTS_SEND(pub, "first"); + NUTS_SEND(pub, "second"); + NUTS_SEND(pub, "three musketeers"); + NUTS_SEND(pub, "four"); + NUTS_SLEEP(50); + NUTS_RECV(sub, "first"); + NUTS_RECV(sub, "second"); + NUTS_RECV(sub, "three musketeers"); + NUTS_RECV(sub, "four"); + + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void test_sub_recv_ctx_closed(void) @@ -179,15 +167,15 @@ test_sub_recv_ctx_closed(void) nng_socket sub; nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_ctx_close(ctx); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -197,16 +185,16 @@ test_sub_ctx_recv_aio_stopped(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); nng_aio_stop(aio); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -217,16 +205,16 @@ test_sub_close_context_recv(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 1000); nng_ctx_recv(ctx, aio); - TEST_NNG_PASS(nng_ctx_close(ctx)); + NUTS_PASS(nng_ctx_close(ctx)); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -237,16 +225,16 @@ test_sub_ctx_recv_nonblock(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -257,17 +245,17 @@ test_sub_ctx_recv_cancel(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 1000); nng_ctx_recv(ctx, aio); nng_aio_abort(aio, NNG_ECANCELED); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -280,28 +268,28 @@ test_pub_send_buf_option(void) size_t sz; const char *opt = NNG_OPT_SENDBUF; - TEST_NNG_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_int(pub, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(pub, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(pub, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(pub, opt, 1000000), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(pub, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(pub, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(pub, opt, 1)); + NUTS_FAIL(nng_socket_set_int(pub, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(pub, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(pub, opt, 1000000), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(pub, opt, 3)); + NUTS_PASS(nng_socket_get_int(pub, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(pub, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(pub, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(pub, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(pub, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(pub, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(pub, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(pub, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(pub, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(pub, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(pub, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(pub)); + NUTS_CLOSE(pub); } static void @@ -310,20 +298,20 @@ test_pub_cooked(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_pub0_open(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(!b); - TEST_NNG_FAIL(nng_setopt_bool(s, NNG_OPT_RAW, true), NNG_EREADONLY); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_pub0_open(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(!b); + NUTS_FAIL(nng_socket_set_bool(s, NNG_OPT_RAW, true), NNG_EREADONLY); + NUTS_PASS(nng_close(s)); // raw pub only differs in the option setting - TEST_NNG_PASS(nng_pub0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_pub0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } -TEST_LIST = { +NUTS_TESTS = { { "pub identity", test_pub_identity }, { "pub cannot recv", test_pub_cannot_recv }, { "put no context", test_pub_no_context }, diff --git a/src/protocol/pubsub0/sub_test.c b/src/protocol/pubsub0/sub_test.c index 3edf1d164..b830ae802 100644 --- a/src/protocol/pubsub0/sub_test.c +++ b/src/protocol/pubsub0/sub_test.c @@ -7,18 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include - -#ifndef NNI_PROTO -#define NNI_PROTO(x, y) (((x) << 4u) | (y)) -#endif +#include static void test_sub_identity(void) @@ -27,18 +16,18 @@ test_sub_identity(void) int p; char * n; - TEST_NNG_PASS(nng_sub0_open(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 1u)); // 33 - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 0u)); // 32 - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n)); - TEST_CHECK(strcmp(n, "sub") == 0); + NUTS_PASS(nng_sub0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 1u)); // 33 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 0u)); // 32 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, "sub"); nng_strfree(n); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n)); - TEST_CHECK(strcmp(n, "pub") == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, "pub"); nng_strfree(n); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } static void @@ -46,9 +35,9 @@ test_sub_cannot_send(void) { nng_socket sub; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_FAIL(nng_send(sub, "", 0, 0), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_FAIL(nng_send(sub, "", 0, 0), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -59,17 +48,17 @@ test_sub_context_cannot_send(void) nng_msg * m; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_msg(aio, m); nng_aio_set_timeout(aio, 1000); nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(sub); nng_aio_free(aio); nng_msg_free(m); } @@ -80,9 +69,9 @@ test_sub_not_writeable(void) int fd; nng_socket sub; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_FAIL(nng_getopt_int(sub, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_FAIL(nng_socket_get_int(sub, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -92,38 +81,38 @@ test_sub_poll_readable(void) nng_socket pub; nng_socket sub; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "a", 1)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_getopt_int(sub, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "a", 1)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_get_int(sub, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(pub, sub); + NUTS_TRUE(nuts_poll_fd(fd) == false); // If we send a message we didn't subscribe to, that doesn't matter. - TEST_NNG_SEND_STR(pub, "def"); - testutil_sleep(100); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_SEND(pub, "def"); + NUTS_SLEEP(100); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(pub, "abc"); - testutil_sleep(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_SEND(pub, "abc"); + NUTS_SLEEP(100); + NUTS_TRUE(nuts_poll_fd(fd)); // and receiving makes it no longer ready - TEST_NNG_RECV_STR(sub, "abc"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_RECV(sub, "abc"); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void @@ -135,41 +124,41 @@ test_sub_recv_late(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "", 0)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_getopt_int(sub, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "", 0)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_get_int(sub, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(pub, sub); + NUTS_TRUE(nuts_poll_fd(fd) == false); nng_recv_aio(sub, aio); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(pub, "abc"); - testutil_sleep(200); + NUTS_SEND(pub, "abc"); + NUTS_SLEEP(200); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); msg = nng_aio_get_msg(aio); nng_aio_set_msg(aio, NULL); - TEST_CHECK(nng_msg_len(msg) == 4); - TEST_CHECK(strcmp(nng_msg_body(msg), "abc") == 0); + NUTS_TRUE(nng_msg_len(msg) == 4); + NUTS_MATCH(nng_msg_body(msg), "abc"); nng_msg_free(msg); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } void @@ -179,14 +168,12 @@ test_sub_context_no_poll(void) nng_socket sub; nng_ctx ctx; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(sub); } void @@ -195,28 +182,28 @@ test_sub_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_sub0_open(&s1)); - TEST_NNG_PASS(nng_sub0_open(&s2)); + NUTS_PASS(nng_sub0_open(&s1)); + NUTS_PASS(nng_sub0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -226,15 +213,15 @@ test_sub_recv_ctx_closed(void) nng_socket sub; nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_ctx_close(ctx); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -244,16 +231,16 @@ test_sub_ctx_recv_aio_stopped(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); nng_aio_stop(aio); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -264,16 +251,16 @@ test_sub_close_context_recv(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 1000); nng_ctx_recv(ctx, aio); - TEST_NNG_PASS(nng_ctx_close(ctx)); + NUTS_PASS(nng_ctx_close(ctx)); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -284,16 +271,16 @@ test_sub_ctx_recv_nonblock(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -304,17 +291,17 @@ test_sub_ctx_recv_cancel(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_ctx_open(&ctx, sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_ctx_open(&ctx, sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 1000); nng_ctx_recv(ctx, aio); nng_aio_abort(aio, NNG_ECANCELED); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -327,28 +314,28 @@ test_sub_recv_buf_option(void) size_t sz; const char *opt = NNG_OPT_RECVBUF; - TEST_NNG_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_setopt_int(sub, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, 1000000), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(sub, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(sub, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(sub, opt, 1)); + NUTS_FAIL(nng_socket_set_int(sub, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(sub, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(sub, opt, 1000000), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(sub, opt, 3)); + NUTS_PASS(nng_socket_get_int(sub, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(sub, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(sub, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(sub, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(sub, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(sub, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(sub, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(sub, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(sub, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(sub, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(sub, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -359,16 +346,16 @@ test_sub_subscribe_option(void) int v; const char *opt = NNG_OPT_SUB_SUBSCRIBE; - TEST_NNG_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_setopt(sub, opt, "abc", 3)); - TEST_NNG_PASS(nng_setopt(sub, opt, "abc", 3)); // duplicate - TEST_NNG_PASS(nng_setopt_bool(sub, opt, false)); - TEST_NNG_PASS(nng_setopt_int(sub, opt, 32)); + NUTS_PASS(nng_socket_set(sub, opt, "abc", 3)); + NUTS_PASS(nng_socket_set(sub, opt, "abc", 3)); // duplicate + NUTS_PASS(nng_socket_set_bool(sub, opt, false)); + NUTS_PASS(nng_socket_set_int(sub, opt, 32)); sz = sizeof(v); - TEST_NNG_FAIL(nng_getopt(sub, opt, &v, &sz), NNG_EWRITEONLY); + NUTS_FAIL(nng_socket_get(sub, opt, &v, &sz), NNG_EWRITEONLY); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -380,19 +367,19 @@ test_sub_unsubscribe_option(void) const char *opt1 = NNG_OPT_SUB_SUBSCRIBE; const char *opt2 = NNG_OPT_SUB_UNSUBSCRIBE; - TEST_NNG_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_setopt(sub, opt1, "abc", 3)); - TEST_NNG_FAIL(nng_setopt(sub, opt2, "abcdef", 6), NNG_ENOENT); - TEST_NNG_PASS(nng_setopt(sub, opt2, "abc", 3)); - TEST_NNG_FAIL(nng_setopt(sub, opt2, "abc", 3), NNG_ENOENT); - TEST_NNG_PASS(nng_setopt_int(sub, opt1, 32)); - TEST_NNG_FAIL(nng_setopt_int(sub, opt2, 23), NNG_ENOENT); - TEST_NNG_PASS(nng_setopt_int(sub, opt2, 32)); + NUTS_PASS(nng_socket_set(sub, opt1, "abc", 3)); + NUTS_FAIL(nng_socket_set(sub, opt2, "abc123", 6), NNG_ENOENT); + NUTS_PASS(nng_socket_set(sub, opt2, "abc", 3)); + NUTS_FAIL(nng_socket_set(sub, opt2, "abc", 3), NNG_ENOENT); + NUTS_PASS(nng_socket_set_int(sub, opt1, 32)); + NUTS_FAIL(nng_socket_set_int(sub, opt2, 23), NNG_ENOENT); + NUTS_PASS(nng_socket_set_int(sub, opt2, 32)); sz = sizeof(v); - TEST_NNG_FAIL(nng_getopt(sub, opt2, &v, &sz), NNG_EWRITEONLY); + NUTS_FAIL(nng_socket_get(sub, opt2, &v, &sz), NNG_EWRITEONLY); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -403,22 +390,22 @@ test_sub_prefer_new_option(void) size_t sz; const char *opt = NNG_OPT_SUB_PREFNEW; - TEST_NNG_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_setopt_bool(sub, opt, true)); - TEST_NNG_PASS(nng_setopt_bool(sub, opt, false)); - TEST_NNG_PASS(nng_getopt_bool(sub, opt, &b)); - TEST_CHECK(b == false); + NUTS_PASS(nng_socket_set_bool(sub, opt, true)); + NUTS_PASS(nng_socket_set_bool(sub, opt, false)); + NUTS_PASS(nng_socket_get_bool(sub, opt, &b)); + NUTS_TRUE(b == false); sz = sizeof(b); b = true; - TEST_NNG_PASS(nng_getopt(sub, opt, &b, &sz)); - TEST_CHECK(b == false); - TEST_CHECK(sz == sizeof(bool)); + NUTS_PASS(nng_socket_get(sub, opt, &b, &sz)); + NUTS_TRUE(b == false); + NUTS_TRUE(sz == sizeof(bool)); - TEST_NNG_FAIL(nng_setopt(sub, opt, "abc", 3), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, 1), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_set(sub, opt, "abc", 3), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(sub, opt, 1), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } void @@ -428,23 +415,23 @@ test_sub_drop_new(void) nng_socket pub; nng_msg * msg; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 2)); - TEST_NNG_PASS(nng_setopt_bool(sub, NNG_OPT_SUB_PREFNEW, false)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, NULL, 0)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_NNG_SEND_STR(pub, "one"); - TEST_NNG_SEND_STR(pub, "two"); - TEST_NNG_SEND_STR(pub, "three"); - testutil_sleep(100); - TEST_NNG_RECV_STR(sub, "one"); - TEST_NNG_RECV_STR(sub, "two"); - TEST_NNG_FAIL(nng_recvmsg(sub, &msg, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 2)); + NUTS_PASS(nng_socket_set_bool(sub, NNG_OPT_SUB_PREFNEW, false)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, NULL, 0)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_MARRY(pub, sub); + NUTS_SEND(pub, "one"); + NUTS_SEND(pub, "two"); + NUTS_SEND(pub, "three"); + NUTS_SLEEP(100); + NUTS_RECV(sub, "one"); + NUTS_RECV(sub, "two"); + NUTS_FAIL(nng_recvmsg(sub, &msg, 0), NNG_ETIMEDOUT); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } void @@ -454,23 +441,23 @@ test_sub_drop_old(void) nng_socket pub; nng_msg * msg; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 2)); - TEST_NNG_PASS(nng_setopt_bool(sub, NNG_OPT_SUB_PREFNEW, true)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, NULL, 0)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_NNG_SEND_STR(pub, "one"); - TEST_NNG_SEND_STR(pub, "two"); - TEST_NNG_SEND_STR(pub, "three"); - testutil_sleep(100); - TEST_NNG_RECV_STR(sub, "two"); - TEST_NNG_RECV_STR(sub, "three"); - TEST_NNG_FAIL(nng_recvmsg(sub, &msg, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 2)); + NUTS_PASS(nng_socket_set_bool(sub, NNG_OPT_SUB_PREFNEW, true)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, NULL, 0)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_MARRY(pub, sub); + NUTS_SEND(pub, "one"); + NUTS_SEND(pub, "two"); + NUTS_SEND(pub, "three"); + NUTS_SLEEP(100); + NUTS_RECV(sub, "two"); + NUTS_RECV(sub, "three"); + NUTS_FAIL(nng_recvmsg(sub, &msg, 0), NNG_ETIMEDOUT); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void @@ -481,46 +468,46 @@ test_sub_filter(void) char buf[32]; size_t sz; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 10)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 10)); // Set up some default filters - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "abc", 3)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "def", 3)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "ghi", 3)); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_SUBSCRIBE, "jkl", 3)); - - TEST_NNG_PASS(testutil_marry(pub, sub)); - - TEST_NNG_PASS(nng_send(pub, "def", 3, 0)); - TEST_NNG_PASS(nng_send(pub, "de", 2, 0)); // will not go through - TEST_NNG_PASS(nng_send(pub, "abc123", 6, 0)); - TEST_NNG_PASS(nng_send(pub, "xzy", 3, 0)); // does not match - TEST_NNG_PASS(nng_send(pub, "ghidrop", 7, 0)); // dropped by unsub - TEST_NNG_PASS(nng_send(pub, "jklmno", 6, 0)); - - testutil_sleep(100); - TEST_NNG_PASS(nng_setopt(sub, NNG_OPT_SUB_UNSUBSCRIBE, "ghi", 3)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "abc", 3)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "def", 3)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "ghi", 3)); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_SUBSCRIBE, "jkl", 3)); + + NUTS_MARRY(pub, sub); + + NUTS_PASS(nng_send(pub, "def", 3, 0)); + NUTS_PASS(nng_send(pub, "de", 2, 0)); // will not go through + NUTS_PASS(nng_send(pub, "abc123", 6, 0)); + NUTS_PASS(nng_send(pub, "xzy", 3, 0)); // does not match + NUTS_PASS(nng_send(pub, "ghi-drop", 7, 0)); // dropped by unsub + NUTS_PASS(nng_send(pub, "jkl-mno", 6, 0)); + + NUTS_SLEEP(100); + NUTS_PASS(nng_socket_set(sub, NNG_OPT_SUB_UNSUBSCRIBE, "ghi", 3)); sz = sizeof(buf); - TEST_NNG_PASS(nng_recv(sub, buf, &sz, 0)); - TEST_CHECK(sz == 3); - TEST_CHECK(memcmp(buf, "def", 3) == 0); + NUTS_PASS(nng_recv(sub, buf, &sz, 0)); + NUTS_TRUE(sz == 3); + NUTS_TRUE(memcmp(buf, "def", 3) == 0); sz = sizeof(buf); - TEST_NNG_PASS(nng_recv(sub, buf, &sz, 0)); - TEST_CHECK(sz == 6); - TEST_CHECK(memcmp(buf, "abc123", 6) == 0); + NUTS_PASS(nng_recv(sub, buf, &sz, 0)); + NUTS_TRUE(sz == 6); + NUTS_TRUE(memcmp(buf, "abc123", 6) == 0); sz = sizeof(buf); - TEST_NNG_PASS(nng_recv(sub, buf, &sz, 0)); - TEST_CHECK(sz == 6); - TEST_CHECK(memcmp(buf, "jklmno", 6) == 0); + NUTS_PASS(nng_recv(sub, buf, &sz, 0)); + NUTS_TRUE(sz == 6); + NUTS_TRUE(memcmp(buf, "jkl-mno", 6) == 0); - TEST_NNG_PASS(nng_close(sub)); - TEST_NNG_PASS(nng_close(pub)); + NUTS_CLOSE(sub); + NUTS_CLOSE(pub); } static void @@ -534,55 +521,55 @@ test_sub_multi_context(void) nng_aio * aio2; nng_msg * m; - TEST_NNG_PASS(nng_sub0_open(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); - TEST_NNG_PASS(nng_ctx_open(&c1, sub)); - TEST_NNG_PASS(nng_ctx_open(&c2, sub)); + NUTS_PASS(nng_sub0_open(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_ctx_open(&c1, sub)); + NUTS_PASS(nng_ctx_open(&c2, sub)); - TEST_NNG_PASS(nng_ctx_setopt(c1, NNG_OPT_SUB_SUBSCRIBE, "one", 3)); - TEST_NNG_PASS(nng_ctx_setopt(c1, NNG_OPT_SUB_SUBSCRIBE, "all", 3)); + NUTS_PASS(nng_ctx_set(c1, NNG_OPT_SUB_SUBSCRIBE, "one", 3)); + NUTS_PASS(nng_ctx_set(c1, NNG_OPT_SUB_SUBSCRIBE, "all", 3)); - TEST_NNG_PASS(nng_ctx_setopt(c2, NNG_OPT_SUB_SUBSCRIBE, "two", 3)); - TEST_NNG_PASS(nng_ctx_setopt(c2, NNG_OPT_SUB_SUBSCRIBE, "all", 3)); + NUTS_PASS(nng_ctx_set(c2, NNG_OPT_SUB_SUBSCRIBE, "two", 3)); + NUTS_PASS(nng_ctx_set(c2, NNG_OPT_SUB_SUBSCRIBE, "all", 3)); nng_aio_set_timeout(aio1, 100); nng_aio_set_timeout(aio2, 100); - TEST_NNG_PASS(testutil_marry(pub, sub)); + NUTS_MARRY(pub, sub); - TEST_NNG_SEND_STR(pub, "one for the money"); - TEST_NNG_SEND_STR(pub, "all dogs go to heaven"); - TEST_NNG_SEND_STR(pub, "nobody likes a snitch"); - TEST_NNG_SEND_STR(pub, "two for the show"); + NUTS_SEND(pub, "one for the money"); + NUTS_SEND(pub, "all dogs go to heaven"); + NUTS_SEND(pub, "nobody likes a snitch"); + NUTS_SEND(pub, "two for the show"); nng_ctx_recv(c1, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio1)); m = nng_aio_get_msg(aio1); - TEST_CHECK(strcmp(nng_msg_body(m), "one for the money") == 0); + NUTS_MATCH(nng_msg_body(m), "one for the money"); nng_msg_free(m); nng_ctx_recv(c1, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio1)); m = nng_aio_get_msg(aio1); - TEST_CHECK(strcmp(nng_msg_body(m), "all dogs go to heaven") == 0); + NUTS_MATCH(nng_msg_body(m), "all dogs go to heaven"); nng_msg_free(m); nng_ctx_recv(c2, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio1)); m = nng_aio_get_msg(aio1); - TEST_CHECK(strcmp(nng_msg_body(m), "all dogs go to heaven") == 0); + NUTS_MATCH(nng_msg_body(m), "all dogs go to heaven"); nng_msg_free(m); nng_ctx_recv(c2, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio1)); m = nng_aio_get_msg(aio1); - TEST_CHECK(strcmp(nng_msg_body(m), "two for the show") == 0); + NUTS_MATCH(nng_msg_body(m), "two for the show"); nng_msg_free(m); nng_ctx_recv(c1, aio1); @@ -590,10 +577,10 @@ test_sub_multi_context(void) nng_aio_wait(aio1); nng_aio_wait(aio2); - TEST_NNG_FAIL(nng_aio_result(aio1), NNG_ETIMEDOUT); - TEST_NNG_FAIL(nng_aio_result(aio2), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(sub)); - TEST_NNG_PASS(nng_close(pub)); + NUTS_FAIL(nng_aio_result(aio1), NNG_ETIMEDOUT); + NUTS_FAIL(nng_aio_result(aio2), NNG_ETIMEDOUT); + NUTS_CLOSE(sub); + NUTS_CLOSE(pub); nng_aio_free(aio1); nng_aio_free(aio2); } @@ -604,10 +591,10 @@ test_sub_cooked(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_sub0_open(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(!b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_sub0_open(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(!b); + NUTS_CLOSE(s); } TEST_LIST = { diff --git a/src/protocol/pubsub0/xsub_test.c b/src/protocol/pubsub0/xsub_test.c index a05b893c1..198156616 100644 --- a/src/protocol/pubsub0/xsub_test.c +++ b/src/protocol/pubsub0/xsub_test.c @@ -7,18 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include - -#ifndef NNI_PROTO -#define NNI_PROTO(x, y) (((x) << 4u) | (y)) -#endif +#include static void test_xsub_identity(void) @@ -27,18 +16,18 @@ test_xsub_identity(void) int p; char * n; - TEST_NNG_PASS(nng_sub0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 1u)); // 33 - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p)); - TEST_CHECK(p == NNI_PROTO(2u, 0u)); // 32 - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n)); - TEST_CHECK(strcmp(n, "sub") == 0); + NUTS_PASS(nng_sub0_open_raw(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 1u)); // 33 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NUTS_PROTO(2u, 0u)); // 32 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, "sub"); nng_strfree(n); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n)); - TEST_CHECK(strcmp(n, "pub") == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, "pub"); nng_strfree(n); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } static void @@ -46,9 +35,9 @@ test_xsub_cannot_send(void) { nng_socket sub; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_FAIL(nng_send(sub, "", 0, 0), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_FAIL(nng_send(sub, "", 0, 0), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -57,9 +46,9 @@ test_xsub_not_writeable(void) int fd; nng_socket sub; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_FAIL(nng_getopt_int(sub, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_FAIL(nng_socket_get_int(sub, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -69,33 +58,33 @@ test_xsub_poll_readable(void) nng_socket pub; nng_socket sub; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_getopt_int(sub, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_get_int(sub, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(pub, sub); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(pub, "abc"); - testutil_sleep(200); + NUTS_SEND(pub, "abc"); + NUTS_SLEEP(200); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); // and receiving makes it no longer ready - TEST_NNG_RECV_STR(sub, "abc"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_RECV(sub, "abc"); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void @@ -107,40 +96,40 @@ test_xsub_recv_late(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_getopt_int(sub, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_get_int(sub, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(pub, sub)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(pub, sub); + NUTS_TRUE(nuts_poll_fd(fd) == false); nng_recv_aio(sub, aio); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(pub, "abc"); - testutil_sleep(200); + NUTS_SEND(pub, "abc"); + NUTS_SLEEP(200); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); msg = nng_aio_get_msg(aio); nng_aio_set_msg(aio, NULL); - TEST_CHECK(nng_msg_len(msg) == 4); - TEST_CHECK(strcmp(nng_msg_body(msg), "abc") == 0); + NUTS_TRUE(nng_msg_len(msg) == 4); + NUTS_TRUE(strcmp(nng_msg_body(msg), "abc") == 0); nng_msg_free(msg); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } void @@ -149,9 +138,9 @@ test_xsub_no_context(void) nng_socket sub; nng_ctx ctx; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, sub), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_FAIL(nng_ctx_open(&ctx, sub), NNG_ENOTSUP); + NUTS_CLOSE(sub); } void @@ -160,28 +149,28 @@ test_xsub_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_sub0_open_raw(&s1)); - TEST_NNG_PASS(nng_sub0_open_raw(&s2)); + NUTS_PASS(nng_sub0_open_raw(&s1)); + NUTS_PASS(nng_sub0_open_raw(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -190,12 +179,12 @@ test_xsub_recv_closed(void) { nng_socket sub; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - nng_close(sub); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_CLOSE(sub); nng_recv_aio(sub, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); } @@ -205,13 +194,13 @@ test_xsub_close_recv(void) nng_socket sub; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 1000); nng_recv_aio(sub, aio); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); } @@ -222,15 +211,15 @@ test_xsub_recv_nonblock(void) nng_socket sub; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_recv_aio(sub, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(sub); nng_aio_free(aio); } @@ -243,27 +232,27 @@ test_xsub_recv_buf_option(void) size_t sz; const char *opt = NNG_OPT_RECVBUF; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_setopt_int(sub, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(sub, opt, 1000000), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(sub, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(sub, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(sub, opt, 1)); + NUTS_FAIL(nng_socket_set_int(sub, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(sub, opt, 1000000), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(sub, opt, 3)); + NUTS_PASS(nng_socket_get_int(sub, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(sub, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(sub, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(sub, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(sub, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(sub, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(sub, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(sub, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(sub, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(sub, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(sub, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -272,9 +261,9 @@ test_xsub_subscribe_option(void) nng_socket sub; const char *opt = NNG_OPT_SUB_SUBSCRIBE; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_FAIL(nng_setopt(sub, opt, "abc", 3), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_FAIL(nng_socket_set(sub, opt, "abc", 3), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -283,9 +272,9 @@ test_xsub_unsubscribe_option(void) nng_socket sub; const char *opt = NNG_OPT_SUB_UNSUBSCRIBE; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_FAIL(nng_setopt(sub, opt, "abc", 3), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(sub)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_FAIL(nng_socket_set(sub, opt, "abc", 3), NNG_ENOTSUP); + NUTS_CLOSE(sub); } static void @@ -294,10 +283,10 @@ test_xsub_raw(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_sub0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_sub0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } static void @@ -306,20 +295,20 @@ test_xsub_close_during_recv(void) nng_socket sub; nng_socket pub; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(pub, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(pub, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry(pub, sub)); + NUTS_MARRY(pub, sub); for (unsigned i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_send(pub, "abc", 3, 0)); + NUTS_PASS(nng_send(pub, "abc", 3, 0)); } - TEST_NNG_PASS(nng_close(pub)); - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(pub); + NUTS_CLOSE(sub); } static void @@ -328,14 +317,14 @@ test_xsub_close_during_pipe_recv(void) nng_socket sub; nng_socket pub; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_pub0_open(&pub)); - TEST_NNG_PASS(nng_setopt_ms(sub, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(pub, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(sub, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(pub, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_pub0_open(&pub)); + NUTS_PASS(nng_socket_set_ms(sub, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(pub, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(sub, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(pub, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry(pub, sub)); + NUTS_MARRY(pub, sub); for (unsigned i = 0; i < 100; i++) { int rv; @@ -343,9 +332,9 @@ test_xsub_close_during_pipe_recv(void) if (rv == NNG_ETIMEDOUT) { break; } - testutil_sleep(1); + NUTS_SLEEP(1); } - TEST_NNG_PASS(nng_close(sub)); + NUTS_CLOSE(sub); } static void @@ -354,14 +343,14 @@ test_xsub_recv_aio_stopped(void) nng_socket sub; nng_aio * aio; - TEST_NNG_PASS(nng_sub0_open_raw(&sub)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_sub0_open_raw(&sub)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_stop(aio); nng_recv_aio(sub, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(sub)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(sub); nng_aio_free(aio); } diff --git a/src/protocol/reqrep0/rep_test.c b/src/protocol/reqrep0/rep_test.c index a79a342b7..5a47e67a0 100644 --- a/src/protocol/reqrep0/rep_test.c +++ b/src/protocol/reqrep0/rep_test.c @@ -7,15 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include -#include - -#include -#include +#include static void test_rep_identity(void) @@ -25,16 +17,16 @@ test_rep_identity(void) char * n1; char * n2; - TEST_NNG_PASS(nng_rep0_open(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p1)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p2)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n1)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n2)); - TEST_NNG_PASS(nng_close(s)); - TEST_CHECK(p1 == NNG_REP0_SELF); - TEST_CHECK(p2 == NNG_REP0_PEER); - TEST_CHECK(strcmp(n1, NNG_REP0_SELF_NAME) == 0); - TEST_CHECK(strcmp(n2, NNG_REP0_PEER_NAME) == 0); + NUTS_PASS(nng_rep0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p1)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p2)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n1)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n2)); + NUTS_CLOSE(s); + NUTS_TRUE(p1 == NNG_REP0_SELF); + NUTS_TRUE(p2 == NNG_REP0_PEER); + NUTS_MATCH(n1, NNG_REP0_SELF_NAME); + NUTS_MATCH(n2, NNG_REP0_PEER_NAME); nng_strfree(n1); nng_strfree(n2); } @@ -45,11 +37,11 @@ test_rep_send_bad_state(void) nng_socket rep; nng_msg * msg = NULL; - TEST_CHECK(nng_rep0_open(&rep) == 0); - TEST_CHECK(nng_msg_alloc(&msg, 0) == 0); - TEST_CHECK(nng_sendmsg(rep, msg, 0) == NNG_ESTATE); + NUTS_TRUE(nng_rep0_open(&rep) == 0); + NUTS_TRUE(nng_msg_alloc(&msg, 0) == 0); + NUTS_TRUE(nng_sendmsg(rep, msg, 0) == NNG_ESTATE); nng_msg_free(msg); - TEST_CHECK(nng_close(rep) == 0); + NUTS_CLOSE(rep); } void @@ -59,33 +51,33 @@ test_rep_poll_writeable(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(rep, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(rep, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Not writable before connect. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // Still not writable. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // If we get a job, *then* we become writable - TEST_NNG_SEND_STR(req, "abc"); - TEST_NNG_RECV_STR(rep, "abc"); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_SEND(req, "abc"); + NUTS_RECV(rep, "abc"); + NUTS_TRUE(nuts_poll_fd(fd) == true); // And is no longer writable once we send a message - TEST_NNG_SEND_STR(rep, "def"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_SEND(rep, "def"); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after receiving it - TEST_NNG_RECV_STR(req, "def"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_RECV(req, "def"); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -96,34 +88,34 @@ test_rep_poll_readable(void) nng_socket rep; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(rep, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(rep, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(req, rep); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(req, "abc"); - testutil_sleep(100); + NUTS_SEND(req, "abc"); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // TODO verify unsolicited response - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -133,14 +125,12 @@ test_rep_context_no_poll(void) nng_socket req; nng_ctx ctx; - TEST_NNG_PASS(nng_rep0_open(&req)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(req)); + NUTS_PASS(nng_rep0_open(&req)); + NUTS_PASS(nng_ctx_open(&ctx, req)); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(req); } void @@ -149,28 +139,27 @@ test_rep_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; - - testutil_scratch_addr("inproc", sizeof(addr), addr); + char * addr; - TEST_NNG_PASS(nng_rep0_open(&s1)); - TEST_NNG_PASS(nng_rep0_open(&s2)); + NUTS_ADDR(addr, "inproc"); + NUTS_PASS(nng_rep0_open(&s1)); + NUTS_PASS(nng_rep0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -181,17 +170,17 @@ test_rep_double_recv(void) nng_aio * aio1; nng_aio * aio2; - TEST_NNG_PASS(nng_rep0_open(&s1)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_rep0_open(&s1)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); nng_recv_aio(s1, aio1); nng_recv_aio(s1, aio2); nng_aio_wait(aio2); - TEST_NNG_FAIL(nng_aio_result(aio2), NNG_ESTATE); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_FAIL(nng_aio_result(aio1), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio2), NNG_ESTATE); + NUTS_CLOSE(s1); + NUTS_FAIL(nng_aio_result(aio1), NNG_ECLOSED); nng_aio_free(aio1); nng_aio_free(aio2); } @@ -205,26 +194,26 @@ test_rep_close_pipe_before_send(void) nng_aio * aio1; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_NNG_SEND_STR(req, "test"); + NUTS_MARRY(req, rep); + NUTS_SEND(req, "test"); nng_recv_aio(rep, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_CHECK((m = nng_aio_get_msg(aio1)) != NULL); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_TRUE((m = nng_aio_get_msg(aio1)) != NULL); p = nng_msg_get_pipe(m); - TEST_NNG_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); + NUTS_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_sendmsg(rep, m, 0)); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); nng_aio_free(aio1); } @@ -236,25 +225,24 @@ test_rep_close_pipe_during_send(void) nng_pipe p = NNG_PIPE_INITIALIZER; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 20)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); for (int i = 0; i < 100; i++) { int rv; - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); p = nng_msg_get_pipe(m); rv = nng_sendmsg(rep, m, 0); if (rv == NNG_ETIMEDOUT) { @@ -262,12 +250,12 @@ test_rep_close_pipe_during_send(void) nng_msg_free(m); break; } - TEST_NNG_PASS(rv); + NUTS_PASS(rv); } - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -277,16 +265,16 @@ test_rep_ctx_recv_aio_stopped(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_ctx_open(&ctx, rep)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx, rep)); nng_aio_stop(aio); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(rep); nng_aio_free(aio); } @@ -301,54 +289,53 @@ test_rep_close_pipe_context_send(void) nng_aio * aio[100]; int i; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); for (i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx[i], rep)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); } - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); for (i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); nng_ctx_recv(ctx[i], aio[i]); } for (i = 0; i < 100; i++) { nng_aio_wait(aio[i]); - TEST_NNG_PASS(nng_aio_result(aio[i])); - TEST_CHECK((m = nng_aio_get_msg(aio[i])) != NULL); + NUTS_PASS(nng_aio_result(aio[i])); + NUTS_TRUE((m = nng_aio_get_msg(aio[i])) != NULL); p = nng_msg_get_pipe(m); nng_aio_set_msg(aio[i], m); nng_ctx_send(ctx[i], aio[i]); } // Note that REQ socket is not reading the results. - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); for (i = 0; i < 100; i++) { int rv; nng_aio_wait(aio[i]); rv = nng_aio_result(aio[i]); if (rv != 0) { - TEST_NNG_FAIL(rv, NNG_ECLOSED); + NUTS_FAIL(rv, NNG_ECLOSED); nng_msg_free(nng_aio_get_msg(aio[i])); } nng_aio_free(aio[i]); - TEST_NNG_PASS(nng_ctx_close(ctx[i])); + NUTS_PASS(nng_ctx_close(ctx[i])); } - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -361,33 +348,32 @@ test_rep_close_context_send(void) nng_aio * aio[100]; int i; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); for (i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx[i], rep)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); } - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); for (i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); nng_ctx_recv(ctx[i], aio[i]); } for (i = 0; i < 100; i++) { nng_aio_wait(aio[i]); - TEST_NNG_PASS(nng_aio_result(aio[i])); - TEST_CHECK((m = nng_aio_get_msg(aio[i])) != NULL); + NUTS_PASS(nng_aio_result(aio[i])); + NUTS_TRUE((m = nng_aio_get_msg(aio[i])) != NULL); nng_aio_set_msg(aio[i], m); nng_ctx_send(ctx[i], aio[i]); } @@ -395,17 +381,17 @@ test_rep_close_context_send(void) // Note that REQ socket is not reading the results. for (i = 0; i < 100; i++) { int rv; - TEST_NNG_PASS(nng_ctx_close(ctx[i])); + NUTS_PASS(nng_ctx_close(ctx[i])); nng_aio_wait(aio[i]); rv = nng_aio_result(aio[i]); if (rv != 0) { - TEST_NNG_FAIL(rv, NNG_ECLOSED); + NUTS_FAIL(rv, NNG_ECLOSED); nng_msg_free(nng_aio_get_msg(aio[i])); } nng_aio_free(aio[i]); } - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -415,19 +401,19 @@ test_rep_close_recv(void) nng_socket req; nng_aio * aio; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_MARRY(req, rep); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_recv_aio(rep, aio); - TEST_NNG_PASS(nng_close(rep)); - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(rep); + NUTS_CLOSE(req); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); } @@ -461,28 +447,28 @@ test_rep_close_recv_cb(void) struct rep_close_recv_cb_state state; memset(&state, 0, sizeof(state)); - TEST_NNG_PASS(nng_mtx_alloc(&state.mtx)); - TEST_NNG_PASS(nng_cv_alloc(&state.cv, state.mtx)); + NUTS_PASS(nng_mtx_alloc(&state.mtx)); + NUTS_PASS(nng_cv_alloc(&state.cv, state.mtx)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_NNG_PASS(nng_aio_alloc(&state.aio, rep_close_recv_cb, &state)); + NUTS_MARRY(req, rep); + NUTS_PASS(nng_aio_alloc(&state.aio, rep_close_recv_cb, &state)); nng_recv_aio(rep, state.aio); - TEST_NNG_PASS(nng_close(rep)); - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(rep); + NUTS_CLOSE(req); nng_mtx_lock(state.mtx); while (!state.done) { - TEST_NNG_PASS(nng_cv_until(state.cv, nng_clock() + 1000)); + NUTS_PASS(nng_cv_until(state.cv, nng_clock() + 1000)); } nng_mtx_unlock(state.mtx); - TEST_CHECK(state.done != 0); - TEST_NNG_FAIL(nng_aio_result(state.aio), NNG_ECLOSED); - TEST_CHECK(nng_aio_get_msg(state.aio) == NULL); + NUTS_TRUE(state.done != 0); + NUTS_FAIL(nng_aio_result(state.aio), NNG_ECLOSED); + NUTS_TRUE(nng_aio_get_msg(state.aio) == NULL); nng_aio_free(state.aio); nng_cv_free(state.cv); nng_mtx_free(state.mtx); @@ -495,16 +481,16 @@ test_rep_ctx_recv_nonblock(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_ctx_open(&ctx, rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_ctx_open(&ctx, rep)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(rep)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(rep); nng_aio_free(aio); } @@ -517,19 +503,19 @@ test_rep_ctx_send_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 2000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_ctx_open(&ctx, rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 2000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_ctx_open(&ctx, rep)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_MARRY(req, rep); - TEST_NNG_SEND_STR(req, "SEND"); + NUTS_SEND(req, "SEND"); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); // message carries over msg = nng_aio_get_msg(aio); nng_aio_set_msg(aio, msg); @@ -537,9 +523,9 @@ test_rep_ctx_send_nonblock(void) nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); - TEST_NNG_PASS(nng_close(rep)); - TEST_NNG_PASS(nng_close(req)); + NUTS_PASS(nng_aio_result(aio)); + NUTS_CLOSE(rep); + NUTS_CLOSE(req); nng_aio_free(aio); } @@ -556,29 +542,28 @@ test_rep_ctx_send_nonblock2(void) // We are going to send a bunch of requests, receive them, // but then see that non-block pressure exerts for some, but // that at least one non-blocking send works. - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); for (int i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_ctx_open(&rep_ctx[i], rep)); - TEST_NNG_PASS(nng_aio_alloc(&rep_aio[i], NULL, NULL)); + NUTS_PASS(nng_ctx_open(&rep_ctx[i], rep)); + NUTS_PASS(nng_aio_alloc(&rep_aio[i], NULL, NULL)); } - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); for (int i = 0; i < 10; i++) { nng_msg *msg; - TEST_NNG_PASS(nng_msg_alloc(&msg, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(msg, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_msg_alloc(&msg, 4)); + NUTS_PASS(nng_msg_append_u32(msg, (unsigned) i | 0x80000000u)); nng_ctx_recv(rep_ctx[i], rep_aio[i]); - TEST_NNG_PASS(nng_sendmsg(req, msg, 0)); + NUTS_PASS(nng_sendmsg(req, msg, 0)); } for (int i = 0; i < 10; i++) { nng_msg *msg; nng_aio_wait(rep_aio[i]); - TEST_NNG_PASS(nng_aio_result(rep_aio[i])); + NUTS_PASS(nng_aio_result(rep_aio[i])); msg = nng_aio_get_msg(rep_aio[i]); nng_aio_set_timeout(rep_aio[i], 0); nng_aio_set_msg(rep_aio[i], msg); @@ -592,7 +577,7 @@ test_rep_ctx_send_nonblock2(void) if (rv == 0) { num_good++; } else { - TEST_NNG_FAIL(rv, NNG_ETIMEDOUT); + NUTS_FAIL(rv, NNG_ETIMEDOUT); nng_msg_free(nng_aio_get_msg(rep_aio[i])); num_fail++; } @@ -605,8 +590,8 @@ test_rep_ctx_send_nonblock2(void) nng_aio_free(rep_aio[i]); nng_ctx_close(rep_ctx[i]); } - TEST_NNG_PASS(nng_close(rep)); - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(rep); + NUTS_CLOSE(req); } static void @@ -616,24 +601,24 @@ test_rep_send_nonblock(void) nng_socket req; int rv; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_MARRY(req, rep); - TEST_NNG_SEND_STR(req, "SEND"); - TEST_NNG_RECV_STR(rep, "SEND"); + NUTS_SEND(req, "SEND"); + NUTS_RECV(rep, "SEND"); // Use the nonblock flag rv = nng_send(rep, "RECV", 5, NNG_FLAG_NONBLOCK); - TEST_NNG_PASS(rv); - TEST_NNG_RECV_STR(req, "RECV"); - TEST_NNG_PASS(nng_close(rep)); - TEST_NNG_PASS(nng_close(req)); + NUTS_PASS(rv); + NUTS_RECV(req, "RECV"); + NUTS_CLOSE(rep); + NUTS_CLOSE(req); } void @@ -643,24 +628,24 @@ test_rep_recv_garbage(void) nng_socket req; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + NUTS_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } -TEST_LIST = { +NUTS_TESTS = { { "rep identity", test_rep_identity }, { "rep send bad state", test_rep_send_bad_state }, { "rep poll readable", test_rep_poll_readable }, diff --git a/src/protocol/reqrep0/req_test.c b/src/protocol/reqrep0/req_test.c index add420def..fb78efa0b 100644 --- a/src/protocol/reqrep0/req_test.c +++ b/src/protocol/reqrep0/req_test.c @@ -8,14 +8,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include +#include static void test_req_identity(void) @@ -24,18 +17,18 @@ test_req_identity(void) int p; char * n; - TEST_NNG_PASS(nng_req0_open(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p)); - TEST_CHECK(p == NNG_REQ0_SELF); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p)); - TEST_CHECK(p == NNG_REQ0_PEER); // 49 - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n)); - TEST_CHECK(strcmp(n, NNG_REQ0_SELF_NAME) == 0); + NUTS_PASS(nng_req0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NNG_REQ0_SELF); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NNG_REQ0_PEER); // 49 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, NNG_REQ0_SELF_NAME); nng_strfree(n); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n)); - TEST_CHECK(strcmp(n, NNG_REQ0_PEER_NAME) == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, NNG_REQ0_PEER_NAME); nng_strfree(n); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } static void @@ -47,31 +40,31 @@ test_req_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_int(req, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(req, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(req, opt, -1), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(req, opt, 1)); + NUTS_FAIL(nng_socket_set_int(req, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(req, opt, -1), NNG_EINVAL); // This test will fail if the NNI_MAX_MAX_TTL is changed from the // builtin default of 15. - TEST_NNG_FAIL(nng_setopt_int(req, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(req, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(req, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(req, opt, &v)); - TEST_CHECK(v == 3); + NUTS_FAIL(nng_socket_set_int(req, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(req, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(req, opt, 3)); + NUTS_PASS(nng_socket_get_int(req, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(req, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(req, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(req, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(req, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(req, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(req, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(req, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(req, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(req, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(req, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(req); } static void @@ -83,17 +76,17 @@ test_req_resend_option(void) size_t sz = sizeof(b); const char * opt = NNG_OPT_REQ_RESENDTIME; - TEST_NNG_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_req0_open(&req)); - TEST_CHECK(nng_setopt_ms(req, opt, 10) == 0); - TEST_NNG_FAIL(nng_setopt(req, opt, "", 1), NNG_EINVAL); - TEST_NNG_FAIL(nng_getopt(req, opt, &b, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(req, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(req, opt, &b), NNG_EBADTYPE); + NUTS_TRUE(nng_socket_set_ms(req, opt, 10) == 0); + NUTS_FAIL(nng_socket_set(req, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(req, opt, &b, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(req, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(req, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_getopt_ms(req, opt, &d)); - TEST_CHECK(d == 10); - TEST_NNG_PASS(nng_close(req)); + NUTS_PASS(nng_socket_get_ms(req, opt, &d)); + NUTS_TRUE(d == 10); + NUTS_CLOSE(req); } void @@ -102,10 +95,10 @@ test_req_recv_bad_state(void) nng_socket req; nng_msg * msg = NULL; - TEST_CHECK(nng_req0_open(&req) == 0); - TEST_CHECK(nng_recvmsg(req, &msg, 0) == NNG_ESTATE); - TEST_CHECK(msg == NULL); - TEST_CHECK(nng_close(req) == 0); + NUTS_TRUE(nng_req0_open(&req) == 0); + NUTS_TRUE(nng_recvmsg(req, &msg, 0) == NNG_ESTATE); + NUTS_NULL(msg); + NUTS_CLOSE(req); } static void @@ -116,31 +109,31 @@ test_req_recv_garbage(void) nng_msg * m; uint32_t req_id; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); // The message will have a header that contains the 32-bit pipe ID, // followed by the 32-bit request ID. We will discard the request // ID before sending it out. - TEST_CHECK(nng_msg_header_len(m) == 8); - TEST_NNG_PASS(nng_msg_header_chop_u32(m, &req_id)); + NUTS_TRUE(nng_msg_header_len(m) == 8); + NUTS_PASS(nng_msg_header_chop_u32(m, &req_id)); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(req, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(rep, m, 0)); + NUTS_FAIL(nng_recvmsg(req, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } #define SECOND 1000 @@ -150,40 +143,24 @@ test_req_rep_exchange(void) { nng_socket req; nng_socket rep; - nng_msg * msg = NULL; - TEST_CHECK(nng_req0_open(&req) == 0); - TEST_CHECK(nng_rep0_open(&rep) == 0); - - TEST_CHECK(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND) == 0); - TEST_CHECK(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, SECOND) == 0); - TEST_CHECK(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND) == 0); - TEST_CHECK(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, SECOND) == 0); - - TEST_CHECK(testutil_marry(rep, req) == 0); - - TEST_CHECK(nng_msg_alloc(&msg, 0) == 0); - TEST_CHECK(nng_msg_append(msg, "ping", 5) == 0); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "ping") == 0); - TEST_CHECK(nng_sendmsg(req, msg, 0) == 0); - msg = NULL; - TEST_CHECK(nng_recvmsg(rep, &msg, 0) == 0); - TEST_CHECK(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "ping") == 0); - nng_msg_trim(msg, 5); - TEST_CHECK(nng_msg_append(msg, "pong", 5) == 0); - TEST_CHECK(nng_sendmsg(rep, msg, 0) == 0); - msg = NULL; - TEST_CHECK(nng_recvmsg(req, &msg, 0) == 0); - TEST_CHECK(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "pong") == 0); - nng_msg_free(msg); + NUTS_TRUE(nng_req0_open(&req) == 0); + NUTS_TRUE(nng_rep0_open(&rep) == 0); + + NUTS_TRUE(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND) == 0); + NUTS_TRUE(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, SECOND) == 0); + NUTS_TRUE(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND) == 0); + NUTS_TRUE(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, SECOND) == 0); + + NUTS_MARRY(rep, req); - TEST_CHECK(nng_close(req) == 0); - TEST_CHECK(nng_close(rep) == 0); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep, "ping"); + NUTS_SEND(rep, "pong"); + NUTS_RECV(req, "pong"); + + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -192,24 +169,24 @@ test_req_resend(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, 10)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, 10)); - TEST_NNG_PASS(testutil_marry(rep, req)); + NUTS_MARRY(rep, req); - TEST_NNG_SEND_STR(req, "ping"); - TEST_NNG_RECV_STR(rep, "ping"); - TEST_NNG_RECV_STR(rep, "ping"); - TEST_NNG_RECV_STR(rep, "ping"); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep, "ping"); + NUTS_RECV(rep, "ping"); + NUTS_RECV(rep, "ping"); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -219,34 +196,34 @@ test_req_resend_reconnect(void) nng_socket rep1; nng_socket rep2; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep1)); - TEST_NNG_PASS(nng_rep0_open(&rep2)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep1)); + NUTS_PASS(nng_rep0_open(&rep2)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_SENDTIMEO, SECOND)); // We intentionally set the retry time long; that way we only see // the retry from loss of our original peer. - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, 60 * SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, 60 * SECOND)); - TEST_NNG_PASS(testutil_marry(rep1, req)); + NUTS_MARRY(rep1, req); - TEST_NNG_SEND_STR(req, "ping"); - TEST_NNG_RECV_STR(rep1, "ping"); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep1, "ping"); - TEST_NNG_PASS(nng_close(rep1)); - TEST_NNG_PASS(testutil_marry(rep2, req)); + NUTS_CLOSE(rep1); + NUTS_MARRY(rep2, req); - TEST_NNG_RECV_STR(rep2, "ping"); - TEST_NNG_SEND_STR(rep2, "rep2"); - TEST_NNG_RECV_STR(req, "rep2"); + NUTS_RECV(rep2, "ping"); + NUTS_SEND(rep2, "rep2"); + NUTS_RECV(req, "rep2"); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep2)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep2); } void @@ -256,33 +233,33 @@ test_req_resend_disconnect(void) nng_socket rep1; nng_socket rep2; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep1)); - TEST_NNG_PASS(nng_rep0_open(&rep2)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep1)); + NUTS_PASS(nng_rep0_open(&rep2)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_SENDTIMEO, SECOND)); // We intentionally set the retry time long; that way we only see // the retry from loss of our original peer. - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, 60 * SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, 60 * SECOND)); - TEST_NNG_PASS(testutil_marry(rep1, req)); - TEST_NNG_SEND_STR(req, "ping"); - TEST_NNG_RECV_STR(rep1, "ping"); + NUTS_MARRY(rep1, req); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep1, "ping"); - TEST_NNG_PASS(testutil_marry(rep2, req)); - TEST_NNG_PASS(nng_close(rep1)); + NUTS_MARRY(rep2, req); + NUTS_CLOSE(rep1); - TEST_NNG_RECV_STR(rep2, "ping"); - TEST_NNG_SEND_STR(rep2, "rep2"); - TEST_NNG_RECV_STR(req, "rep2"); + NUTS_RECV(rep2, "ping"); + NUTS_SEND(rep2, "rep2"); + NUTS_RECV(req, "rep2"); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep2)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep2); } void @@ -292,32 +269,32 @@ test_req_disconnect_no_retry(void) nng_socket rep1; nng_socket rep2; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep1)); - TEST_NNG_PASS(nng_rep0_open(&rep2)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep1)); + NUTS_PASS(nng_rep0_open(&rep2)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_SENDTIMEO, SECOND / 10)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_SENDTIMEO, SECOND / 10)); // Setting the resend time to zero so we will force an error // if the peer disconnects without sending us an answer. - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, 0)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, 0)); - TEST_NNG_PASS(testutil_marry(rep1, req)); - TEST_NNG_SEND_STR(req, "ping"); - TEST_NNG_RECV_STR(rep1, "ping"); + NUTS_MARRY(rep1, req); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep1, "ping"); - TEST_NNG_PASS(testutil_marry(rep2, req)); - TEST_NNG_PASS(nng_close(rep1)); + NUTS_MARRY(rep2, req); + NUTS_CLOSE(rep1); nng_msg *msg = NULL; - TEST_NNG_FAIL(nng_recvmsg(req, &msg, 0), NNG_ECONNRESET); - TEST_NNG_FAIL(nng_recvmsg(rep2, &msg, 0), NNG_ETIMEDOUT); + NUTS_FAIL(nng_recvmsg(req, &msg, 0), NNG_ECONNRESET); + NUTS_FAIL(nng_recvmsg(rep2, &msg, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep2)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep2); } void @@ -328,186 +305,152 @@ test_req_disconnect_abort(void) nng_socket rep2; nng_aio * aio; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep1)); - TEST_NNG_PASS(nng_rep0_open(&rep2)); - TEST_NNG_PASS(nng_aio_alloc(&aio, 0, 0)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep1)); + NUTS_PASS(nng_rep0_open(&rep2)); + NUTS_PASS(nng_aio_alloc(&aio, 0, 0)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep1, NNG_OPT_SENDTIMEO, SECOND / 10)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep2, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep1, NNG_OPT_SENDTIMEO, SECOND / 10)); // Setting the resend time to zero so we will force an error // if the peer disconnects without sending us an answer. - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, 0)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, 0)); - TEST_NNG_PASS(testutil_marry(rep1, req)); - TEST_NNG_SEND_STR(req, "ping"); - TEST_NNG_RECV_STR(rep1, "ping"); + NUTS_MARRY(rep1, req); + NUTS_SEND(req, "ping"); + NUTS_RECV(rep1, "ping"); nng_recv_aio(req, aio); - TEST_NNG_PASS(testutil_marry(rep2, req)); - TEST_NNG_PASS(nng_close(rep1)); + NUTS_MARRY(rep2, req); + NUTS_CLOSE(rep1); nng_msg *msg = NULL; nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECONNRESET); - TEST_NNG_FAIL(nng_recvmsg(rep2, &msg, 0), NNG_ETIMEDOUT); + NUTS_FAIL(nng_aio_result(aio), NNG_ECONNRESET); + NUTS_FAIL(nng_recvmsg(rep2, &msg, 0), NNG_ETIMEDOUT); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep2)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep2); } void test_req_cancel(void) { - nng_msg * abc; - nng_msg * def; - nng_msg * cmd; nng_duration retry = SECOND; nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_rep_open(&rep)); - TEST_NNG_PASS(nng_req_open(&req)); - - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, retry)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 16)); + NUTS_PASS(nng_rep_open(&rep)); + NUTS_PASS(nng_req_open(&req)); - TEST_NNG_PASS(nng_msg_alloc(&abc, 0)); - TEST_NNG_PASS(nng_msg_append(abc, "abc", 4)); - TEST_NNG_PASS(nng_msg_alloc(&def, 0)); - TEST_NNG_PASS(nng_msg_append(def, "def", 4)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, retry)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 16)); - TEST_NNG_PASS(testutil_marry(rep, req)); + NUTS_MARRY(rep, req); // Send req #1 (abc). - TEST_CHECK(nng_sendmsg(req, abc, 0) == 0); + NUTS_SEND(req, "abc"); // Sleep a bit. This is so that we ensure that our request gets // to the far side. (If we cancel too fast, then our outgoing send // will be canceled before it gets to the peer.) - testutil_sleep(100); + NUTS_SLEEP(100); // Send the next next request ("def"). Note that // the REP side server will have already buffered the receive // request, and should simply be waiting for us to reply to abc. - TEST_NNG_PASS(nng_sendmsg(req, def, 0)); + NUTS_SEND(req, "def"); // Receive the first request (should be abc) on the REP server. - TEST_NNG_PASS(nng_recvmsg(rep, &cmd, 0)); - TEST_ASSERT(cmd != NULL); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "abc") == 0); + NUTS_RECV(rep, "abc"); // REP sends the reply to first command. This will be discarded // by the REQ socket. - TEST_NNG_PASS(nng_sendmsg(rep, cmd, 0)); + NUTS_SEND(rep, "abc"); // Now get the next command from the REP; should be "def". - TEST_NNG_PASS(nng_recvmsg(rep, &cmd, 0)); - TEST_ASSERT(cmd != NULL); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - TEST_MSG("Received body was %s", nng_msg_body(cmd)); + NUTS_RECV(rep, "def"); // And send it back to REQ. - TEST_NNG_PASS(nng_sendmsg(rep, cmd, 0)); + NUTS_SEND(rep, "def"); - // Try a req command. This should give back "def" - TEST_NNG_PASS(nng_recvmsg(req, &cmd, 0)); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - nng_msg_free(cmd); + // And we got back only the second result. + NUTS_RECV(req, "def"); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void test_req_cancel_abort_recv(void) { - - nng_msg * abc; - nng_msg * def; - nng_msg * cmd; nng_aio * aio; nng_duration retry = SECOND * 10; // 10s (kind of never) nng_socket req; nng_socket rep; - TEST_CHECK(nng_rep_open(&rep) == 0); - TEST_CHECK(nng_req_open(&req) == 0); - TEST_CHECK(nng_aio_alloc(&aio, NULL, NULL) == 0); - - TEST_CHECK(nng_setopt_ms(req, NNG_OPT_REQ_RESENDTIME, retry) == 0); - TEST_CHECK(nng_setopt_int(req, NNG_OPT_SENDBUF, 16) == 0); - TEST_CHECK(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 5 * SECOND) == 0); - TEST_CHECK(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 5 * SECOND) == 0); - TEST_CHECK(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 5 * SECOND) == 0); - TEST_CHECK(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 5 * SECOND) == 0); + NUTS_PASS(nng_rep_open(&rep)); + NUTS_PASS(nng_req_open(&req)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_CHECK(nng_msg_alloc(&abc, 0) == 0); - TEST_CHECK(nng_msg_append(abc, "abc", 4) == 0); - TEST_CHECK(nng_msg_alloc(&def, 0) == 0); - TEST_CHECK(nng_msg_append(def, "def", 4) == 0); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_REQ_RESENDTIME, retry)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 16)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_CHECK(testutil_marry(rep, req) == 0); + NUTS_MARRY(rep, req); // Send req #1 (abc). - TEST_CHECK(nng_sendmsg(req, abc, 0) == 0); + NUTS_SEND(req, "abc"); // Wait for it to get ot the other side. - testutil_sleep(100); + NUTS_SLEEP(100); nng_aio_set_timeout(aio, 5 * SECOND); nng_recv_aio(req, aio); // Give time for this recv to post properly. - testutil_sleep(100); + NUTS_SLEEP(100); // Send the next next request ("def"). Note that // the REP side server will have already buffered the receive // request, and should simply be waiting for us to reply to // abc. - TEST_CHECK(nng_sendmsg(req, def, 0) == 0); + NUTS_SEND(req, "def"); // Our pending I/O should have been canceled. nng_aio_wait(aio); - TEST_CHECK(nng_aio_result(aio) == NNG_ECANCELED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); // Receive the first request (should be abc) on the REP server. - TEST_CHECK(nng_recvmsg(rep, &cmd, 0) == 0); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "abc") == 0); + NUTS_RECV(rep, "abc"); // REP sends the reply to first command. This will be // discarded by the REQ socket. - TEST_CHECK(nng_sendmsg(rep, cmd, 0) == 0); + NUTS_SEND(rep, "abc"); // Now get the next command from the REP; should be "def". - TEST_CHECK(nng_recvmsg(rep, &cmd, 0) == 0); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); + NUTS_RECV(rep, "def"); // And send it back to REQ. - TEST_CHECK(nng_sendmsg(rep, cmd, 0) == 0); + NUTS_SEND(rep, "def"); // Try a req command. This should give back "def" - TEST_CHECK(nng_recvmsg(req, &cmd, 0) == 0); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - nng_msg_free(cmd); + NUTS_RECV(req, "def"); nng_aio_free(aio); - TEST_CHECK(nng_close(req) == 0); - TEST_CHECK(nng_close(rep) == 0); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -516,25 +459,25 @@ test_req_cancel_post_recv(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); - - TEST_NNG_SEND_STR(req, "ONE"); - TEST_NNG_RECV_STR(rep, "ONE"); - TEST_NNG_SEND_STR(rep, "one"); - testutil_sleep(100); // Make sure reply arrives! - TEST_NNG_SEND_STR(req, "TWO"); - TEST_NNG_RECV_STR(rep, "TWO"); - TEST_NNG_SEND_STR(rep, "two"); - TEST_NNG_RECV_STR(req, "two"); - - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_MARRY(req, rep); + + NUTS_SEND(req, "ONE"); + NUTS_RECV(rep, "ONE"); + NUTS_SEND(rep, "one"); + NUTS_SLEEP(100); // Make sure reply arrives! + NUTS_SEND(req, "TWO"); + NUTS_RECV(rep, "TWO"); + NUTS_SEND(rep, "two"); + NUTS_RECV(req, "two"); + + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -544,18 +487,18 @@ test_req_poll_writeable(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Not writable before connect. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // It should be writable now. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); // Submit a bunch of jobs. Note that we have to stall a bit // between each message to let it queue up. @@ -564,12 +507,12 @@ test_req_poll_writeable(void) if (rv == NNG_EAGAIN) { break; } - TEST_NNG_PASS(rv); - testutil_sleep(50); + NUTS_PASS(rv); + NUTS_SLEEP(50); } - TEST_CHECK(testutil_pollfd(fd) == 0); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_TRUE(nuts_poll_fd(fd) == false); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -584,26 +527,26 @@ test_req_poll_contention(void) nng_msg * ctx_msg[5]; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); for (int i = 0; i < 5; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], req)); - TEST_NNG_PASS(nng_aio_alloc(&ctx_aio[i], NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&ctx_msg[i], 0)); + NUTS_PASS(nng_ctx_open(&ctx[i], req)); + NUTS_PASS(nng_aio_alloc(&ctx_aio[i], NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&ctx_msg[i], 0)); } - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Not writable before connect. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); nng_aio_set_msg(aio, msg); nng_send_aio(req, aio); @@ -611,35 +554,35 @@ test_req_poll_contention(void) nng_aio_set_msg(ctx_aio[i], ctx_msg[i]); nng_ctx_send(ctx[i], ctx_aio[i]); } - testutil_sleep(50); // so everything is queued steady state + NUTS_SLEEP(50); // so everything is queued steady state - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // It should not be writable now. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); nng_msg_free(msg); // Still not writeable... - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); for (int i = 0; i < 5; i++) { - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); nng_msg_free(msg); } // It can take a little bit of time for the eased back-pressure // to reflect across the network. - testutil_sleep(100); + NUTS_SLEEP(100); // Should be come writeable now... - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); for (int i = 0; i < 5; i++) { nng_aio_free(ctx_aio[i]); } nng_aio_free(aio); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } void @@ -650,28 +593,28 @@ test_req_poll_multi_pipe(void) nng_socket rep1; nng_socket rep2; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep1)); - TEST_NNG_PASS(nng_rep0_open(&rep2)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep1)); + NUTS_PASS(nng_rep0_open(&rep2)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Not writable before connect. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(testutil_marry(req, rep1)); - TEST_NNG_PASS(testutil_marry(req, rep2)); + NUTS_MARRY(req, rep1); + NUTS_MARRY(req, rep2); - TEST_CHECK(testutil_pollfd(fd) == true); - TEST_NNG_SEND_STR(req, "ONE"); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); + NUTS_SEND(req, "ONE"); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep1)); - TEST_NNG_PASS(nng_close(rep2)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep1); + NUTS_CLOSE(rep2); } void @@ -682,39 +625,39 @@ test_req_poll_readable(void) nng_socket rep; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(req, rep); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_msg_append(msg, "xyz", 3)); - TEST_NNG_PASS(nng_sendmsg(req, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); // recv on rep - TEST_NNG_PASS(nng_sendmsg(rep, msg, 0)); // echo it back - testutil_sleep(200); // give time for message to arrive + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append(msg, "xyz", 3)); + NUTS_PASS(nng_sendmsg(req, msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); // recv on rep + NUTS_PASS(nng_sendmsg(rep, msg, 0)); // echo it back + NUTS_SLEEP(200); // give time for message to arrive - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(req, &msg, 0)); + NUTS_PASS(nng_recvmsg(req, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // TODO verify unsolicited response - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -724,14 +667,12 @@ test_req_ctx_no_poll(void) nng_socket req; nng_ctx ctx; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(req)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_ctx_open(&ctx, req)); + NUTS_FAIL(nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_FAIL(nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(req); } static void @@ -743,15 +684,15 @@ test_req_ctx_send_queued(void) nng_aio * aio[3]; nng_msg * msg[3]; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 100)); for (int i = 0; i < 3; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], req)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg[i], 0)); + NUTS_PASS(nng_ctx_open(&ctx[i], req)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg[i], 0)); } for (int i = 0; i < 3; i++) { @@ -759,20 +700,20 @@ test_req_ctx_send_queued(void) nng_ctx_send(ctx[i], aio[i]); } - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - testutil_sleep(50); // Only to ensure stuff queues up + NUTS_SLEEP(50); // Only to ensure stuff queues up for (int i = 0; i < 3; i++) { nng_msg *m; - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); nng_msg_free(m); } - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); for (int i = 0; i < 3; i++) { nng_aio_wait(aio[i]); - TEST_NNG_PASS(nng_aio_result(aio[i])); + NUTS_PASS(nng_aio_result(aio[i])); nng_aio_free(aio[i]); } } @@ -785,13 +726,13 @@ test_req_ctx_send_close(void) nng_aio * aio[3]; nng_msg * msg[3]; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); for (int i = 0; i < 3; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], req)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg[i], 0)); + NUTS_PASS(nng_ctx_open(&ctx[i], req)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg[i], 0)); } for (int i = 0; i < 3; i++) { @@ -805,11 +746,11 @@ test_req_ctx_send_close(void) for (int i = 0; i < 3; i++) { nng_aio_wait(aio[i]); - TEST_NNG_FAIL(nng_aio_result(aio[i]), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio[i]), NNG_ECLOSED); nng_aio_free(aio[i]); nng_msg_free(msg[i]); } - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(req); } static void @@ -820,13 +761,13 @@ test_req_ctx_send_abort(void) nng_aio * aio[3]; nng_msg * msg[3]; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); for (int i = 0; i < 3; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], req)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg[i], 0)); + NUTS_PASS(nng_ctx_open(&ctx[i], req)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg[i], 0)); } for (int i = 0; i < 3; i++) { @@ -840,11 +781,11 @@ test_req_ctx_send_abort(void) for (int i = 0; i < 3; i++) { nng_aio_wait(aio[i]); - TEST_NNG_FAIL(nng_aio_result(aio[i]), NNG_ECANCELED); + NUTS_FAIL(nng_aio_result(aio[i]), NNG_ECANCELED); nng_aio_free(aio[i]); nng_msg_free(msg[i]); } - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(req); } static void @@ -855,26 +796,26 @@ test_req_ctx_send_twice(void) nng_aio * aio[2]; nng_msg * msg[2]; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_ctx_open(&ctx, req)); for (int i = 0; i < 2; i++) { - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg[i], 0)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg[i], 0)); } for (int i = 0; i < 2; i++) { nng_aio_set_msg(aio[i], msg[i]); nng_ctx_send(ctx, aio[i]); - testutil_sleep(50); + NUTS_SLEEP(50); } - TEST_NNG_PASS(nng_close(req)); + NUTS_CLOSE(req); nng_aio_wait(aio[0]); nng_aio_wait(aio[1]); - TEST_NNG_FAIL(nng_aio_result(aio[0]), NNG_ECANCELED); - TEST_NNG_FAIL(nng_aio_result(aio[1]), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio[0]), NNG_ECANCELED); + NUTS_FAIL(nng_aio_result(aio[1]), NNG_ECLOSED); for (int i = 0; i < 2; i++) { nng_aio_free(aio[i]); @@ -891,25 +832,25 @@ test_req_ctx_recv_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_ctx_open(&ctx, req)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); nng_aio_set_msg(aio, msg); nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); nng_aio_free(aio); } @@ -921,17 +862,17 @@ test_req_ctx_send_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_ctx_open(&ctx, req)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); nng_aio_set_msg(aio, msg); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(req); nng_aio_free(aio); nng_msg_free(msg); } @@ -945,23 +886,23 @@ test_req_ctx_recv_close_socket(void) nng_aio * aio; nng_msg * m; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_ctx_open(&ctx, req)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_ctx_open(&ctx, req)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_MARRY(req, rep); + NUTS_PASS(nng_msg_alloc(&m, 0)); nng_aio_set_msg(aio, m); nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); nng_ctx_recv(ctx, aio); nng_close(req); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(rep); } static void @@ -970,32 +911,32 @@ test_req_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_req0_open(&s1)); - TEST_NNG_PASS(nng_req0_open(&s2)); + NUTS_PASS(nng_req0_open(&s1)); + NUTS_PASS(nng_req0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } -TEST_LIST = { +NUTS_TESTS = { { "req identity", test_req_identity }, { "req ttl option", test_req_ttl_option }, { "req resend option", test_req_resend_option }, diff --git a/src/protocol/reqrep0/xrep_test.c b/src/protocol/reqrep0/xrep_test.c index 8fc369649..6f1564eb6 100644 --- a/src/protocol/reqrep0/xrep_test.c +++ b/src/protocol/reqrep0/xrep_test.c @@ -7,14 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include +#include static void test_xrep_identity(void) @@ -24,16 +17,16 @@ test_xrep_identity(void) char * n1; char * n2; - TEST_NNG_PASS(nng_rep0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p1)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p2)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n1)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n2)); - TEST_NNG_PASS(nng_close(s)); - TEST_CHECK(p1 == NNG_REP0_SELF); - TEST_CHECK(p2 == NNG_REP0_PEER); - TEST_CHECK(strcmp(n1, NNG_REP0_SELF_NAME) == 0); - TEST_CHECK(strcmp(n2, NNG_REP0_PEER_NAME) == 0); + NUTS_PASS(nng_rep0_open_raw(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p1)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p2)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n1)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n2)); + NUTS_CLOSE(s); + NUTS_TRUE(p1 == NNG_REP0_SELF); + NUTS_TRUE(p2 == NNG_REP0_PEER); + NUTS_MATCH(n1, NNG_REP0_SELF_NAME); + NUTS_MATCH(n2, NNG_REP0_PEER_NAME); nng_strfree(n1); nng_strfree(n2); } @@ -44,10 +37,10 @@ test_xrep_raw(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_rep0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_rep0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } static void @@ -56,9 +49,9 @@ test_xrep_no_context(void) nng_socket s; nng_ctx ctx; - TEST_NNG_PASS(nng_rep0_open_raw(&s)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_rep0_open_raw(&s)); + NUTS_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); + NUTS_CLOSE(s); } static void @@ -68,24 +61,24 @@ test_xrep_poll_writeable(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_getopt_int(rep, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_get_int(rep, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // We are always writeable, even before connect. This is so that // back-pressure from a bad peer can't trash others. We assume // that peers won't send us requests faster than they can consume // the answers. If they do, they will lose their answers. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // Now it's writable. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -96,32 +89,32 @@ test_xrep_poll_readable(void) nng_socket rep; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_getopt_int(rep, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_socket_get_int(rep, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(req, rep); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(req, "abc"); - testutil_sleep(100); + NUTS_SEND(req, "abc"); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -130,28 +123,28 @@ test_xrep_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char *addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_rep0_open_raw(&s1)); - TEST_NNG_PASS(nng_rep0_open(&s2)); + NUTS_PASS(nng_rep0_open_raw(&s1)); + NUTS_PASS(nng_rep0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s2)); nng_stats_free(stats); } @@ -164,26 +157,26 @@ test_xrep_close_pipe_before_send(void) nng_aio * aio1; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_NNG_SEND_STR(req, "test"); + NUTS_MARRY(req, rep); + NUTS_SEND(req, "test"); nng_recv_aio(rep, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_CHECK((m = nng_aio_get_msg(aio1)) != NULL); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_TRUE((m = nng_aio_get_msg(aio1)) != NULL); p = nng_msg_get_pipe(m); - TEST_NNG_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); + NUTS_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_sendmsg(rep, m, 0)); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); nng_aio_free(aio1); } @@ -195,37 +188,37 @@ test_xrep_close_pipe_during_send(void) nng_pipe p; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 1)); - - TEST_NNG_PASS(testutil_marry(req, rep)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, (unsigned) 0x81000000u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 20)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_RECVBUF, 1)); + + NUTS_MARRY(req, rep); + + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) 0x81000000u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); p = nng_msg_get_pipe(m); nng_msg_free(m); for (int i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); - TEST_NNG_PASS( + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); + NUTS_PASS( nng_msg_header_append_u32(m, (unsigned) i | 0x80000000u)); // xrep does not exert back-pressure - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); + NUTS_PASS(nng_sendmsg(rep, m, 0)); } - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -235,27 +228,27 @@ test_xrep_close_during_recv(void) nng_socket req; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); for (unsigned i = 0; i < 100; i++) { int rv; - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); rv = nng_sendmsg(req, m, 0); if (rv == NNG_ETIMEDOUT) { nng_msg_free(m); break; } } - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -264,14 +257,14 @@ test_xrep_recv_aio_stopped(void) nng_socket rep; nng_aio * aio; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_stop(aio); nng_recv_aio(rep, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(rep)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(rep); nng_aio_free(aio); } @@ -282,21 +275,21 @@ test_xrep_send_no_header(void) nng_socket req; nng_msg * m; - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_sendmsg(rep, m, 0)); + NUTS_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -306,21 +299,21 @@ test_xrep_recv_garbage(void) nng_socket req; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + NUTS_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -332,29 +325,29 @@ test_xrep_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_setopt_int(rep, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(rep, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(rep, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(rep, opt, 1)); + NUTS_FAIL(nng_socket_set_int(rep, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(rep, opt, 3)); + NUTS_PASS(nng_socket_get_int(rep, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(rep, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(rep, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_CHECK(nng_setopt(rep, opt, "", 1) == NNG_EINVAL); + NUTS_TRUE(nng_socket_set(rep, opt, "", 1) == NNG_EINVAL); sz = 1; - TEST_CHECK(nng_getopt(rep, opt, &v, &sz) == NNG_EINVAL); - TEST_CHECK(nng_setopt_bool(rep, opt, true) == NNG_EBADTYPE); - TEST_CHECK(nng_getopt_bool(rep, opt, &b) == NNG_EBADTYPE); + NUTS_TRUE(nng_socket_get(rep, opt, &v, &sz) == NNG_EINVAL); + NUTS_TRUE(nng_socket_set_bool(rep, opt, true) == NNG_EBADTYPE); + NUTS_TRUE(nng_socket_get_bool(rep, opt, &b) == NNG_EBADTYPE); - TEST_CHECK(nng_close(rep) == 0); + NUTS_TRUE(nng_close(rep) == 0); } static void @@ -364,65 +357,65 @@ test_xrep_ttl_drop(void) nng_socket req; nng_msg * m; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_MAXTTL, 3)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_MAXTTL, 3)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // Send messages. Note that xrep implicitly adds a hop on receive. - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 2 hops - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000001u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS1", 6)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000002u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL2", 6)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS3", 6)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL4", 6)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 2 hops + NUTS_PASS(nng_msg_append_u32(m, 0x80000001u)); + NUTS_PASS(nng_msg_append(m, "PASS1", 6)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000002u)); + NUTS_PASS(nng_msg_append(m, "FAIL2", 6)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "PASS3", 6)); + NUTS_PASS(nng_sendmsg(req, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "FAIL4", 6)); + NUTS_PASS(nng_sendmsg(req, m, 0)); // So on receive we should see 80000001 and 80000003. - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 12); - TEST_CHECK(nng_msg_len(m) == 6); - TEST_CHECK(strcmp(nng_msg_body(m), "PASS1") == 0); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 12); + NUTS_TRUE(nng_msg_len(m) == 6); + NUTS_TRUE(strcmp(nng_msg_body(m), "PASS1") == 0); nng_msg_free(m); - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 16); // 3 hops + ID - TEST_CHECK(nng_msg_len(m) == 6); - TEST_CHECK(strcmp(nng_msg_body(m), "PASS3") == 0); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 16); // 3 hops + ID + NUTS_TRUE(nng_msg_len(m) == 6); + NUTS_TRUE(strcmp(nng_msg_body(m), "PASS3") == 0); nng_msg_free(m); - TEST_NNG_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); + NUTS_FAIL(nng_recvmsg(rep, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } -TEST_LIST = { +NUTS_TESTS = { { "xrep identity", test_xrep_identity }, { "xrep raw", test_xrep_raw }, { "xrep no context", test_xrep_no_context }, diff --git a/src/protocol/reqrep0/xreq_test.c b/src/protocol/reqrep0/xreq_test.c index 68a7c7f5e..8c850cbac 100644 --- a/src/protocol/reqrep0/xreq_test.c +++ b/src/protocol/reqrep0/xreq_test.c @@ -7,14 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include +#include static void test_xreq_identity(void) @@ -24,16 +17,16 @@ test_xreq_identity(void) char * n1; char * n2; - TEST_NNG_PASS(nng_req0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p1)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p2)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n1)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n2)); - TEST_NNG_PASS(nng_close(s)); - TEST_CHECK(p1 == NNG_REQ0_SELF); - TEST_CHECK(p2 == NNG_REQ0_PEER); - TEST_CHECK(strcmp(n1, NNG_REQ0_SELF_NAME) == 0); - TEST_CHECK(strcmp(n2, NNG_REQ0_PEER_NAME) == 0); + NUTS_PASS(nng_req0_open_raw(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p1)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p2)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n1)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n2)); + NUTS_CLOSE(s); + NUTS_TRUE(p1 == NNG_REQ0_SELF); + NUTS_TRUE(p2 == NNG_REQ0_PEER); + NUTS_MATCH(n1, NNG_REQ0_SELF_NAME); + NUTS_MATCH(n2, NNG_REQ0_PEER_NAME); nng_strfree(n1); nng_strfree(n2); } @@ -44,10 +37,10 @@ test_xreq_raw(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_req0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_req0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } static void @@ -56,9 +49,9 @@ test_xreq_no_context(void) nng_socket s; nng_ctx ctx; - TEST_NNG_PASS(nng_req0_open_raw(&s)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_req0_open_raw(&s)); + NUTS_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); + NUTS_CLOSE(s); } static void @@ -68,21 +61,21 @@ test_xreq_poll_writeable(void) nng_socket req; nng_socket rep; - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // We can't write until we have a connection. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); // Now it's writable. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -93,44 +86,44 @@ test_xreq_poll_readable(void) nng_socket rep; nng_msg * msg; - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_rep0_open(&rep)); - TEST_NNG_PASS(nng_getopt_int(req, NNG_OPT_RECVFD, &fd)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_rep0_open(&rep)); + NUTS_PASS(nng_socket_get_int(req, NNG_OPT_RECVFD, &fd)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_CHECK(fd >= 0); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(req, rep)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(req, rep); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); // Request ID - TEST_NNG_PASS(nng_msg_append_u32(msg, 0x80000000)); - TEST_NNG_PASS(nng_sendmsg(req, msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0x80000000)); + NUTS_PASS(nng_sendmsg(req, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &msg, 0)); - TEST_NNG_PASS(nng_sendmsg(rep, msg, 0)); + NUTS_PASS(nng_recvmsg(rep, &msg, 0)); + NUTS_PASS(nng_sendmsg(rep, msg, 0)); - testutil_sleep(100); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(req, &msg, 0)); + NUTS_PASS(nng_recvmsg(req, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -139,28 +132,28 @@ test_xreq_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_req0_open_raw(&s1)); - TEST_NNG_PASS(nng_req0_open(&s2)); + NUTS_PASS(nng_req0_open_raw(&s1)); + NUTS_PASS(nng_req0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -170,14 +163,14 @@ test_xreq_recv_aio_stopped(void) nng_socket req; nng_aio * aio; - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_stop(aio); nng_recv_aio(req, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(req)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(req); nng_aio_free(aio); } @@ -189,33 +182,33 @@ test_xreq_recv_garbage(void) nng_msg * m; uint32_t req_id; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(req, rep)); + NUTS_MARRY(req, rep); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000000)); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000000)); + NUTS_PASS(nng_sendmsg(req, m, 0)); - TEST_NNG_PASS(nng_recvmsg(rep, &m, 0)); + NUTS_PASS(nng_recvmsg(rep, &m, 0)); // The message will have a header that contains the 32-bit pipe ID, // followed by the 32-bit request ID. We will discard the request // ID before sending it out. - TEST_CHECK(nng_msg_header_len(m) == 8); - TEST_NNG_PASS(nng_msg_header_chop_u32(m, &req_id)); - TEST_CHECK(req_id == 0x80000000); + NUTS_TRUE(nng_msg_header_len(m) == 8); + NUTS_PASS(nng_msg_header_chop_u32(m, &req_id)); + NUTS_TRUE(req_id == 0x80000000); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(req, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(rep, m, 0)); + NUTS_FAIL(nng_recvmsg(req, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -227,37 +220,37 @@ test_xreq_recv_header(void) nng_pipe p1, p2; uint32_t id; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry_ex(req, rep, NULL, &p1, &p2)); + NUTS_MARRY_EX(req, rep, NULL, &p1, &p2); // Simulate a few hops. - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x2)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x1)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x80000123u)); - - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); - - TEST_NNG_PASS(nng_recvmsg(req, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 12); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x2); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x1); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x80000123u); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); + NUTS_PASS(nng_msg_header_append_u32(m, 0x2)); + NUTS_PASS(nng_msg_header_append_u32(m, 0x1)); + NUTS_PASS(nng_msg_header_append_u32(m, 0x80000123u)); + + NUTS_PASS(nng_sendmsg(rep, m, 0)); + + NUTS_PASS(nng_recvmsg(req, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 12); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x2); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x1); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x80000123u); nng_msg_free(m); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -269,26 +262,26 @@ test_xreq_close_during_recv(void) nng_pipe p1; nng_pipe p2; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry_ex(req, rep, NULL, &p1, &p2)); - TEST_CHECK(nng_pipe_id(p1) > 0); - TEST_CHECK(nng_pipe_id(p2) > 0); + NUTS_MARRY_EX(req, rep, NULL, &p1, &p2); + NUTS_TRUE(nng_pipe_id(p1) > 0); + NUTS_TRUE(nng_pipe_id(p2) > 0); for (unsigned i = 0; i < 20; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); - testutil_sleep(10); - TEST_NNG_PASS(nng_sendmsg(rep, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_SLEEP(10); + NUTS_PASS(nng_sendmsg(rep, m, 0)); } - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -300,27 +293,27 @@ test_xreq_close_pipe_during_send(void) nng_pipe p1; nng_pipe p2; - TEST_NNG_PASS(nng_rep0_open_raw(&rep)); - TEST_NNG_PASS(nng_req0_open_raw(&req)); - TEST_NNG_PASS(nng_setopt_ms(rep, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(req, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_rep0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&req)); + NUTS_PASS(nng_socket_set_ms(rep, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(req, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(rep, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(req, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry_ex(req, rep, NULL, &p1, &p2)); - TEST_CHECK(nng_pipe_id(p1) > 0); - TEST_CHECK(nng_pipe_id(p2) > 0); + NUTS_MARRY_EX(req, rep, NULL, &p1, &p2); + NUTS_TRUE(nng_pipe_id(p1) > 0); + NUTS_TRUE(nng_pipe_id(p2) > 0); for (unsigned i = 0; i < 20; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); - testutil_sleep(10); - TEST_NNG_PASS(nng_sendmsg(req, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_SLEEP(10); + NUTS_PASS(nng_sendmsg(req, m, 0)); } - TEST_NNG_PASS(nng_pipe_close(p1)); - TEST_NNG_PASS(nng_close(req)); - TEST_NNG_PASS(nng_close(rep)); + NUTS_PASS(nng_pipe_close(p1)); + NUTS_CLOSE(req); + NUTS_CLOSE(rep); } static void @@ -332,32 +325,32 @@ test_xreq_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_req0_open_raw(&rep)); + NUTS_PASS(nng_req0_open_raw(&rep)); - TEST_NNG_PASS(nng_setopt_int(rep, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(rep, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(rep, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(rep, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(rep, opt, 1)); + NUTS_FAIL(nng_socket_set_int(rep, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(rep, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(rep, opt, 3)); + NUTS_PASS(nng_socket_get_int(rep, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(rep, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(rep, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_CHECK(nng_setopt(rep, opt, "", 1) == NNG_EINVAL); + NUTS_TRUE(nng_socket_set(rep, opt, "", 1) == NNG_EINVAL); sz = 1; - TEST_CHECK(nng_getopt(rep, opt, &v, &sz) == NNG_EINVAL); - TEST_CHECK(nng_setopt_bool(rep, opt, true) == NNG_EBADTYPE); - TEST_CHECK(nng_getopt_bool(rep, opt, &b) == NNG_EBADTYPE); + NUTS_TRUE(nng_socket_get(rep, opt, &v, &sz) == NNG_EINVAL); + NUTS_TRUE(nng_socket_set_bool(rep, opt, true) == NNG_EBADTYPE); + NUTS_TRUE(nng_socket_get_bool(rep, opt, &b) == NNG_EBADTYPE); - TEST_CHECK(nng_close(rep) == 0); + NUTS_TRUE(nng_close(rep) == 0); } -TEST_LIST = { +NUTS_TESTS = { { "xreq identity", test_xreq_identity }, { "xreq raw", test_xreq_raw }, { "xreq no context", test_xreq_no_context }, diff --git a/src/protocol/survey0/respond_test.c b/src/protocol/survey0/respond_test.c index efda181ba..51844c76f 100644 --- a/src/protocol/survey0/respond_test.c +++ b/src/protocol/survey0/respond_test.c @@ -7,18 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include - -#ifndef NNI_PROTO -#define NNI_PROTO(x, y) (((x) << 4u) | (y)) -#endif +#include void test_resp_identity(void) @@ -27,18 +16,18 @@ test_resp_identity(void) int p; char * n; - TEST_CHECK(nng_respondent0_open(&s) == 0); - TEST_CHECK(nng_getopt_int(s, NNG_OPT_PROTO, &p) == 0); - TEST_CHECK(p == NNI_PROTO(6u, 3u)); - TEST_CHECK(nng_getopt_int(s, NNG_OPT_PEER, &p) == 0); - TEST_CHECK(p == NNI_PROTO(6u, 2u)); - TEST_CHECK(nng_getopt_string(s, NNG_OPT_PROTONAME, &n) == 0); - TEST_CHECK(strcmp(n, "respondent") == 0); + NUTS_PASS(nng_respondent0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NNG_RESPONDENT0_SELF); + NUTS_TRUE(nng_socket_get_int(s, NNG_OPT_PEER, &p) == 0); + NUTS_TRUE(p == NNG_RESPONDENT0_PEER); + NUTS_TRUE(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n) == 0); + NUTS_MATCH(n, NNG_RESPONDENT0_SELF_NAME); nng_strfree(n); - TEST_CHECK(nng_getopt_string(s, NNG_OPT_PEERNAME, &n) == 0); - TEST_CHECK(strcmp(n, "surveyor") == 0); + NUTS_TRUE(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n) == 0); + NUTS_MATCH(n, NNG_RESPONDENT0_PEER_NAME); nng_strfree(n); - TEST_CHECK(nng_close(s) == 0); + NUTS_CLOSE(s); } void @@ -47,11 +36,11 @@ test_resp_send_bad_state(void) nng_socket resp; nng_msg * msg = NULL; - TEST_CHECK(nng_respondent0_open(&resp) == 0); - TEST_CHECK(nng_msg_alloc(&msg, 0) == 0); - TEST_CHECK(nng_sendmsg(resp, msg, 0) == NNG_ESTATE); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_FAIL(nng_sendmsg(resp, msg, 0), NNG_ESTATE); nng_msg_free(msg); - TEST_CHECK(nng_close(resp) == 0); + NUTS_CLOSE(resp); } void @@ -61,33 +50,33 @@ test_resp_poll_writeable(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(resp, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(resp, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Not writable before connect. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Still not writable. - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // If we get a job, *then* we become writable - TEST_NNG_SEND_STR(surv, "abc"); - TEST_NNG_RECV_STR(resp, "abc"); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_SEND(surv, "abc"); + NUTS_RECV(resp, "abc"); + NUTS_TRUE(nuts_poll_fd(fd) == true); // And is no longer writable once we send a message - TEST_NNG_SEND_STR(resp, "def"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_SEND(resp, "def"); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after receiving it - TEST_NNG_RECV_STR(surv, "def"); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_RECV(surv, "def"); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void @@ -98,34 +87,34 @@ test_resp_poll_readable(void) nng_socket resp; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(resp, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(resp, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(surv, resp); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(surv, "abc"); - testutil_sleep(100); + NUTS_SEND(surv, "abc"); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(resp, &msg, 0)); + NUTS_PASS(nng_recvmsg(resp, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // TODO verify unsolicited response - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void @@ -135,14 +124,12 @@ test_resp_context_no_poll(void) nng_socket resp; nng_ctx ctx; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_ctx_open(&ctx, resp)); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_ctx_open(&ctx, resp)); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(resp); } void @@ -151,28 +138,28 @@ test_resp_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_respondent0_open(&s1)); - TEST_NNG_PASS(nng_respondent0_open(&s2)); + NUTS_PASS(nng_respondent0_open(&s1)); + NUTS_PASS(nng_respondent0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -183,17 +170,17 @@ test_resp_double_recv(void) nng_aio * aio1; nng_aio * aio2; - TEST_NNG_PASS(nng_respondent0_open(&s1)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_respondent0_open(&s1)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); nng_recv_aio(s1, aio1); nng_recv_aio(s1, aio2); nng_aio_wait(aio2); - TEST_NNG_FAIL(nng_aio_result(aio2), NNG_ESTATE); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_FAIL(nng_aio_result(aio1), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio2), NNG_ESTATE); + NUTS_CLOSE(s1); + NUTS_FAIL(nng_aio_result(aio1), NNG_ECLOSED); nng_aio_free(aio1); nng_aio_free(aio2); } @@ -207,26 +194,26 @@ test_resp_close_pipe_before_send(void) nng_aio * aio1; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_NNG_SEND_STR(surv, "test"); + NUTS_MARRY(surv, resp); + NUTS_SEND(surv, "test"); nng_recv_aio(resp, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_CHECK((m = nng_aio_get_msg(aio1)) != NULL); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_TRUE((m = nng_aio_get_msg(aio1)) != NULL); p = nng_msg_get_pipe(m); - TEST_NNG_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); + NUTS_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_sendmsg(resp, m, 0)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); nng_aio_free(aio1); } @@ -238,25 +225,24 @@ test_resp_close_pipe_during_send(void) nng_pipe p = NNG_PIPE_INITIALIZER; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 20)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); for (int i = 0; i < 100; i++) { int rv; - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); p = nng_msg_get_pipe(m); rv = nng_sendmsg(resp, m, 0); if (rv == NNG_ETIMEDOUT) { @@ -264,12 +250,12 @@ test_resp_close_pipe_during_send(void) nng_msg_free(m); break; } - TEST_NNG_PASS(rv); + NUTS_PASS(rv); } - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void @@ -279,16 +265,16 @@ test_resp_ctx_recv_aio_stopped(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_ctx_open(&ctx, resp)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx, resp)); nng_aio_stop(aio); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(resp); nng_aio_free(aio); } @@ -303,54 +289,53 @@ test_resp_close_pipe_context_send(void) nng_aio * aio[10]; int i; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); for (i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx[i], resp)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); } - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); for (i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); nng_ctx_recv(ctx[i], aio[i]); } for (i = 0; i < 10; i++) { nng_aio_wait(aio[i]); - TEST_NNG_PASS(nng_aio_result(aio[i])); - TEST_CHECK((m = nng_aio_get_msg(aio[i])) != NULL); + NUTS_PASS(nng_aio_result(aio[i])); + NUTS_TRUE((m = nng_aio_get_msg(aio[i])) != NULL); p = nng_msg_get_pipe(m); nng_aio_set_msg(aio[i], m); nng_ctx_send(ctx[i], aio[i]); } // Note that SURVEYOR socket is not reading the results. - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); for (i = 0; i < 10; i++) { int rv; nng_aio_wait(aio[i]); rv = nng_aio_result(aio[i]); if (rv != 0) { - TEST_NNG_FAIL(rv, NNG_ECLOSED); + NUTS_FAIL(rv, NNG_ECLOSED); nng_msg_free(nng_aio_get_msg(aio[i])); } nng_aio_free(aio[i]); - TEST_NNG_PASS(nng_ctx_close(ctx[i])); + NUTS_PASS(nng_ctx_close(ctx[i])); } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void @@ -363,33 +348,32 @@ test_resp_close_context_send(void) nng_aio * aio[10]; int i; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 1)); + NUTS_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); for (i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_ctx_open(&ctx[i], resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); + NUTS_PASS(nng_ctx_open(&ctx[i], resp)); + NUTS_PASS(nng_aio_alloc(&aio[i], NULL, NULL)); } - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); for (i = 0; i < 10; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS( - nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) i | 0x80000000u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); nng_ctx_recv(ctx[i], aio[i]); } for (i = 0; i < 10; i++) { nng_aio_wait(aio[i]); - TEST_NNG_PASS(nng_aio_result(aio[i])); - TEST_CHECK((m = nng_aio_get_msg(aio[i])) != NULL); + NUTS_PASS(nng_aio_result(aio[i])); + NUTS_TRUE((m = nng_aio_get_msg(aio[i])) != NULL); nng_aio_set_msg(aio[i], m); nng_ctx_send(ctx[i], aio[i]); } @@ -397,17 +381,17 @@ test_resp_close_context_send(void) // Note that REQ socket is not reading the results. for (i = 0; i < 10; i++) { int rv; - TEST_NNG_PASS(nng_ctx_close(ctx[i])); + NUTS_PASS(nng_ctx_close(ctx[i])); nng_aio_wait(aio[i]); rv = nng_aio_result(aio[i]); if (rv != 0) { - TEST_NNG_FAIL(rv, NNG_ECLOSED); + NUTS_FAIL(rv, NNG_ECLOSED); nng_msg_free(nng_aio_get_msg(aio[i])); } nng_aio_free(aio[i]); } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -417,16 +401,16 @@ test_resp_ctx_recv_nonblock(void) nng_ctx ctx; nng_aio * aio; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_ctx_open(&ctx, resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_ctx_open(&ctx, resp)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(resp)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(resp); nng_aio_free(aio); } @@ -439,19 +423,19 @@ test_resp_ctx_send_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_ctx_open(&ctx, resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_ctx_open(&ctx, resp)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_MARRY(surv, resp); - TEST_NNG_SEND_STR(surv, "SEND"); + NUTS_SEND(surv, "SEND"); nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); // message carries over msg = nng_aio_get_msg(aio); nng_aio_set_msg(aio, msg); @@ -459,9 +443,9 @@ test_resp_ctx_send_nonblock(void) nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); nng_aio_free(aio); nng_msg_free(msg); } @@ -473,21 +457,21 @@ test_resp_recv_garbage(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + NUTS_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -499,29 +483,29 @@ test_resp_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_setopt_int(resp, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(resp, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(resp, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_setopt_int(resp, opt, 1)); + NUTS_FAIL(nng_setopt_int(resp, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_setopt_int(resp, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_setopt_int(resp, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_setopt_int(resp, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_setopt_int(resp, opt, 3)); + NUTS_PASS(nng_socket_get_int(resp, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(resp, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(resp, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(resp, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_setopt(resp, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(resp, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(resp, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(resp, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(resp, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_setopt_bool(resp, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(resp, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(resp); } static void @@ -531,52 +515,52 @@ test_resp_ttl_drop(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_MAXTTL, 3)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_setopt_int(resp, NNG_OPT_MAXTTL, 3)); + NUTS_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Send messages. Note that xrep implicitly adds a hop on receive. - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 2 hops - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000001u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS1", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000002u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL2", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS3", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL4", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_RECV_STR(resp, "PASS1"); - TEST_NNG_RECV_STR(resp, "PASS3"); - - TEST_NNG_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); - - TEST_NNG_PASS(nng_close(resp)); - TEST_NNG_PASS(nng_close(surv)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 2 hops + NUTS_PASS(nng_msg_append_u32(m, 0x80000001u)); + NUTS_PASS(nng_msg_append(m, "PASS1", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000002u)); + NUTS_PASS(nng_msg_append(m, "FAIL2", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "PASS3", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "FAIL4", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_RECV(resp, "PASS1"); + NUTS_RECV(resp, "PASS3"); + + NUTS_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); + + NUTS_CLOSE(resp); + NUTS_CLOSE(surv); } TEST_LIST = { @@ -590,7 +574,8 @@ TEST_LIST = { { "respond close pipe before send", test_resp_close_pipe_before_send }, { "respond close pipe during send", test_resp_close_pipe_during_send }, { "respond recv aio ctx stopped", test_resp_ctx_recv_aio_stopped }, - { "respond close pipe context send", test_resp_close_pipe_context_send }, + { "respond close pipe context send", + test_resp_close_pipe_context_send }, { "respond close context send", test_resp_close_context_send }, { "respond context send nonblock", test_resp_ctx_send_nonblock }, { "respond context recv nonblock", test_resp_ctx_recv_nonblock }, diff --git a/src/protocol/survey0/survey_test.c b/src/protocol/survey0/survey_test.c index 65395eee6..95d27adfd 100644 --- a/src/protocol/survey0/survey_test.c +++ b/src/protocol/survey0/survey_test.c @@ -8,14 +8,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include +#include static void test_surv_identity(void) @@ -24,18 +17,18 @@ test_surv_identity(void) int p; char * n; - TEST_NNG_PASS(nng_surveyor0_open(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p)); - TEST_CHECK(p == NNG_SURVEYOR0_SELF); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p)); - TEST_CHECK(p == NNG_SURVEYOR0_PEER); // 49 - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n)); - TEST_CHECK(strcmp(n, NNG_SURVEYOR0_SELF_NAME) == 0); + NUTS_PASS(nng_surveyor0_open(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NNG_SURVEYOR0_SELF); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NNG_SURVEYOR0_PEER); // 49 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, NNG_SURVEYOR0_SELF_NAME); nng_strfree(n); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n)); - TEST_CHECK(strcmp(n, NNG_SURVEYOR0_PEER_NAME) == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, NNG_SURVEYOR0_PEER_NAME); nng_strfree(n); - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } static void @@ -47,31 +40,31 @@ test_surv_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_setopt_int(surv, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(surv, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(surv, opt, -1), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(surv, opt, 1)); + NUTS_FAIL(nng_socket_set_int(surv, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(surv, opt, -1), NNG_EINVAL); // This test will fail if the NNI_MAX_MAX_TTL is changed from the // builtin default of 15. - TEST_NNG_FAIL(nng_setopt_int(surv, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(surv, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(surv, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(surv, opt, &v)); - TEST_CHECK(v == 3); + NUTS_FAIL(nng_socket_set_int(surv, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(surv, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(surv, opt, 3)); + NUTS_PASS(nng_socket_get_int(surv, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(surv, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(surv, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_NNG_FAIL(nng_setopt(surv, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set(surv, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_NNG_FAIL(nng_getopt(surv, opt, &v, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(surv, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(surv, opt, &b), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(surv, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(surv, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(surv, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_close(surv)); + NUTS_CLOSE(surv); } static void @@ -83,17 +76,17 @@ test_surv_survey_time_option(void) size_t sz = sizeof(b); const char * opt = NNG_OPT_SURVEYOR_SURVEYTIME; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_setopt_ms(surv, opt, 10)); - TEST_NNG_FAIL(nng_setopt(surv, opt, "", 1), NNG_EINVAL); - TEST_NNG_FAIL(nng_getopt(surv, opt, &b, &sz), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_bool(surv, opt, true), NNG_EBADTYPE); - TEST_NNG_FAIL(nng_getopt_bool(surv, opt, &b), NNG_EBADTYPE); + NUTS_PASS(nng_socket_set_ms(surv, opt, 10)); + NUTS_FAIL(nng_socket_set(surv, opt, "", 1), NNG_EINVAL); + NUTS_FAIL(nng_socket_get(surv, opt, &b, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(surv, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(surv, opt, &b), NNG_EBADTYPE); - TEST_NNG_PASS(nng_getopt_ms(surv, opt, &d)); - TEST_CHECK(d == 10); - TEST_NNG_PASS(nng_close(surv)); + NUTS_PASS(nng_socket_get_ms(surv, opt, &d)); + NUTS_TRUE(d == 10); + NUTS_CLOSE(surv); } void @@ -102,10 +95,10 @@ test_surv_recv_bad_state(void) nng_socket surv; nng_msg * msg = NULL; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_FAIL(nng_recvmsg(surv, &msg, 0), NNG_ESTATE); - TEST_CHECK(msg == NULL); - TEST_NNG_PASS(nng_close(surv)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_FAIL(nng_recvmsg(surv, &msg, 0), NNG_ESTATE); + NUTS_TRUE(msg == NULL); + NUTS_CLOSE(surv); } static void @@ -116,31 +109,31 @@ test_surv_recv_garbage(void) nng_msg * m; uint32_t surv_id; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); // The message will have a header that contains the 32-bit pipe ID, // followed by the 32-bit request ID. We will discard the request // ID before sending it out. - TEST_CHECK(nng_msg_header_len(m) == 8); - TEST_NNG_PASS(nng_msg_header_chop_u32(m, &surv_id)); + NUTS_TRUE(nng_msg_header_len(m) == 8); + NUTS_PASS(nng_msg_header_chop_u32(m, &surv_id)); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(surv, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(resp, m, 0)); + NUTS_FAIL(nng_recvmsg(surv, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } #define SECOND 1000 @@ -150,188 +143,138 @@ test_surv_resp_exchange(void) { nng_socket surv; nng_socket resp; - nng_msg * msg = NULL; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, SECOND)); - - TEST_NNG_PASS(testutil_marry(resp, surv)); - - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_msg_append(msg, "ping", 5)); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "ping") == 0); - TEST_NNG_PASS(nng_sendmsg(surv, msg, 0)); - msg = NULL; - TEST_NNG_PASS(nng_recvmsg(resp, &msg, 0)); - TEST_CHECK(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "ping") == 0); - nng_msg_trim(msg, 5); - TEST_NNG_PASS(nng_msg_append(msg, "pong", 5)); - TEST_NNG_PASS(nng_sendmsg(resp, msg, 0)); - msg = NULL; - TEST_NNG_PASS(nng_recvmsg(surv, &msg, 0)); - TEST_CHECK(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_CHECK(strcmp(nng_msg_body(msg), "pong") == 0); - nng_msg_free(msg); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, SECOND)); + + NUTS_MARRY(resp, surv); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_SEND(surv, "ping"); + NUTS_RECV(resp, "ping"); + NUTS_SEND(resp, "pong"); + NUTS_RECV(surv, "pong"); + + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void test_surv_cancel(void) { - nng_msg * abc; - nng_msg * def; - nng_msg * cmd; nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, SECOND)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 16)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_msg_alloc(&abc, 0)); - TEST_NNG_PASS(nng_msg_append(abc, "abc", 4)); - TEST_NNG_PASS(nng_msg_alloc(&def, 0)); - TEST_NNG_PASS(nng_msg_append(def, "def", 4)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, SECOND)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_SENDBUF, 16)); - TEST_NNG_PASS(testutil_marry(resp, surv)); + NUTS_MARRY(resp, surv); // Send req #1 (abc). - TEST_CHECK(nng_sendmsg(surv, abc, 0) == 0); + NUTS_SEND(surv, "abc"); // Sleep a bit. This is so that we ensure that our request gets // to the far side. (If we cancel too fast, then our outgoing send // will be canceled before it gets to the peer.) - testutil_sleep(100); + NUTS_SLEEP(100); // Send the next next request ("def"). Note that // the RESP side server will have already buffered the receive // request, and should simply be waiting for us to reply to abc. - TEST_NNG_PASS(nng_sendmsg(surv, def, 0)); + NUTS_SEND(surv, "def"); // Receive the first request (should be abc) on the REP server. - TEST_NNG_PASS(nng_recvmsg(resp, &cmd, 0)); - TEST_ASSERT(cmd != NULL); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "abc") == 0); + NUTS_RECV(resp, "abc"); // RESP sends the reply to first command. This will be discarded // by the SURV socket. - TEST_NNG_PASS(nng_sendmsg(resp, cmd, 0)); + NUTS_SEND(resp, "abc"); // Now get the next command from the REP; should be "def". - TEST_NNG_PASS(nng_recvmsg(resp, &cmd, 0)); - TEST_ASSERT(cmd != NULL); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - TEST_MSG("Received body was %s", nng_msg_body(cmd)); + NUTS_RECV(resp, "def"); // And send it back to REQ. - TEST_NNG_PASS(nng_sendmsg(resp, cmd, 0)); + NUTS_SEND(resp, "def"); // Try a req command. This should give back "def" - TEST_NNG_PASS(nng_recvmsg(surv, &cmd, 0)); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - nng_msg_free(cmd); + NUTS_RECV(surv, "def"); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void test_surv_cancel_abort_recv(void) { - - nng_msg * abc; - nng_msg * def; - nng_msg * cmd; nng_aio * aio; nng_duration time = SECOND * 10; // 10s (kind of never) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, time)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 16)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, time)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_SENDBUF, 16)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 5 * SECOND)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 5 * SECOND)); - TEST_NNG_PASS(nng_msg_alloc(&abc, 0)); - TEST_NNG_PASS(nng_msg_append(abc, "abc", 4)); - TEST_NNG_PASS(nng_msg_alloc(&def, 0)); - TEST_NNG_PASS(nng_msg_append(def, "def", 4)); - - TEST_NNG_PASS(testutil_marry(resp, surv)); + NUTS_MARRY(resp, surv); // Send survey #1 (abc). - TEST_NNG_PASS(nng_sendmsg(surv, abc, 0)); + NUTS_SEND(surv, "abc"); // Wait for it to get ot the other side. - testutil_sleep(100); + NUTS_SLEEP(100); nng_aio_set_timeout(aio, 5 * SECOND); nng_recv_aio(surv, aio); // Give time for this recv to post properly. - testutil_sleep(100); + NUTS_SLEEP(100); // Send the next next request ("def"). Note that // the respondent side server will have already buffered the receive // request, and should simply be waiting for us to reply to // abc. - TEST_NNG_PASS(nng_sendmsg(surv, def, 0)); + NUTS_SEND(surv, "def"); // Our pending I/O should have been canceled. nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); // Receive the first request (should be abc) on the respondent. - TEST_NNG_PASS(nng_recvmsg(resp, &cmd, 0)); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "abc") == 0); + NUTS_RECV(resp, "abc"); // Respondent sends the reply to first survey. This will be // discarded by the SURV socket. - TEST_CHECK(nng_sendmsg(resp, cmd, 0) == 0); + NUTS_SEND(resp, "abc"); // Now get the next survey from the RESP; should be "def". - TEST_NNG_PASS(nng_recvmsg(resp, &cmd, 0)); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); + NUTS_RECV(resp, "def"); // And send it back to REQ. - TEST_NNG_PASS(nng_sendmsg(resp, cmd, 0)); + NUTS_SEND(resp, "def"); // Try a req command. This should give back "def" - TEST_NNG_PASS(nng_recvmsg(surv, &cmd, 0)); - TEST_CHECK(nng_msg_len(cmd) == 4); - TEST_CHECK(strcmp(nng_msg_body(cmd), "def") == 0); - nng_msg_free(cmd); + NUTS_RECV(surv, "def"); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -340,25 +283,25 @@ test_surv_cancel_post_recv(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); - - TEST_NNG_SEND_STR(surv, "ONE"); - TEST_NNG_RECV_STR(resp, "ONE"); - TEST_NNG_SEND_STR(resp, "one"); - testutil_sleep(100); // Make sure reply arrives! - TEST_NNG_SEND_STR(surv, "TWO"); - TEST_NNG_RECV_STR(resp, "TWO"); - TEST_NNG_SEND_STR(resp, "two"); - TEST_NNG_RECV_STR(surv, "two"); - - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_MARRY(surv, resp); + + NUTS_SEND(surv, "ONE"); + NUTS_RECV(resp, "ONE"); + NUTS_SEND(resp, "one"); + NUTS_SLEEP(100); // Make sure reply arrives! + NUTS_SEND(surv, "TWO"); + NUTS_RECV(resp, "TWO"); + NUTS_SEND(resp, "two"); + NUTS_RECV(surv, "two"); + + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -368,21 +311,21 @@ test_surv_poll_writeable(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(surv, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(surv, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Survey is broadcast, so we can always write. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Now it's writable. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } void @@ -393,39 +336,39 @@ test_surv_poll_readable(void) nng_socket resp; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(surv, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(surv, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(surv, resp); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(nng_msg_append(msg, "xyz", 3)); - TEST_NNG_PASS(nng_sendmsg(surv, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &msg, 0)); // recv on rep - TEST_NNG_PASS(nng_sendmsg(resp, msg, 0)); // echo it back - testutil_sleep(200); // give time for message to arrive + NUTS_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_append(msg, "xyz", 3)); + NUTS_PASS(nng_sendmsg(surv, msg, 0)); + NUTS_PASS(nng_recvmsg(resp, &msg, 0)); // recv on rep + NUTS_PASS(nng_sendmsg(resp, msg, 0)); // echo it back + NUTS_SLEEP(200); // give time for message to arrive - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(surv, &msg, 0)); + NUTS_PASS(nng_recvmsg(surv, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // TODO verify unsolicited response - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -435,14 +378,12 @@ test_surv_ctx_no_poll(void) nng_socket surv; nng_ctx ctx; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_ctx_open(&ctx, surv)); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); - TEST_NNG_FAIL( - nng_ctx_getopt_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); - TEST_NNG_PASS(nng_ctx_close(ctx)); - TEST_NNG_PASS(nng_close(surv)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_ctx_open(&ctx, surv)); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_SENDFD, &fd), NNG_ENOTSUP); + NUTS_FAIL(nng_ctx_get_int(ctx, NNG_OPT_RECVFD, &fd), NNG_ENOTSUP); + NUTS_PASS(nng_ctx_close(ctx)); + NUTS_CLOSE(surv); } static void @@ -454,25 +395,25 @@ test_surv_ctx_recv_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_ctx_open(&ctx, surv)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_ctx_open(&ctx, surv)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); nng_aio_set_msg(aio, msg); nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_recv(ctx, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_FAIL(nng_aio_result(aio), NNG_ETIMEDOUT); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); nng_aio_free(aio); } @@ -484,17 +425,17 @@ test_surv_ctx_send_nonblock(void) nng_aio * aio; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_ctx_open(&ctx, surv)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_ctx_open(&ctx, surv)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); nng_aio_set_msg(aio, msg); nng_aio_set_timeout(aio, 0); // Instant timeout nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); // We never block - TEST_NNG_PASS(nng_close(surv)); + NUTS_PASS(nng_aio_result(aio)); // We never block + NUTS_CLOSE(surv); nng_aio_free(aio); } @@ -504,16 +445,16 @@ test_surv_send_best_effort(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_MARRY(surv, resp); for (int i = 0; i < 200; i++) { - TEST_NNG_SEND_STR(surv, "junk"); + NUTS_SEND(surv, "junk"); } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -524,23 +465,23 @@ test_surv_survey_timeout(void) char buf[16]; size_t sz; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, 50)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, 50)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_SEND_STR(surv, "hello"); - TEST_NNG_RECV_STR(resp, "hello"); + NUTS_SEND(surv, "hello"); + NUTS_RECV(resp, "hello"); sz = sizeof(buf); - TEST_NNG_FAIL(nng_recv(surv, buf, &sz, 0), NNG_ETIMEDOUT); - TEST_NNG_SEND_STR(resp, "world"); - TEST_NNG_FAIL(nng_recv(surv, buf, &sz, 0), NNG_ESTATE); + NUTS_FAIL(nng_recv(surv, buf, &sz, 0), NNG_ETIMEDOUT); + NUTS_SEND(resp, "world"); + NUTS_FAIL(nng_recv(surv, buf, &sz, 0), NNG_ESTATE); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -552,23 +493,23 @@ test_surv_ctx_recv_close_socket(void) nng_aio * aio; nng_msg * m; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_ctx_open(&ctx, surv)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_ctx_open(&ctx, surv)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_MARRY(surv, resp); + NUTS_PASS(nng_msg_alloc(&m, 0)); nng_aio_set_msg(aio, m); nng_ctx_send(ctx, aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); nng_ctx_recv(ctx, aio); nng_close(surv); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECLOSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECLOSED); nng_aio_free(aio); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(resp); } static void @@ -581,52 +522,52 @@ test_surv_context_multi(void) nng_msg * m; int cnt = sizeof(c) / sizeof(c[0]); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, 200)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_MARRY(surv, resp); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SURVEYOR_SURVEYTIME, 200)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); for (int i = 0; i < cnt; i++) { - TEST_NNG_PASS(nng_ctx_open(&c[i], surv)); + NUTS_PASS(nng_ctx_open(&c[i], surv)); } for (int i = 0; i < cnt; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, i)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, i)); nng_aio_set_msg(aio, m); nng_ctx_send(c[i], aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); } for (int i = 0; i < cnt; i++) { - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_PASS(nng_sendmsg(resp, m, 0)); } for (int i = cnt - 1; i >= 0; i--) { uint32_t x; nng_ctx_recv(c[i], aio); nng_aio_wait(aio); - TEST_NNG_PASS(nng_aio_result(aio)); + NUTS_PASS(nng_aio_result(aio)); m = nng_aio_get_msg(aio); TEST_ASSERT(m != NULL); - TEST_NNG_PASS(nng_msg_trim_u32(m, &x)); - TEST_CHECK(x == (uint32_t)i); + NUTS_PASS(nng_msg_trim_u32(m, &x)); + NUTS_TRUE(x == (uint32_t) i); nng_msg_free(m); } for (int i = 0; i < cnt; i++) { nng_ctx_recv(c[i], aio); nng_aio_wait(aio); - TEST_CHECK(nng_aio_result(aio) != 0); + NUTS_TRUE(nng_aio_result(aio) != 0); } for (int i = 0; i < cnt; i++) { nng_ctx_close(c[i]); } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); nng_aio_free(aio); } @@ -636,28 +577,27 @@ test_surv_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; - - testutil_scratch_addr("inproc", sizeof(addr), addr); + char * addr; - TEST_NNG_PASS(nng_surveyor0_open(&s1)); - TEST_NNG_PASS(nng_surveyor0_open(&s2)); + NUTS_ADDR(addr, "inproc"); + NUTS_PASS(nng_surveyor0_open(&s1)); + NUTS_PASS(nng_surveyor0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s2)); nng_stats_free(stats); } diff --git a/src/protocol/survey0/xrespond_test.c b/src/protocol/survey0/xrespond_test.c index 342c8a942..ec5e99a36 100644 --- a/src/protocol/survey0/xrespond_test.c +++ b/src/protocol/survey0/xrespond_test.c @@ -7,14 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include +#include static void test_xresp_identity(void) @@ -24,16 +17,16 @@ test_xresp_identity(void) char * n1; char * n2; - TEST_NNG_PASS(nng_respondent0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PROTO, &p1)); - TEST_NNG_PASS(nng_getopt_int(s, NNG_OPT_PEER, &p2)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PROTONAME, &n1)); - TEST_NNG_PASS(nng_getopt_string(s, NNG_OPT_PEERNAME, &n2)); - TEST_NNG_PASS(nng_close(s)); - TEST_CHECK(p1 == NNG_RESPONDENT0_SELF); - TEST_CHECK(p2 == NNG_RESPONDENT0_PEER); - TEST_CHECK(strcmp(n1, NNG_RESPONDENT0_SELF_NAME) == 0); - TEST_CHECK(strcmp(n2, NNG_RESPONDENT0_PEER_NAME) == 0); + NUTS_PASS(nng_respondent0_open_raw(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p1)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p2)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n1)); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n2)); + NUTS_CLOSE(s); + NUTS_TRUE(p1 == NNG_RESPONDENT0_SELF); + NUTS_TRUE(p2 == NNG_RESPONDENT0_PEER); + NUTS_MATCH(n1, NNG_RESPONDENT0_SELF_NAME); + NUTS_MATCH(n2, NNG_RESPONDENT0_PEER_NAME); nng_strfree(n1); nng_strfree(n2); } @@ -44,10 +37,10 @@ test_xresp_raw(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_respondent0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_respondent0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } static void @@ -56,9 +49,9 @@ test_xresp_no_context(void) nng_socket s; nng_ctx ctx; - TEST_NNG_PASS(nng_respondent0_open_raw(&s)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_respondent0_open_raw(&s)); + NUTS_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); + NUTS_CLOSE(s); } static void @@ -68,24 +61,24 @@ test_xresp_poll_writeable(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_getopt_int(resp, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_socket_get_int(resp, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // We are always writeable, even before connect. This is so that // back-pressure from a bad peer can't trash others. We assume // that peers won't send us requests faster than they can consume // the answers. If they do, they will lose their answers. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Now it's writable. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -96,32 +89,32 @@ test_xresp_poll_readable(void) nng_socket resp; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_getopt_int(resp, NNG_OPT_RECVFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_socket_get_int(resp, NNG_OPT_RECVFD, &fd)); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(surv, resp); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_SEND_STR(surv, "abc"); - testutil_sleep(100); + NUTS_SEND(surv, "abc"); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) == true); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(resp, &msg, 0)); + NUTS_PASS(nng_recvmsg(resp, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -130,28 +123,28 @@ test_xresp_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char * addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_respondent0_open_raw(&s1)); - TEST_NNG_PASS(nng_respondent0_open(&s2)); + NUTS_PASS(nng_respondent0_open_raw(&s1)); + NUTS_PASS(nng_respondent0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -164,26 +157,26 @@ test_xresp_close_pipe_before_send(void) nng_aio * aio1; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open(&surv)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_NNG_SEND_STR(surv, "test"); + NUTS_MARRY(surv, resp); + NUTS_SEND(surv, "test"); nng_recv_aio(resp, aio1); nng_aio_wait(aio1); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_CHECK((m = nng_aio_get_msg(aio1)) != NULL); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_TRUE((m = nng_aio_get_msg(aio1)) != NULL); p = nng_msg_get_pipe(m); - TEST_NNG_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); + NUTS_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_sendmsg(resp, m, 0)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); nng_aio_free(aio1); } @@ -195,37 +188,37 @@ test_xresp_close_pipe_during_send(void) nng_pipe p; nng_msg * m; - TEST_NNG_PASS(nng_respondent_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); - - TEST_NNG_PASS(testutil_marry(surv, resp)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, (unsigned) 0x81000000u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_PASS(nng_respondent_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_RECVBUF, 20)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_RECVBUF, 1)); + + NUTS_MARRY(surv, resp); + + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, (unsigned) 0x81000000u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); p = nng_msg_get_pipe(m); nng_msg_free(m); for (int i = 0; i < 100; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); - TEST_NNG_PASS( + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); + NUTS_PASS( nng_msg_header_append_u32(m, (unsigned) i | 0x80000000u)); // protocol does not exert back-pressure - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); + NUTS_PASS(nng_sendmsg(resp, m, 0)); } - TEST_NNG_PASS(nng_pipe_close(p)); + NUTS_PASS(nng_pipe_close(p)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -235,27 +228,27 @@ test_xresp_close_during_recv(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); for (unsigned i = 0; i < 100; i++) { int rv; - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); rv = nng_sendmsg(surv, m, 0); if (rv == NNG_ETIMEDOUT) { nng_msg_free(m); break; } } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -264,14 +257,14 @@ test_xresp_recv_aio_stopped(void) nng_socket resp; nng_aio * aio; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_stop(aio); nng_recv_aio(resp, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(resp)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(resp); nng_aio_free(aio); } @@ -282,21 +275,21 @@ test_xresp_send_no_header(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_sendmsg(resp, m, 0)); + NUTS_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -306,21 +299,21 @@ test_xresp_recv_garbage(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + NUTS_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -332,29 +325,29 @@ test_xresp_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_setopt_int(resp, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(resp, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(resp, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(resp, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(resp, opt, 1)); + NUTS_FAIL(nng_socket_set_int(resp, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(resp, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(resp, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(resp, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(resp, opt, 3)); + NUTS_PASS(nng_socket_get_int(resp, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(resp, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(resp, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_CHECK(nng_setopt(resp, opt, "", 1) == NNG_EINVAL); + NUTS_FAIL(nng_socket_set(resp, opt, "", 1), NNG_EINVAL); sz = 1; - TEST_CHECK(nng_getopt(resp, opt, &v, &sz) == NNG_EINVAL); - TEST_CHECK(nng_setopt_bool(resp, opt, true) == NNG_EBADTYPE); - TEST_CHECK(nng_getopt_bool(resp, opt, &b) == NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(resp, opt, &v, &sz), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(resp, opt, true), NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(resp, opt, &b), NNG_EBADTYPE); - TEST_CHECK(nng_close(resp) == 0); + NUTS_CLOSE(resp); } static void @@ -364,65 +357,65 @@ test_xresp_ttl_drop(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_MAXTTL, 3)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 200)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_MAXTTL, 3)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 200)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Send messages. Note that xresp implicitly adds a hop on receive. - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 2 hops - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000001u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS1", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000002u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL2", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "PASS3", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! - TEST_NNG_PASS(nng_msg_append_u32(m, 2u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 3u)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000003u)); - TEST_NNG_PASS(nng_msg_append(m, "FAIL4", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 2 hops + NUTS_PASS(nng_msg_append_u32(m, 0x80000001u)); + NUTS_PASS(nng_msg_append(m, "PASS1", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000002u)); + NUTS_PASS(nng_msg_append(m, "FAIL2", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 3 hops - passes + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "PASS3", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 1u)); // 4 hops -- discard! + NUTS_PASS(nng_msg_append_u32(m, 2u)); + NUTS_PASS(nng_msg_append_u32(m, 3u)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000003u)); + NUTS_PASS(nng_msg_append(m, "FAIL4", 6)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); // So on receive we should see 80000001 and 80000003. - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 12); - TEST_CHECK(nng_msg_len(m) == 6); - TEST_CHECK(strcmp(nng_msg_body(m), "PASS1") == 0); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 12); + NUTS_TRUE(nng_msg_len(m) == 6); + NUTS_MATCH(nng_msg_body(m), "PASS1"); nng_msg_free(m); - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 16); // 3 hops + ID - TEST_CHECK(nng_msg_len(m) == 6); - TEST_CHECK(strcmp(nng_msg_body(m), "PASS3") == 0); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 16); // 3 hops + ID + NUTS_TRUE(nng_msg_len(m) == 6); + NUTS_MATCH(nng_msg_body(m), "PASS3"); nng_msg_free(m); - TEST_NNG_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); + NUTS_FAIL(nng_recvmsg(resp, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } -TEST_LIST = { +NUTS_TESTS = { { "xrespond identity", test_xresp_identity }, { "xrespond raw", test_xresp_raw }, { "xrespond no context", test_xresp_no_context }, diff --git a/src/protocol/survey0/xsurvey_test.c b/src/protocol/survey0/xsurvey_test.c index ca7a2dd66..f8e9d4010 100644 --- a/src/protocol/survey0/xsurvey_test.c +++ b/src/protocol/survey0/xsurvey_test.c @@ -7,18 +7,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include -#include -#include - -#include -#include - -#ifndef NNI_PROTO -#define NNI_PROTO(x, y) (((x) << 4u) | (y)) -#endif +#include static void test_xsurveyor_identity(void) @@ -27,18 +16,18 @@ test_xsurveyor_identity(void) int p; char * n; - TEST_CHECK(nng_surveyor0_open_raw(&s) == 0); - TEST_CHECK(nng_getopt_int(s, NNG_OPT_PROTO, &p) == 0); - TEST_CHECK(p == NNI_PROTO(6u, 2u)); // 0x62 - TEST_CHECK(nng_getopt_int(s, NNG_OPT_PEER, &p) == 0); - TEST_CHECK(p == NNI_PROTO(6u, 3u)); // 0x63 - TEST_CHECK(nng_getopt_string(s, NNG_OPT_PROTONAME, &n) == 0); - TEST_CHECK(strcmp(n, "surveyor") == 0); + NUTS_PASS(nng_surveyor0_open_raw(&s)); + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PROTO, &p)); + NUTS_TRUE(p == NNG_SURVEYOR0_SELF); // 0x62 + NUTS_PASS(nng_socket_get_int(s, NNG_OPT_PEER, &p)); + NUTS_TRUE(p == NNG_SURVEYOR0_PEER); // 0x62 + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PROTONAME, &n)); + NUTS_MATCH(n, NNG_SURVEYOR0_SELF_NAME); nng_strfree(n); - TEST_CHECK(nng_getopt_string(s, NNG_OPT_PEERNAME, &n) == 0); - TEST_CHECK(strcmp(n, "respondent") == 0); + NUTS_PASS(nng_socket_get_string(s, NNG_OPT_PEERNAME, &n)); + NUTS_MATCH(n, NNG_SURVEYOR0_PEER_NAME); nng_strfree(n); - TEST_CHECK(nng_close(s) == 0); + NUTS_CLOSE(s); } static void @@ -47,10 +36,10 @@ test_xsurveyor_raw(void) nng_socket s; bool b; - TEST_NNG_PASS(nng_surveyor0_open_raw(&s)); - TEST_NNG_PASS(nng_getopt_bool(s, NNG_OPT_RAW, &b)); - TEST_CHECK(b); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_surveyor0_open_raw(&s)); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_RAW, &b)); + NUTS_TRUE(b); + NUTS_CLOSE(s); } static void @@ -59,9 +48,9 @@ test_xsurvey_no_context(void) nng_socket s; nng_ctx ctx; - TEST_NNG_PASS(nng_surveyor0_open_raw(&s)); - TEST_NNG_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_surveyor0_open_raw(&s)); + NUTS_FAIL(nng_ctx_open(&ctx, s), NNG_ENOTSUP); + NUTS_CLOSE(s); } static void @@ -71,21 +60,21 @@ test_xsurvey_poll_writeable(void) nng_socket surv; nng_socket resp; - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(surv, NNG_OPT_SENDFD, &fd)); - TEST_CHECK(fd >= 0); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(surv, NNG_OPT_SENDFD, &fd)); + NUTS_TRUE(fd >= 0); // Survey is broadcast, so we can always write. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); // Now it's writable. - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -96,44 +85,44 @@ test_xsurvey_poll_readable(void) nng_socket resp; nng_msg * msg; - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_respondent0_open(&resp)); - TEST_NNG_PASS(nng_getopt_int(surv, NNG_OPT_RECVFD, &fd)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_respondent0_open(&resp)); + NUTS_PASS(nng_socket_get_int(surv, NNG_OPT_RECVFD, &fd)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_CHECK(fd >= 0); + NUTS_TRUE(fd >= 0); // Not readable if not connected! - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); // Even after connect (no message yet) - TEST_NNG_PASS(testutil_marry(surv, resp)); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_MARRY(surv, resp); + NUTS_TRUE(nuts_poll_fd(fd) == false); // But once we send messages, it is. // We have to send a request, in order to send a reply. - TEST_NNG_PASS(nng_msg_alloc(&msg, 0)); + NUTS_PASS(nng_msg_alloc(&msg, 0)); // Request ID - TEST_NNG_PASS(nng_msg_append_u32(msg, 0x80000000)); - TEST_NNG_PASS(nng_sendmsg(surv, msg, 0)); + NUTS_PASS(nng_msg_append_u32(msg, 0x80000000)); + NUTS_PASS(nng_sendmsg(surv, msg, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &msg, 0)); - TEST_NNG_PASS(nng_sendmsg(resp, msg, 0)); + NUTS_PASS(nng_recvmsg(resp, &msg, 0)); + NUTS_PASS(nng_sendmsg(resp, msg, 0)); - testutil_sleep(100); + NUTS_SLEEP(100); - TEST_CHECK(testutil_pollfd(fd) == true); + NUTS_TRUE(nuts_poll_fd(fd) ); // and receiving makes it no longer ready - TEST_NNG_PASS(nng_recvmsg(surv, &msg, 0)); + NUTS_PASS(nng_recvmsg(surv, &msg, 0)); nng_msg_free(msg); - TEST_CHECK(testutil_pollfd(fd) == false); + NUTS_TRUE(nuts_poll_fd(fd) == false); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -142,28 +131,28 @@ test_xsurvey_validate_peer(void) nng_socket s1, s2; nng_stat * stats; nng_stat * reject; - char addr[64]; + char *addr; - testutil_scratch_addr("inproc", sizeof(addr), addr); + NUTS_ADDR(addr, "inproc"); - TEST_NNG_PASS(nng_surveyor0_open_raw(&s1)); - TEST_NNG_PASS(nng_surveyor0_open(&s2)); + NUTS_PASS(nng_surveyor0_open_raw(&s1)); + NUTS_PASS(nng_surveyor0_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, NNG_FLAG_NONBLOCK)); - testutil_sleep(100); - TEST_NNG_PASS(nng_stats_get(&stats)); + NUTS_SLEEP(100); + NUTS_PASS(nng_stats_get(&stats)); - TEST_CHECK(stats != NULL); - TEST_CHECK((reject = nng_stat_find_socket(stats, s1)) != NULL); - TEST_CHECK((reject = nng_stat_find(reject, "reject")) != NULL); + NUTS_TRUE(stats != NULL); + NUTS_TRUE((reject = nng_stat_find_socket(stats, s1)) != NULL); + NUTS_TRUE((reject = nng_stat_find(reject, "reject")) != NULL); - TEST_CHECK(nng_stat_type(reject) == NNG_STAT_COUNTER); - TEST_CHECK(nng_stat_value(reject) > 0); + NUTS_TRUE(nng_stat_type(reject) == NNG_STAT_COUNTER); + NUTS_TRUE(nng_stat_value(reject) > 0); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); nng_stats_free(stats); } @@ -173,14 +162,14 @@ test_xsurvey_recv_aio_stopped(void) nng_socket surv; nng_aio * aio; - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_stop(aio); nng_recv_aio(surv, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECANCELED); - TEST_NNG_PASS(nng_close(surv)); + NUTS_FAIL(nng_aio_result(aio), NNG_ECANCELED); + NUTS_CLOSE(surv); nng_aio_free(aio); } @@ -192,33 +181,33 @@ test_xsurvey_recv_garbage(void) nng_msg * m; uint32_t req_id; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry(surv, resp)); + NUTS_MARRY(surv, resp); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_append_u32(m, 0x80000000)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_append_u32(m, 0x80000000)); + NUTS_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_PASS(nng_recvmsg(resp, &m, 0)); + NUTS_PASS(nng_recvmsg(resp, &m, 0)); // The message will have a header that contains the 32-bit pipe ID, // followed by the 32-bit request ID. We will discard the request // ID before sending it out. - TEST_CHECK(nng_msg_header_len(m) == 8); - TEST_NNG_PASS(nng_msg_header_chop_u32(m, &req_id)); - TEST_CHECK(req_id == 0x80000000); + NUTS_TRUE(nng_msg_header_len(m) == 8); + NUTS_PASS(nng_msg_header_chop_u32(m, &req_id)); + NUTS_TRUE(req_id == 0x80000000); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); - TEST_NNG_FAIL(nng_recvmsg(surv, &m, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_sendmsg(resp, m, 0)); + NUTS_FAIL(nng_recvmsg(surv, &m, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -230,37 +219,37 @@ test_xsurvey_recv_header(void) nng_pipe p; uint32_t id; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(testutil_marry_ex(surv, resp, NULL, NULL, &p)); + NUTS_MARRY_EX(surv, resp, NULL, NULL, &p); // Simulate a few hops. - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x2)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x1)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x80000123u)); - - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); - - TEST_NNG_PASS(nng_recvmsg(surv, &m, 0)); - TEST_CHECK(nng_msg_header_len(m) == 12); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x2); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x1); - TEST_NNG_PASS(nng_msg_header_trim_u32(m, &id)); - TEST_CHECK(id == 0x80000123u); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p))); + NUTS_PASS(nng_msg_header_append_u32(m, 0x2)); + NUTS_PASS(nng_msg_header_append_u32(m, 0x1)); + NUTS_PASS(nng_msg_header_append_u32(m, 0x80000123u)); + + NUTS_PASS(nng_sendmsg(resp, m, 0)); + + NUTS_PASS(nng_recvmsg(surv, &m, 0)); + NUTS_TRUE(nng_msg_header_len(m) == 12); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x2); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x1); + NUTS_PASS(nng_msg_header_trim_u32(m, &id)); + NUTS_TRUE(id == 0x80000123u); nng_msg_free(m); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -272,26 +261,26 @@ test_xsurvey_close_during_recv(void) nng_pipe p1; nng_pipe p2; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_RECVBUF, 1)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry_ex(surv, resp, NULL, &p1, &p2)); - TEST_CHECK(nng_pipe_id(p1) > 0); - TEST_CHECK(nng_pipe_id(p2) > 0); + NUTS_MARRY_EX(surv, resp, NULL, &p1, &p2); + NUTS_TRUE(nng_pipe_id(p1) > 0); + NUTS_TRUE(nng_pipe_id(p2) > 0); for (unsigned i = 0; i < 20; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); - testutil_sleep(10); - TEST_NNG_PASS(nng_sendmsg(resp, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, nng_pipe_id(p2))); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_SLEEP(10); + NUTS_PASS(nng_sendmsg(resp, m, 0)); } - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -303,27 +292,27 @@ test_xsurvey_close_pipe_during_send(void) nng_pipe p1; nng_pipe p2; - TEST_NNG_PASS(nng_respondent0_open_raw(&resp)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 5)); - TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20)); + NUTS_PASS(nng_respondent0_open_raw(&resp)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(resp, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_socket_set_int(resp, NNG_OPT_RECVBUF, 5)); + NUTS_PASS(nng_socket_set_int(surv, NNG_OPT_SENDBUF, 20)); - TEST_NNG_PASS(testutil_marry_ex(surv, resp, NULL, &p1, &p2)); - TEST_CHECK(nng_pipe_id(p1) > 0); - TEST_CHECK(nng_pipe_id(p2) > 0); + NUTS_MARRY_EX(surv, resp, NULL, &p1, &p2); + NUTS_TRUE(nng_pipe_id(p1) > 0); + NUTS_TRUE(nng_pipe_id(p2) > 0); for (unsigned i = 0; i < 20; i++) { - TEST_NNG_PASS(nng_msg_alloc(&m, 4)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); - testutil_sleep(10); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); + NUTS_PASS(nng_msg_alloc(&m, 4)); + NUTS_PASS(nng_msg_header_append_u32(m, i | 0x80000000u)); + NUTS_SLEEP(10); + NUTS_PASS(nng_sendmsg(surv, m, 0)); } - TEST_NNG_PASS(nng_pipe_close(p1)); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp)); + NUTS_PASS(nng_pipe_close(p1)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp); } static void @@ -335,29 +324,29 @@ test_xsurvey_ttl_option(void) size_t sz; const char *opt = NNG_OPT_MAXTTL; - TEST_NNG_PASS(nng_surveyor0_open_raw(&s)); + NUTS_PASS(nng_surveyor0_open_raw(&s)); - TEST_NNG_PASS(nng_setopt_int(s, opt, 1)); - TEST_NNG_FAIL(nng_setopt_int(s, opt, 0), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(s, opt, -1), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(s, opt, 16), NNG_EINVAL); - TEST_NNG_FAIL(nng_setopt_int(s, opt, 256), NNG_EINVAL); - TEST_NNG_PASS(nng_setopt_int(s, opt, 3)); - TEST_NNG_PASS(nng_getopt_int(s, opt, &v)); - TEST_CHECK(v == 3); + NUTS_PASS(nng_socket_set_int(s, opt, 1)); + NUTS_FAIL(nng_socket_set_int(s, opt, 0), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(s, opt, -1), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(s, opt, 16), NNG_EINVAL); + NUTS_FAIL(nng_socket_set_int(s, opt, 256), NNG_EINVAL); + NUTS_PASS(nng_socket_set_int(s, opt, 3)); + NUTS_PASS(nng_socket_get_int(s, opt, &v)); + NUTS_TRUE(v == 3); v = 0; sz = sizeof(v); - TEST_NNG_PASS(nng_getopt(s, opt, &v, &sz)); - TEST_CHECK(v == 3); - TEST_CHECK(sz == sizeof(v)); + NUTS_PASS(nng_socket_get(s, opt, &v, &sz)); + NUTS_TRUE(v == 3); + NUTS_TRUE(sz == sizeof(v)); - TEST_CHECK(nng_setopt(s, opt, "", 1) == NNG_EINVAL); + NUTS_FAIL(nng_socket_set(s, opt, "", 1) , NNG_EINVAL); sz = 1; - TEST_CHECK(nng_getopt(s, opt, &v, &sz) == NNG_EINVAL); - TEST_CHECK(nng_setopt_bool(s, opt, true) == NNG_EBADTYPE); - TEST_CHECK(nng_getopt_bool(s, opt, &b) == NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get(s, opt, &v, &sz) , NNG_EINVAL); + NUTS_FAIL(nng_socket_set_bool(s, opt, true) , NNG_EBADTYPE); + NUTS_FAIL(nng_socket_get_bool(s, opt, &b) , NNG_EBADTYPE); - TEST_CHECK(nng_close(s) == 0); + NUTS_CLOSE(s); } static void @@ -368,27 +357,27 @@ test_xsurvey_broadcast(void) nng_socket surv; nng_msg * m; - TEST_NNG_PASS(nng_respondent0_open(&resp1)); - TEST_NNG_PASS(nng_respondent0_open(&resp2)); - TEST_NNG_PASS(nng_surveyor0_open_raw(&surv)); - TEST_NNG_PASS(nng_setopt_ms(resp1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(resp2, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_setopt_ms(surv, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_respondent0_open(&resp1)); + NUTS_PASS(nng_respondent0_open(&resp2)); + NUTS_PASS(nng_surveyor0_open_raw(&surv)); + NUTS_PASS(nng_socket_set_ms(resp1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(resp2, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(surv, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(testutil_marry(surv, resp1)); - TEST_NNG_PASS(testutil_marry(surv, resp2)); + NUTS_MARRY(surv, resp1); + NUTS_MARRY(surv, resp2); - TEST_NNG_PASS(nng_msg_alloc(&m, 0)); - TEST_NNG_PASS(nng_msg_header_append_u32(m, 0x80000002u)); - TEST_NNG_PASS(nng_msg_append(m, "hello", 6)); + NUTS_PASS(nng_msg_alloc(&m, 0)); + NUTS_PASS(nng_msg_header_append_u32(m, 0x80000002u)); + NUTS_PASS(nng_msg_append(m, "hello", 6)); - TEST_NNG_PASS(nng_sendmsg(surv, m, 0)); - TEST_NNG_RECV_STR(resp1, "hello"); - TEST_NNG_RECV_STR(resp2, "hello"); + NUTS_PASS(nng_sendmsg(surv, m, 0)); + NUTS_RECV(resp1, "hello"); + NUTS_RECV(resp2, "hello"); - TEST_NNG_PASS(nng_close(surv)); - TEST_NNG_PASS(nng_close(resp1)); - TEST_NNG_PASS(nng_close(resp2)); + NUTS_CLOSE(surv); + NUTS_CLOSE(resp1); + NUTS_CLOSE(resp2); } TEST_LIST = { diff --git a/src/supplemental/tls/tls_test.c b/src/supplemental/tls/tls_test.c index 4857c4c79..244f68ca9 100644 --- a/src/supplemental/tls/tls_test.c +++ b/src/supplemental/tls/tls_test.c @@ -7,48 +7,37 @@ // found online at https://opensource.org/licenses/MIT. // -#include -#include -#include -#include - -#include -#include -#include - -#include +#include void test_tls_config_version(void) { nng_tls_config *cfg; - TEST_NNG_PASS(nng_tls_config_alloc(&cfg, NNG_TLS_MODE_SERVER)); + NUTS_PASS(nng_tls_config_alloc(&cfg, NNG_TLS_MODE_SERVER)); // Verify that min ver < max ver - TEST_NNG_FAIL(nng_tls_config_version(cfg, NNG_TLS_1_3, NNG_TLS_1_0), + NUTS_FAIL(nng_tls_config_version(cfg, NNG_TLS_1_3, NNG_TLS_1_0), NNG_ENOTSUP); // Verify that we cannot configure SSL 3.0 or older. - TEST_NNG_FAIL( - nng_tls_config_version(cfg, NNG_TLS_1_0 - 1, NNG_TLS_1_0), + NUTS_FAIL(nng_tls_config_version(cfg, NNG_TLS_1_0 - 1, NNG_TLS_1_0), NNG_ENOTSUP); // Verify that we cannot configure TLS > 1.3. - TEST_NNG_FAIL( - nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_3 + 1), + NUTS_FAIL(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_3 + 1), NNG_ENOTSUP); // Verify that we *can* configure some various ranges. - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_0)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_1)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_2)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_3)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_1)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_2)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_3)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_2, NNG_TLS_1_2)); - TEST_NNG_PASS(nng_tls_config_version(cfg, NNG_TLS_1_2, NNG_TLS_1_3)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_0)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_1)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_2)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_0, NNG_TLS_1_3)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_1)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_2)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_1, NNG_TLS_1_3)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_2, NNG_TLS_1_2)); + NUTS_PASS(nng_tls_config_version(cfg, NNG_TLS_1_2, NNG_TLS_1_3)); nng_tls_config_free(cfg); } @@ -59,15 +48,14 @@ test_tls_conn_refused(void) nng_stream_dialer *dialer; nng_aio * aio; - TEST_NNG_PASS(nng_aio_alloc(&aio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio, NULL, NULL)); nng_aio_set_timeout(aio, 5000); // 5 sec // port 8 is generally not used for anything. - TEST_NNG_PASS( - nng_stream_dialer_alloc(&dialer, "tls+tcp://127.0.0.1:8")); + NUTS_PASS(nng_stream_dialer_alloc(&dialer, "tls+tcp://127.0.0.1:8")); nng_stream_dialer_dial(dialer, aio); nng_aio_wait(aio); - TEST_NNG_FAIL(nng_aio_result(aio), NNG_ECONNREFUSED); + NUTS_FAIL(nng_aio_result(aio), NNG_ECONNREFUSED); nng_aio_free(aio); nng_stream_dialer_free(dialer); @@ -89,57 +77,59 @@ test_tls_large_message(void) size_t size = 450001; void * t1; void * t2; + int port; // allocate messages - TEST_CHECK((buf1 = nng_alloc(size)) != NULL); - TEST_CHECK((buf2 = nng_alloc(size)) != NULL); + NUTS_ASSERT((buf1 = nng_alloc(size)) != NULL); + NUTS_ASSERT((buf2 = nng_alloc(size)) != NULL); for (size_t i = 0; i < size; i++) { buf1[i] = rand() & 0xff; } - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); nng_aio_set_timeout(aio1, 5000); nng_aio_set_timeout(aio2, 5000); - testutil_scratch_addr("tls+tcp", sizeof(addr), addr); - - TEST_NNG_PASS(nng_stream_dialer_alloc(&d, addr)); - TEST_NNG_PASS(nng_stream_listener_alloc(&l, addr)); - - // set up TLS parameters - - TEST_NNG_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER)); - TEST_NNG_PASS(nng_tls_config_own_cert( - c1, testutil_server_crt, testutil_server_key, NULL)); - - TEST_NNG_PASS(nng_tls_config_alloc(&c2, NNG_TLS_MODE_CLIENT)); - TEST_NNG_PASS(nng_tls_config_ca_chain(c2, testutil_server_crt, NULL)); - TEST_NNG_PASS(nng_tls_config_server_name(c2, "localhost")); - - TEST_NNG_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1)); - TEST_NNG_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2)); + // Allocate the listener first. We use a wild-card port. + NUTS_PASS(nng_stream_listener_alloc(&l, "tls+tcp://127.0.0.1:0")); + NUTS_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER)); + NUTS_PASS(nng_tls_config_own_cert( + c1, nuts_server_crt, nuts_server_key, NULL)); + NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1)); + NUTS_PASS(nng_stream_listener_listen(l)); + NUTS_PASS( + nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port)); + NUTS_TRUE(port > 0); + NUTS_TRUE(port < 65536); + + snprintf(addr, sizeof (addr), "tls+tcp://127.0.0.1:%d", port); + NUTS_PASS(nng_stream_dialer_alloc(&d, addr)); + NUTS_PASS(nng_tls_config_alloc(&c2, NNG_TLS_MODE_CLIENT)); + NUTS_PASS(nng_tls_config_ca_chain(c2, nuts_server_crt, NULL)); + NUTS_PASS(nng_tls_config_server_name(c2, "localhost")); + + NUTS_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2)); - TEST_NNG_PASS(nng_stream_listener_listen(l)); nng_stream_listener_accept(l, aio1); nng_stream_dialer_dial(d, aio2); nng_aio_wait(aio1); nng_aio_wait(aio2); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_NNG_PASS(nng_aio_result(aio2)); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio2)); - TEST_CHECK((s1 = nng_aio_get_output(aio1, 0)) != NULL); - TEST_CHECK((s2 = nng_aio_get_output(aio2, 0)) != NULL); + NUTS_TRUE((s1 = nng_aio_get_output(aio1, 0)) != NULL); + NUTS_TRUE((s2 = nng_aio_get_output(aio2, 0)) != NULL); - t1 = testutil_stream_send_start(s1, buf1, size); - t2 = testutil_stream_recv_start(s2, buf2, size); + t1 = nuts_stream_send_start(s1, buf1, size); + t2 = nuts_stream_recv_start(s2, buf2, size); - TEST_NNG_PASS(testutil_stream_send_wait(t1)); - TEST_NNG_PASS(testutil_stream_recv_wait(t2)); - TEST_CHECK(memcmp(buf1, buf2, size) == 0); + NUTS_PASS(nuts_stream_wait(t1)); + NUTS_PASS(nuts_stream_wait(t2)); + NUTS_TRUE(memcmp(buf1, buf2, size) == 0); nng_free(buf1, size); nng_free(buf2, size); diff --git a/src/supplemental/websocket/websocket_test.c b/src/supplemental/websocket/websocket_test.c index 9a2981426..9ea680173 100644 --- a/src/supplemental/websocket/websocket_test.c +++ b/src/supplemental/websocket/websocket_test.c @@ -12,10 +12,7 @@ #include #include -#include "supplemental/sha1/sha1.h" - -#include -#include +#include void test_websocket_wildcard(void) @@ -36,27 +33,27 @@ test_websocket_wildcard(void) char buf2[8]; char uri[64]; - TEST_NNG_PASS(nng_stream_listener_alloc(&l, "ws://127.0.0.1:0/test")); + NUTS_PASS(nng_stream_listener_alloc(&l, "ws://127.0.0.1:0/test")); - TEST_NNG_PASS(nng_stream_listener_listen(l)); + NUTS_PASS(nng_stream_listener_listen(l)); // Let's get the address we're going to use to dial -- also check // that it is correct. sz = sizeof(sa1); - TEST_NNG_PASS(nng_stream_listener_get(l, NNG_OPT_LOCADDR, &sa1, &sz)); - TEST_CHECK(sz == sizeof(sa1)); - TEST_CHECK(sa1.s_in.sa_port != 0); - TEST_CHECK(sa1.s_family == NNG_AF_INET); - TEST_CHECK(testutil_htonl(sa1.s_in.sa_addr) == 0x7F000001u); + NUTS_PASS(nng_stream_listener_get(l, NNG_OPT_LOCADDR, &sa1, &sz)); + NUTS_TRUE(sz == sizeof(sa1)); + NUTS_TRUE(sa1.s_in.sa_port != 0); + NUTS_TRUE(sa1.s_family == NNG_AF_INET); + NUTS_TRUE(nuts_be32(sa1.s_in.sa_addr) == 0x7F000001u); (void) snprintf(uri, sizeof(uri), "ws://127.0.0.1:%d/test", - testutil_htons(sa1.s_in.sa_port)); + nuts_be16(sa1.s_in.sa_port)); - TEST_NNG_PASS(nng_stream_dialer_alloc(&d, uri)); - TEST_NNG_PASS(nng_aio_alloc(&daio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&laio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_stream_dialer_alloc(&d, uri)); + NUTS_PASS(nng_aio_alloc(&daio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&laio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); nng_aio_set_timeout(daio, 5000); // 5 seconds nng_aio_set_timeout(laio, 5000); nng_aio_set_timeout(aio1, 5000); @@ -68,29 +65,24 @@ test_websocket_wildcard(void) nng_aio_wait(laio); nng_aio_wait(daio); - TEST_NNG_PASS(nng_aio_result(laio)); - TEST_NNG_PASS(nng_aio_result(daio)); + NUTS_PASS(nng_aio_result(laio)); + NUTS_PASS(nng_aio_result(daio)); c1 = nng_aio_get_output(laio, 0); c2 = nng_aio_get_output(daio, 0); - TEST_CHECK(c1 != NULL); - TEST_CHECK(c2 != NULL); + NUTS_TRUE(c1 != NULL); + NUTS_TRUE(c2 != NULL); // Let's compare the peer addresses - TEST_NNG_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2)); - TEST_CHECK(sa1.s_family == sa2.s_family); - TEST_CHECK(sa1.s_in.sa_addr == sa2.s_in.sa_addr); - TEST_CHECK(sa1.s_in.sa_port == sa2.s_in.sa_port); - - TEST_NNG_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1)); - TEST_NNG_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2)); - TEST_CHECK_(sa1.s_family == sa2.s_family, "families match %x == %x", - sa1.s_family, sa2.s_family); - TEST_CHECK_(sa1.s_in.sa_addr == sa2.s_in.sa_addr, - "addresses match %x == %x", testutil_htonl(sa1.s_in.sa_addr), - testutil_htonl(sa2.s_in.sa_addr)); - TEST_CHECK_(sa1.s_in.sa_port == sa2.s_in.sa_port, - "ports match %u == %u", testutil_htons(sa1.s_in.sa_port), - testutil_htons(sa2.s_in.sa_port)); + NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr); + NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port); + + NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1)); + NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr); + NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port); // This relies on send completing for for just 5 bytes, and on // recv doing the same. Technically this isn't/ guaranteed, but @@ -100,23 +92,23 @@ test_websocket_wildcard(void) memset(buf2, 0, 5); iov.iov_buf = buf1; iov.iov_len = 5; - TEST_NNG_PASS(nng_aio_set_iov(aio1, 1, &iov)); + NUTS_PASS(nng_aio_set_iov(aio1, 1, &iov)); iov.iov_buf = buf2; iov.iov_len = 5; - TEST_NNG_PASS(nng_aio_set_iov(aio2, 1, &iov)); + NUTS_PASS(nng_aio_set_iov(aio2, 1, &iov)); nng_stream_send(c1, aio1); nng_stream_recv(c2, aio2); nng_aio_wait(aio1); nng_aio_wait(aio2); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_CHECK(nng_aio_count(aio1) == 5); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_TRUE(nng_aio_count(aio1) == 5); - TEST_NNG_PASS(nng_aio_result(aio2)); - TEST_CHECK(nng_aio_count(aio2) == 5); - TEST_CHECK(memcmp(buf1, buf2, 5) == 0); + NUTS_PASS(nng_aio_result(aio2)); + NUTS_TRUE(nng_aio_count(aio2) == 5); + NUTS_TRUE(memcmp(buf1, buf2, 5) == 0); nng_stream_close(c1); nng_stream_free(c1); @@ -145,18 +137,18 @@ test_websocket_conn_props(void) char uri[64]; bool on; char * str; - uint16_t port = testutil_next_port(); + uint16_t port = nuts_next_port(); (void) snprintf(uri, sizeof(uri), "ws://127.0.0.1:%d/test", port); - TEST_NNG_PASS(nng_aio_alloc(&daio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&laio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&daio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&laio, NULL, NULL)); nng_aio_set_timeout(daio, 5000); // 5 seconds nng_aio_set_timeout(laio, 5000); - TEST_NNG_PASS(nng_stream_listener_alloc(&l, uri)); - TEST_NNG_PASS(nng_stream_listener_listen(l)); - TEST_NNG_PASS(nng_stream_dialer_alloc(&d, uri)); + NUTS_PASS(nng_stream_listener_alloc(&l, uri)); + NUTS_PASS(nng_stream_listener_listen(l)); + NUTS_PASS(nng_stream_dialer_alloc(&d, uri)); nng_stream_dialer_dial(d, daio); nng_stream_listener_accept(l, laio); @@ -164,64 +156,54 @@ test_websocket_conn_props(void) nng_aio_wait(laio); nng_aio_wait(daio); - TEST_NNG_PASS(nng_aio_result(laio)); - TEST_NNG_PASS(nng_aio_result(daio)); + NUTS_PASS(nng_aio_result(laio)); + NUTS_PASS(nng_aio_result(daio)); c1 = nng_aio_get_output(laio, 0); c2 = nng_aio_get_output(daio, 0); - TEST_CHECK(c1 != NULL); - TEST_CHECK(c2 != NULL); + NUTS_TRUE(c1 != NULL); + NUTS_TRUE(c2 != NULL); // Let's compare the peer addresses - TEST_NNG_PASS(nng_stream_get_addr(c1, NNG_OPT_LOCADDR, &sa1)); - TEST_NNG_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2)); - TEST_CHECK_(sa1.s_family == sa2.s_family, "families match %x == %x", - sa1.s_family, sa2.s_family); - TEST_CHECK_(sa1.s_in.sa_addr == sa2.s_in.sa_addr, - "addresses match %x == %x", testutil_htonl(sa1.s_in.sa_addr), - testutil_htonl(sa2.s_in.sa_addr)); - TEST_CHECK_(sa1.s_in.sa_port == sa2.s_in.sa_port, - "ports match %u == %u", testutil_htons(sa1.s_in.sa_port), - testutil_htons(sa2.s_in.sa_port)); - - TEST_NNG_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1)); - TEST_NNG_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2)); - TEST_CHECK_(sa1.s_family == sa2.s_family, "families match %x == %x", - sa1.s_family, sa2.s_family); - TEST_CHECK_(sa1.s_in.sa_addr == sa2.s_in.sa_addr, - "addresses match %x == %x", testutil_htonl(sa1.s_in.sa_addr), - testutil_htonl(sa2.s_in.sa_addr)); - TEST_CHECK_(sa1.s_in.sa_port == sa2.s_in.sa_port, - "ports match %u == %u", testutil_htons(sa1.s_in.sa_port), - testutil_htons(sa2.s_in.sa_port)); + NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_LOCADDR, &sa1)); + NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr); + NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port); + + NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1)); + NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr); + NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port); on = true; - TEST_NNG_PASS(nng_stream_set_bool(c1, NNG_OPT_TCP_NODELAY, on)); - TEST_NNG_PASS(nng_stream_set_bool(c2, NNG_OPT_TCP_NODELAY, on)); + NUTS_PASS(nng_stream_set_bool(c1, NNG_OPT_TCP_NODELAY, on)); + NUTS_PASS(nng_stream_set_bool(c2, NNG_OPT_TCP_NODELAY, on)); - TEST_NNG_PASS(nng_stream_set_bool(c1, NNG_OPT_TCP_KEEPALIVE, on)); - TEST_NNG_PASS(nng_stream_set_bool(c2, NNG_OPT_TCP_KEEPALIVE, on)); - TEST_NNG_FAIL(nng_stream_set_string(c1, NNG_OPT_TCP_KEEPALIVE, "nope"), + NUTS_PASS(nng_stream_set_bool(c1, NNG_OPT_TCP_KEEPALIVE, on)); + NUTS_PASS(nng_stream_set_bool(c2, NNG_OPT_TCP_KEEPALIVE, on)); + NUTS_FAIL(nng_stream_set_string(c1, NNG_OPT_TCP_KEEPALIVE, "nope"), NNG_EBADTYPE); on = false; sz = sizeof(on); - TEST_NNG_PASS(nng_stream_get(c1, NNG_OPT_TCP_NODELAY, &on, &sz)); - TEST_CHECK(sz == sizeof(on)); - TEST_CHECK(on == true); + NUTS_PASS(nng_stream_get(c1, NNG_OPT_TCP_NODELAY, &on, &sz)); + NUTS_TRUE(sz == sizeof(on)); + NUTS_TRUE(on == true); on = false; sz = sizeof(on); - TEST_NNG_PASS(nng_stream_get(c2, NNG_OPT_TCP_KEEPALIVE, &on, &sz)); - TEST_CHECK(sz == sizeof(on)); - TEST_CHECK(on == true); + NUTS_PASS(nng_stream_get(c2, NNG_OPT_TCP_KEEPALIVE, &on, &sz)); + NUTS_TRUE(sz == sizeof(on)); + NUTS_TRUE(on == true); - TEST_NNG_FAIL( + NUTS_FAIL( nng_stream_get_size(c1, NNG_OPT_TCP_NODELAY, &sz), NNG_EBADTYPE); - TEST_NNG_PASS(nng_stream_get_string( + NUTS_PASS(nng_stream_get_string( c1, NNG_OPT_WS_REQUEST_HEADER "Sec-WebSocket-Version", &str)); - TEST_CHECK(str != NULL); - TEST_CHECK(strcmp(str, "13") == 0); + NUTS_TRUE(str != NULL); + NUTS_TRUE(strcmp(str, "13") == 0); nng_strfree(str); nng_stream_close(c1); @@ -249,73 +231,69 @@ test_websocket_text_mode(void) char txb[5]; char rxb[5]; bool on; - uint16_t port = testutil_next_port(); + uint16_t port = nuts_next_port(); nng_iov iov; (void) snprintf(uri, sizeof(uri), "ws://127.0.0.1:%d/test", port); - TEST_NNG_PASS(nng_aio_alloc(&daio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&laio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio1, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&aio2, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&daio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&laio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio1, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&aio2, NULL, NULL)); nng_aio_set_timeout(daio, 5000); // 5 seconds nng_aio_set_timeout(laio, 5000); nng_aio_set_timeout(aio1, 5000); nng_aio_set_timeout(aio2, 5000); - TEST_NNG_PASS(nng_stream_listener_alloc(&l, uri)); - TEST_NNG_PASS(nng_stream_dialer_alloc(&d, uri)); + NUTS_PASS(nng_stream_listener_alloc(&l, uri)); + NUTS_PASS(nng_stream_dialer_alloc(&d, uri)); on = true; - TEST_NNG_PASS(nng_stream_dialer_set_bool(d, NNG_OPT_WS_SEND_TEXT, on)); - TEST_NNG_PASS( - nng_stream_listener_set_bool(l, NNG_OPT_WS_RECV_TEXT, on)); + NUTS_PASS(nng_stream_dialer_set_bool(d, NNG_OPT_WS_SEND_TEXT, on)); + NUTS_PASS(nng_stream_listener_set_bool(l, NNG_OPT_WS_RECV_TEXT, on)); - TEST_NNG_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_SEND_TEXT, &on)); - TEST_ASSERT(on == true); - TEST_NNG_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_RECV_TEXT, &on)); - TEST_ASSERT(on == false); + NUTS_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_SEND_TEXT, &on)); + NUTS_TRUE(on); + NUTS_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_RECV_TEXT, &on)); + NUTS_TRUE(on == false); - - TEST_NNG_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_SEND_TEXT, &on)); - TEST_ASSERT(on == false); - TEST_NNG_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_RECV_TEXT, &on)); - TEST_ASSERT(on == true); + NUTS_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_SEND_TEXT, &on)); + NUTS_TRUE(on == false); + NUTS_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_RECV_TEXT, &on)); + NUTS_TRUE(on); on = false; - TEST_NNG_PASS(nng_stream_dialer_set_bool(d, NNG_OPT_WS_RECV_TEXT, on)); - TEST_NNG_PASS( - nng_stream_listener_set_bool(l, NNG_OPT_WS_SEND_TEXT, on)); - TEST_NNG_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_SEND_TEXT, &on)); - TEST_ASSERT(on == false); - TEST_NNG_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_RECV_TEXT, &on)); - TEST_ASSERT(on == false); - - TEST_NNG_PASS(nng_stream_listener_listen(l)); - nng_stream_dialer_dial(d, daio); + NUTS_PASS(nng_stream_dialer_set_bool(d, NNG_OPT_WS_RECV_TEXT, on)); + NUTS_PASS(nng_stream_listener_set_bool(l, NNG_OPT_WS_SEND_TEXT, on)); + NUTS_PASS(nng_stream_listener_get_bool(l, NNG_OPT_WS_SEND_TEXT, &on)); + NUTS_TRUE(on == false); + NUTS_PASS(nng_stream_dialer_get_bool(d, NNG_OPT_WS_RECV_TEXT, &on)); + NUTS_TRUE(on == false); + + NUTS_PASS(nng_stream_listener_listen(l)); + nng_stream_dialer_dial(d, daio); nng_stream_listener_accept(l, laio); nng_aio_wait(laio); nng_aio_wait(daio); - TEST_NNG_PASS(nng_aio_result(laio)); - TEST_NNG_PASS(nng_aio_result(daio)); + NUTS_PASS(nng_aio_result(laio)); + NUTS_PASS(nng_aio_result(daio)); c1 = nng_aio_get_output(laio, 0); c2 = nng_aio_get_output(daio, 0); - TEST_CHECK(c1 != NULL); - TEST_CHECK(c2 != NULL); + NUTS_TRUE(c1 != NULL); + NUTS_TRUE(c2 != NULL); - TEST_NNG_PASS(nng_stream_get_bool(c1, NNG_OPT_WS_SEND_TEXT, &on)); - TEST_ASSERT(on == false); - TEST_NNG_PASS(nng_stream_get_bool(c1, NNG_OPT_WS_RECV_TEXT, &on)); - TEST_ASSERT(on == true); - TEST_NNG_PASS( - nng_stream_listener_set_bool(l, NNG_OPT_WS_RECV_TEXT, on)); + NUTS_PASS(nng_stream_get_bool(c1, NNG_OPT_WS_SEND_TEXT, &on)); + NUTS_TRUE(on == false); + NUTS_PASS(nng_stream_get_bool(c1, NNG_OPT_WS_RECV_TEXT, &on)); + NUTS_TRUE(on); + NUTS_PASS(nng_stream_listener_set_bool(l, NNG_OPT_WS_RECV_TEXT, on)); - TEST_NNG_PASS(nng_stream_get_bool(c2, NNG_OPT_WS_SEND_TEXT, &on)); - TEST_ASSERT(on == true); - TEST_NNG_PASS(nng_stream_get_bool(c2, NNG_OPT_WS_RECV_TEXT, &on)); - TEST_ASSERT(on == false); + NUTS_PASS(nng_stream_get_bool(c2, NNG_OPT_WS_SEND_TEXT, &on)); + NUTS_TRUE(on); + NUTS_PASS(nng_stream_get_bool(c2, NNG_OPT_WS_RECV_TEXT, &on)); + NUTS_TRUE(on == false); memcpy(txb, "PING", 5); iov.iov_buf = txb; @@ -329,9 +307,9 @@ test_websocket_text_mode(void) nng_aio_wait(aio1); nng_aio_wait(aio2); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_NNG_PASS(nng_aio_result(aio2)); - TEST_ASSERT(memcmp(rxb, txb, 5) == 0); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio2)); + NUTS_TRUE(memcmp(rxb, txb, 5) == 0); memset(rxb, 0, 5); memcpy(txb, "PONG", 5); @@ -347,9 +325,9 @@ test_websocket_text_mode(void) nng_aio_wait(aio1); nng_aio_wait(aio2); - TEST_NNG_PASS(nng_aio_result(aio1)); - TEST_NNG_PASS(nng_aio_result(aio2)); - TEST_ASSERT(memcmp(rxb, txb, 5) == 0); + NUTS_PASS(nng_aio_result(aio1)); + NUTS_PASS(nng_aio_result(aio2)); + NUTS_TRUE(memcmp(rxb, txb, 5) == 0); nng_stream_close(c1); nng_stream_free(c1); @@ -435,11 +413,11 @@ test_websocket_fragmentation(void) state.total = 200000; // total to send state.xfr = 0; state.err = 0; - TEST_CHECK((recv_buf = nng_alloc(state.total)) != NULL); - TEST_CHECK((send_buf = nng_alloc(state.total)) != NULL); - TEST_NNG_PASS(nng_mtx_alloc(&state.lock)); - TEST_NNG_PASS(nng_cv_alloc(&state.cv, state.lock)); - TEST_NNG_PASS(nng_aio_alloc(&state.aio, frag_recv_cb, &state)); + NUTS_TRUE((recv_buf = nng_alloc(state.total)) != NULL); + NUTS_TRUE((send_buf = nng_alloc(state.total)) != NULL); + NUTS_PASS(nng_mtx_alloc(&state.lock)); + NUTS_PASS(nng_cv_alloc(&state.cv, state.lock)); + NUTS_PASS(nng_aio_alloc(&state.aio, frag_recv_cb, &state)); nng_aio_set_timeout(state.aio, 2000); state.buf = recv_buf; @@ -451,20 +429,19 @@ test_websocket_fragmentation(void) nni_sha1(send_buf, state.total, sum1); nni_sha1_init(&state.sum); - port = testutil_next_port(); + port = nuts_next_port(); (void) snprintf(url, sizeof(url), "ws://127.0.0.1:%u", port); - TEST_NNG_PASS(nng_stream_listener_alloc(&l, url)); - TEST_NNG_PASS(nng_stream_dialer_alloc(&d, url)); - TEST_NNG_PASS(nng_aio_alloc(&daio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&laio, NULL, NULL)); - TEST_NNG_PASS(nng_aio_alloc(&caio, NULL, NULL)); + NUTS_PASS(nng_stream_listener_alloc(&l, url)); + NUTS_PASS(nng_stream_dialer_alloc(&d, url)); + NUTS_PASS(nng_aio_alloc(&daio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&laio, NULL, NULL)); + NUTS_PASS(nng_aio_alloc(&caio, NULL, NULL)); - TEST_NNG_PASS( - nng_stream_listener_set_bool(l, NNG_OPT_TCP_NODELAY, true)); - TEST_NNG_PASS( + NUTS_PASS(nng_stream_listener_set_bool(l, NNG_OPT_TCP_NODELAY, true)); + NUTS_PASS( nng_stream_listener_set_size(l, NNG_OPT_WS_SENDMAXFRAME, 1000000)); - TEST_NNG_PASS(nng_stream_listener_listen(l)); + NUTS_PASS(nng_stream_listener_listen(l)); nng_aio_set_timeout(laio, 2000); nng_aio_set_timeout(daio, 2000); @@ -475,8 +452,8 @@ test_websocket_fragmentation(void) nng_aio_wait(laio); nng_aio_wait(daio); - TEST_NNG_PASS(nng_aio_result(laio)); - TEST_NNG_PASS(nng_aio_result(daio)); + NUTS_PASS(nng_aio_result(laio)); + NUTS_PASS(nng_aio_result(daio)); state.c = nng_aio_get_output(daio, 0); c = nng_aio_get_output(laio, 0); @@ -493,11 +470,11 @@ test_websocket_fragmentation(void) iov.iov_len = len; iov.iov_buf = buf; - TEST_NNG_PASS(nng_aio_set_iov(caio, 1, &iov)); + NUTS_PASS(nng_aio_set_iov(caio, 1, &iov)); nng_stream_send(c, caio); nng_aio_wait(caio); - TEST_NNG_PASS(nng_aio_result(caio)); - TEST_CHECK(nng_aio_count(caio) > 0); + NUTS_PASS(nng_aio_result(caio)); + NUTS_TRUE(nng_aio_count(caio) > 0); len = nng_aio_count(caio); resid -= len; @@ -510,13 +487,12 @@ test_websocket_fragmentation(void) } nng_mtx_unlock(state.lock); - TEST_NNG_PASS(state.err); - TEST_CHECK_(state.xfr == state.total, - "send count (%d) == recv count (%d)", state.total, state.xfr); + NUTS_PASS(state.err); + NUTS_TRUE(state.xfr == state.total); nni_sha1_final(&state.sum, sum2); - TEST_CHECK(memcmp(recv_buf, send_buf, state.total) == 0); - TEST_CHECK(memcmp(sum1, sum2, 20) == 0); + NUTS_TRUE(memcmp(recv_buf, send_buf, state.total) == 0); + NUTS_TRUE(memcmp(sum1, sum2, 20) == 0); nng_aio_free(caio); nng_stream_close(c); @@ -535,7 +511,7 @@ test_websocket_fragmentation(void) nng_stream_listener_free(l); } -TEST_LIST = { +NUTS_TESTS = { { "websocket stream wildcard", test_websocket_wildcard }, { "websocket conn properties", test_websocket_conn_props }, { "websocket fragmentation", test_websocket_fragmentation }, diff --git a/src/supplemental/websocket/wssfile_test.c b/src/supplemental/websocket/wssfile_test.c index 3f69cadcc..590031230 100644 --- a/src/supplemental/websocket/wssfile_test.c +++ b/src/supplemental/websocket/wssfile_test.c @@ -8,16 +8,9 @@ // found online at https://opensource.org/licenses/MIT. // -#include -#include -#include -#include -#include - #include "core/nng_impl.h" -#include "acutest.h" -#include "testutil.h" +#include #ifdef NNG_SUPP_TLS // These keys are for demonstration purposes ONLY. DO NOT USE. @@ -106,13 +99,13 @@ init_dialer_wss_file(nng_dialer d) char *tmpdir; char *pth; - TEST_ASSERT((tmpdir = nni_plat_temp_dir()) != NULL); - TEST_ASSERT((pth = nni_file_join(tmpdir, CACERT)) != NULL); - nni_strfree(tmpdir); - TEST_NNG_PASS(nni_file_put(pth, cert, strlen(cert))); - TEST_NNG_PASS(nng_dialer_set_string(d, NNG_OPT_TLS_CA_FILE, pth)); + NUTS_ASSERT((tmpdir = nni_plat_temp_dir()) != NULL); + NUTS_ASSERT((pth = nni_file_join(tmpdir, CACERT)) != NULL); + nng_strfree(tmpdir); + NUTS_PASS(nni_file_put(pth, cert, strlen(cert))); + NUTS_PASS(nng_dialer_set_string(d, NNG_OPT_TLS_CA_FILE, pth)); nni_file_delete(pth); - nni_strfree(pth); + nng_strfree(pth); } static void @@ -122,25 +115,24 @@ init_listener_wss_file(nng_listener l) char *pth; char *cert_key; - TEST_ASSERT((tmpdir = nni_plat_temp_dir()) != NULL); - TEST_ASSERT((pth = nni_file_join(tmpdir, CERT_KEY)) != NULL); - nni_strfree(tmpdir); + NUTS_ASSERT((tmpdir = nni_plat_temp_dir()) != NULL); + NUTS_ASSERT((pth = nni_file_join(tmpdir, CERT_KEY)) != NULL); + nng_strfree(tmpdir); - TEST_NNG_PASS(nni_asprintf(&cert_key, "%s\r\n%s\r\n", cert, key)); + NUTS_PASS(nni_asprintf(&cert_key, "%s\r\n%s\r\n", cert, key)); - TEST_NNG_PASS(nni_file_put(pth, cert_key, strlen(cert_key))); - nni_strfree(cert_key); - TEST_NNG_PASS( - nng_listener_set_string(l, NNG_OPT_TLS_CERT_KEY_FILE, pth)); + NUTS_PASS(nni_file_put(pth, cert_key, strlen(cert_key))); + nng_strfree(cert_key); + NUTS_PASS(nng_listener_set_string(l, NNG_OPT_TLS_CERT_KEY_FILE, pth)); nni_file_delete(pth); - nni_strfree(pth); + nng_strfree(pth); } static void test_invalid_verify(void) { - uint16_t port = testutil_next_port(); + uint16_t port = nuts_next_port(); nng_socket s1; nng_socket s2; nng_listener l; @@ -149,11 +141,11 @@ test_invalid_verify(void) (void) snprintf(addr, sizeof(addr), "wss4://:%u/test", port); - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_pair_open(&s2)); - TEST_NNG_PASS(nng_listener_create(&l, s1, addr)); + NUTS_PASS(nng_pair_open(&s1)); + NUTS_PASS(nng_pair_open(&s2)); + NUTS_PASS(nng_listener_create(&l, s1, addr)); init_listener_wss_file(l); - TEST_NNG_PASS(nng_listener_start(l, 0)); + NUTS_PASS(nng_listener_start(l, 0)); nng_msleep(100); @@ -164,20 +156,18 @@ test_invalid_verify(void) // dependent, based on receive vs. send timing most likely. // Applications shouldn't really depend that much on this. int rv; - rv = nng_dial(s2, addr, NULL, 0); - TEST_NNG_PASS(nng_dialer_create(&d, s2, addr)); - TEST_NNG_PASS(nng_dialer_set_int( + NUTS_PASS(nng_dialer_create(&d, s2, addr)); + NUTS_PASS(nng_dialer_set_int( d, NNG_OPT_TLS_AUTH_MODE, NNG_TLS_AUTH_MODE_REQUIRED)); rv = nng_dialer_start(d, 0); - TEST_CHECK(rv != 0); - TEST_CHECK_((rv == NNG_EPEERAUTH) || (rv == NNG_ECLOSED) || - (rv == NNG_ECRYPTO), - "result from dial: %d %s", rv, nng_strerror(rv)); + NUTS_TRUE(rv != 0); + NUTS_TRUE((rv == NNG_EPEERAUTH) || (rv == NNG_ECLOSED) || + (rv == NNG_ECRYPTO)); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s2)); } static void @@ -193,43 +183,43 @@ test_no_verify(void) bool b; uint16_t port; - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_pair_open(&s2)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 5000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 5000)); + NUTS_PASS(nng_pair_open(&s1)); + NUTS_PASS(nng_pair_open(&s2)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 5000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 5000)); - port = testutil_next_port(); + port = nuts_next_port(); (void) snprintf(addr, sizeof(addr), "wss4://:%u/test", port); - TEST_NNG_PASS(nng_listener_create(&l, s1, addr)); + NUTS_PASS(nng_listener_create(&l, s1, addr)); init_listener_wss_file(l); - TEST_NNG_PASS(nng_listener_start(l, 0)); + NUTS_PASS(nng_listener_start(l, 0)); nng_msleep(100); snprintf(addr, sizeof(addr), "wss://127.0.0.1:%u/test", port); - TEST_NNG_PASS(nng_dialer_create(&d, s2, addr)); + NUTS_PASS(nng_dialer_create(&d, s2, addr)); init_dialer_wss_file(d); - TEST_NNG_PASS(nng_dialer_set_int( + NUTS_PASS(nng_dialer_set_int( d, NNG_OPT_TLS_AUTH_MODE, NNG_TLS_AUTH_MODE_OPTIONAL)); - TEST_NNG_PASS( + NUTS_PASS( nng_dialer_set_string(d, NNG_OPT_TLS_SERVER_NAME, "example.com")); - TEST_NNG_PASS(nng_dialer_start(d, 0)); + NUTS_PASS(nng_dialer_start(d, 0)); nng_msleep(100); - TEST_NNG_PASS(nng_send(s1, "hello", 6, 0)); - TEST_NNG_PASS(nng_recvmsg(s2, &msg, 0)); - TEST_ASSERT(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 6); - TEST_STREQUAL(nng_msg_body(msg), "hello"); + NUTS_PASS(nng_send(s1, "hello", 6, 0)); + NUTS_PASS(nng_recvmsg(s2, &msg, 0)); + NUTS_ASSERT(msg != NULL); + NUTS_TRUE(nng_msg_len(msg) == 6); + NUTS_MATCH(nng_msg_body(msg), "hello"); p = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p) > 0); - TEST_NNG_PASS(nng_pipe_get_bool(p, NNG_OPT_TLS_VERIFIED, &b)); - TEST_CHECK(b == false); + NUTS_TRUE(nng_pipe_id(p) > 0); + NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TLS_VERIFIED, &b)); + NUTS_TRUE(b == false); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } static void @@ -245,39 +235,39 @@ test_verify_works(void) bool b; uint16_t port; - TEST_NNG_PASS(nng_pair_open(&s1)); - TEST_NNG_PASS(nng_pair_open(&s2)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 5000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 5000)); - port = testutil_next_port(); + NUTS_PASS(nng_pair_open(&s1)); + NUTS_PASS(nng_pair_open(&s2)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 5000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 5000)); + port = nuts_next_port(); (void) snprintf(addr, sizeof(addr), "wss4://:%u/test", port); - TEST_NNG_PASS(nng_listener_create(&l, s1, addr)); + NUTS_PASS(nng_listener_create(&l, s1, addr)); init_listener_wss_file(l); - TEST_NNG_PASS(nng_listener_start(l, 0)); + NUTS_PASS(nng_listener_start(l, 0)); // It can take a bit for the listener to start up in clouds. nng_msleep(200); snprintf(addr, sizeof(addr), "wss4://localhost:%u/test", port); - TEST_NNG_PASS(nng_dialer_create(&d, s2, addr)); + NUTS_PASS(nng_dialer_create(&d, s2, addr)); init_dialer_wss_file(d); - TEST_NNG_PASS(nng_dialer_start(d, 0)); + NUTS_PASS(nng_dialer_start(d, 0)); nng_msleep(100); - TEST_NNG_PASS(nng_send(s1, "hello", 6, 0)); - TEST_NNG_PASS(nng_recvmsg(s2, &msg, 0)); - TEST_ASSERT(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 6); - TEST_STREQUAL(nng_msg_body(msg), "hello"); + NUTS_PASS(nng_send(s1, "hello", 6, 0)); + NUTS_PASS(nng_recvmsg(s2, &msg, 0)); + NUTS_ASSERT(msg != NULL); + NUTS_TRUE(nng_msg_len(msg) == 6); + NUTS_MATCH(nng_msg_body(msg), "hello"); p = nng_msg_get_pipe(msg); - TEST_CHECK(nng_pipe_id(p) > 0); - TEST_NNG_PASS(nng_pipe_get_bool(p, NNG_OPT_TLS_VERIFIED, &b)); - TEST_CHECK(b == true); + NUTS_TRUE(nng_pipe_id(p) > 0); + NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TLS_VERIFIED, &b)); + NUTS_TRUE(b == true); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s2)); } static void @@ -285,24 +275,20 @@ test_cert_file_not_present(void) { nng_socket s1; nng_listener l; - char addr[NNG_MAXADDRLEN]; - uint16_t port; - TEST_NNG_PASS(nng_pair_open(&s1)); - port = testutil_next_port(); - (void) snprintf(addr, sizeof(addr), "wss4://:%u/test", port); - TEST_NNG_PASS(nng_listener_create(&l, s1, addr)); + NUTS_PASS(nng_pair_open(&s1)); + NUTS_PASS(nng_listener_create(&l, s1, "wss4://:0/test")); - TEST_NNG_FAIL(nng_listener_set_string( - l, NNG_OPT_TLS_CERT_KEY_FILE, "no-such-file.pem"), + NUTS_FAIL(nng_listener_set_string( + l, NNG_OPT_TLS_CERT_KEY_FILE, "no-such-file.pem"), NNG_ENOENT); - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_close(s1)); } #endif -TEST_LIST = { +NUTS_TESTS = { #ifdef NNG_SUPP_TLS { "wss file invalid verify", test_invalid_verify }, { "wss file no verify", test_no_verify }, diff --git a/src/testing/CMakeLists.txt b/src/testing/CMakeLists.txt new file mode 100644 index 000000000..221ca8f28 --- /dev/null +++ b/src/testing/CMakeLists.txt @@ -0,0 +1,19 @@ +# +# Copyright 2020 Staysail Systems, Inc. +# +# This software is supplied under the terms of the MIT License, a +# copy of which should be located in the distribution where this +# file was obtained (LICENSE.txt). A copy of the license may also be +# found online at https://opensource.org/licenses/MIT. +# + +# Protocols. +nng_directory(testing`) + +target_sources(nng_testing PRIVATE + certs.c + marry.c + streams.c + util.c) + +target_include_directories(nng_testing PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/acutest.h b/src/testing/acutest.h similarity index 100% rename from tests/acutest.h rename to src/testing/acutest.h diff --git a/src/testing/certs.c b/src/testing/certs.c new file mode 100644 index 000000000..e2ed94a0c --- /dev/null +++ b/src/testing/certs.c @@ -0,0 +1,126 @@ +// +// Copyright 2020 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +// TLS certificates. These are pre-generated, and should not be used outside +// of these test cases. They are all using RSA 2048 with SHA256. +// All certs are signed by the root key (making the root self-signed). +// They all expire in about 100 years -- so we don't have to worry about +// expiration. +// +// The server cert uses CN 127.0.0.1. +// +// Country = XX +// State = Utopia +// Locality = Paradise +// Organization = NNG Tests, Inc. +// + +const char *nuts_server_key = + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEAyPdnRbMrQj9902TGQsmMbG6xTSl9XKbJr55BcnyZifsrqA7B\n" + "bNSkndVw9Qq+OJQIDBTfRhGdG+o9j3h6SDVvIb62fWtwJ5Fe0eUmeYwPc1PKQzOm\n" + "MFlMYekXiZsx60yu5LeuUhGlb84+csImH+m3NbutInPJcStSq0WfSV6VNk6DN353\n" + "5ex66zV2Ms6ikys1vCC434YqIpe1VxUh+IC2widJcLDCxmmJt3TOlx5f9OcKMkxu\n" + "H4fMAzgjIEpIrUjdb19CGNVvsNrEEB2CShBMgBdqMaAnKFxpKgfzS0JFulxRGNtp\n" + "srweki+j+a4sJXTv40kELkRQS6uB6wWZNjcPywIDAQABAoIBAQCGSUsot+BgFCzv\n" + "5JbWafb7Pbwb421xS8HZJ9Zzue6e1McHNVTqc+zLyqQAGX2iMMhvykKnf32L+anJ\n" + "BKgxOANaeSVYCUKYLfs+JfDfp0druMGexhR2mjT/99FSkfF5WXREQLiq/j+dxiLU\n" + "bActq+5QaWf3bYddp6VF7O/TBvCNqBfD0+S0o0wtBdvxXItrKPTD5iKr9JfLWdAt\n" + "YNAk2QgFywFtY5zc2wt4queghF9GHeBzzZCuVj9QvPA4WdVq0mePaPTmvTYQUD0j\n" + "GT6X5j9JhqCwfh7trb/HfkmLHwwc62zPDFps+Dxao80+vss5b/EYZ4zY3S/K3vpG\n" + "f/e42S2BAoGBAP51HQYFJGC/wsNtOcX8RtXnRo8eYmyboH6MtBFrZxWl6ERigKCN\n" + "5Tjni7EI3nwi3ONg0ENPFkoQ8h0bcVFS7iW5kz5te73WaOFtpkU9rmuFDUz37eLP\n" + "d+JLZ5Kwfn2FM9HoiSAZAHowE0MIlmmIEXSnFtqA2zzorPQLO/4QlR+VAoGBAMov\n" + "R0yaHg3qPlxmCNyLXKiGaGNzvsvWjYw825uCGmVZfhzDhOiCFMaMb51BS5Uw/gwm\n" + "zHxmJjoqak8JjxaQ1qKPoeY1TJ5ps1+TRq9Wzm2/zGqJHOXnRPlqwBQ6AFllAMgt\n" + "Rlp5uqb8QJ+YEo6/1kdGhw9kZWCZEEue6MNQjxnfAoGARLkUkZ+p54di7qz9QX+V\n" + "EghYgibOpk6R1hviNiIvwSUByhZgbvxjwC6pB7NBg31W8wIevU8K0g4plbrnq/Md\n" + "5opsPhwLo4XY5albkq/J/7f7k6ISWYN2+WMsIe4Q+42SJUsMXeLiwh1h1mTnWrEp\n" + "JbxK69CJZbXhoDe4iDGqVNECgYAjlgS3n9ywWE1XmAHxR3osk1OmRYYMfJv3VfLV\n" + "QSYCNqkyyNsIzXR4qdkvVYHHJZNhcibFsnkB/dsuRCFyOFX+0McPLMxqiXIv3U0w\n" + "qVe2C28gRTfX40fJmpdqN/c9xMBJe2aJoClRIM8DCBIkG/HMI8a719DcGrS6iqKv\n" + "VeuKAwKBgEgD+KWW1KtoSjCBlS0NP8HjC/Rq7j99YhKE6b9h2slIa7JTO8RZKCa0\n" + "qbuomdUeJA3R8h+5CFkEKWqO2/0+dUdLNOjG+CaTFHaUJevzHOzIjpn+VsfCLV13\n" + "yupGzHG+tGtdrWgLn9Dzdp67cDfSnsSh+KODPECAAFfo+wPvD8DS\n" + "-----END RSA PRIVATE KEY-----\n"; + +const char *nuts_server_crt = + "-----BEGIN CERTIFICATE-----\n" + "MIIDRzCCAi8CFCOIJGs6plMawgBYdDuCRV7UuJuyMA0GCSqGSIb3DQEBCwUAMF8x\n" + "CzAJBgNVBAYTAlhYMQ8wDQYDVQQIDAZVdG9waWExETAPBgNVBAcMCFBhcmFkaXNl\n" + "MRgwFgYDVQQKDA9OTkcgVGVzdHMsIEluYy4xEjAQBgNVBAMMCWxvY2FsaG9zdDAg\n" + "Fw0yMDA1MjMyMzMxMTlaGA8yMTIwMDQyOTIzMzExOVowXzELMAkGA1UEBhMCWFgx\n" + "DzANBgNVBAgMBlV0b3BpYTERMA8GA1UEBwwIUGFyYWRpc2UxGDAWBgNVBAoMD05O\n" + "RyBUZXN0cywgSW5jLjESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B\n" + "AQEFAAOCAQ8AMIIBCgKCAQEAyPdnRbMrQj9902TGQsmMbG6xTSl9XKbJr55BcnyZ\n" + "ifsrqA7BbNSkndVw9Qq+OJQIDBTfRhGdG+o9j3h6SDVvIb62fWtwJ5Fe0eUmeYwP\n" + "c1PKQzOmMFlMYekXiZsx60yu5LeuUhGlb84+csImH+m3NbutInPJcStSq0WfSV6V\n" + "Nk6DN3535ex66zV2Ms6ikys1vCC434YqIpe1VxUh+IC2widJcLDCxmmJt3TOlx5f\n" + "9OcKMkxuH4fMAzgjIEpIrUjdb19CGNVvsNrEEB2CShBMgBdqMaAnKFxpKgfzS0JF\n" + "ulxRGNtpsrweki+j+a4sJXTv40kELkRQS6uB6wWZNjcPywIDAQABMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQA86Fqrd4aiih6R3fwiMLwV6IQJv+u5rQeqA4D0xu6v6siP42SJ\n" + "YMaI2DkNGrWdSFVSHUK/efceCrhnMlW7VM8I1cyl2F/qKMfnT72cxqqquiKtQKdT\n" + "NDTzv61QMUP9n86HxMzGS7jg0Pknu55BsIRNK6ndDvI3D/K/rzZs4xbqWSSfNfQs\n" + "fNFBbOuDrkS6/1h3p8SY1uPM18WLVv3GO2T3aeNMHn7YJAKSn+sfaxzAPyPIK3UT\n" + "W8ecGQSHOqBJJQELyUfMu7lx/FCYKUhN7/1uhU5Qf1pCR8hkIMegtqr64yVBNMOn\n" + "248fuiHbs9BRknuA/PqjxIDDZTwtDrfVSO/S\n" + "-----END CERTIFICATE-----\n"; + +const char *nuts_client_key = + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEArohAOr7gv5aNpTEviOPPBJ2fArUX2EajMEtU9tF8H/TTlcMB\n" + "oy+vYoyNe56jc7CWUfO0S54rg0XaQ7HTI5EWueSR9wrEVK4q+Zg6x1dwr4k5SxD5\n" + "NcStDXzUjiCi9ygZRxpOUz8jRhKZFENuCdLxSN7E2vuOIU9IR5FpatMlsD33rTOX\n" + "Pgyx7qNpBj63ZCzY3b09zWBAXc/sLd1mxjlNP/LbtVLrFeIT1j6Gv0UgzxIcEjQ3\n" + "vybV/EYK7THn7jLhudEa+7fC9jfzwozbuszfEje/U0h0/DF4coGyIQTfDh6Wmk3x\n" + "5YB2QaI/0jwn8cwracKGtNO+vLqV4yUWZxf5xwIDAQABAoIBADXIEJrJpPIEz6Me\n" + "0/oH0QwoEg7AhReFNNY18HmaNfiW9fhJPiDuGcpxa0uzp8SHntqkEWPX2qq6BLcl\n" + "fd2Q4QLpdz08GSHLBb0h9sLko/nDfF8wXMr/zx+/3rPpRK6KsbdiWM54P0NhicBf\n" + "wvHOCcIdu2WLbNHA35IGMgjUBeIXxAsje63RBS3Dd6RnASxF7bbC/GXiUouQnos1\n" + "VSLoR6fLQQYlrMOAJU3ruPvMRwkrgaHQ1jl3PL4ilZMuvt7LSAi/KUDKMLRHdLNe\n" + "tMPITE5CvQ/rBhiUHMsTn1Xb2/jmSuJieJtG2fEDmLFuYZMUFMg1XfQ+ZC9cDCGI\n" + "wiEYUbkCgYEA1NoKnHp7Zmc2AK1J78uYByEwr8z2nAYZNq5LFeKuCd4rky6v385x\n" + "IjIYhvPLiGXw/lDfF1T15lHHo2FDAQqDa2rbEe+ycDC7Qa3eJjcsN284n1RM2pl+\n" + "iNyyhS09YVadelBxWsMqnwdDlf5lrSa7DW1+/u/z2iAw8lGka8XpFpsCgYEA0emd\n" + "sYqNivonQFEqJxi2kGTBjX8HNEjeF9tTLuAAg0hjhbW4i1v3JsekW9thbG436THa\n" + "4zWUBmcaEwx0iTD1dqM+d+PbN/4vxoRx9kWQJicfR+sa6eJiwL5UmiqDdX4to5z9\n" + "MbahemNBzYybr7lcvw+RbL91Fr/z3GooDM9rxkUCgYAuF8mUeTGfy1n2a5BHTV9u\n" + "q9FPQKNmxitPnA7GfoARwvrMtJ+BZ8M4FIEbOFArCWhWqkylUNCvP6ZryvQnlY9A\n" + "A7PM/os1oFfssSoaPHhmyL8KQcciz3qHSMOf81wHaCpSAnmJnhnstjX8lUqPZIO9\n" + "NKj7rBqycaYn02Y3sHP5YQKBgQDQxOQNW5uCiWDYWuDtmWqZGVxW+euUWJRqbbvB\n" + "dw+LgkdZCG7OS1z3uL8CjKHMUaJRzz+/kd3ysEACifStLYAzyg+q9XdlrOyfJ8Kg\n" + "CHdhOq+lu3I9Aubsg19pJLcx95g0jUJUWysmqekcIagFkPlpHHaqDZDKW4aRxRKo\n" + "CvNJcQKBgA9DB8OzHA/gp8TztxUZu8hAVfehLxVORquFvMRF0cr8uxjbu/6sDhzc\n" + "TRUkXRUe4DGxxMzAd+1SF/IWlcuZlfcuZrytH1hbjmrN8H30y+yGXFsSGCI/rudk\n" + "rLXNS+vWEeuOV8lQuQY0fkokmxnmhkPDMXra5/3KrVMzm3ZNF5N8\n" + "-----END RSA PRIVATE KEY-----\n"; + +const char *nuts_client_crt = + "-----BEGIN CERTIFICATE-----\n" + "MIIDdzCCAl8CFEzqJgxMn+OTdw7RjLtz8FlhrQ0HMA0GCSqGSIb3DQEBCwUAMHcx\n" + "CzAJBgNVBAYTAlhYMQ8wDQYDVQQIDAZVdG9waWExETAPBgNVBAcMCFBhcmFkaXNl\n" + "MRgwFgYDVQQKDA9OTkcgVGVzdHMsIEluYy4xFDASBgNVBAsMC0NsaWVudCBDZXJ0\n" + "MRQwEgYDVQQDDAtUZXN0IENsaWVudDAgFw0yMDA1MjMxODQ1MjZaGA8yMTIwMDQy\n" + "OTE4NDUyNlowdzELMAkGA1UEBhMCWFgxDzANBgNVBAgMBlV0b3BpYTERMA8GA1UE\n" + "BwwIUGFyYWRpc2UxGDAWBgNVBAoMD05ORyBUZXN0cywgSW5jLjEUMBIGA1UECwwL\n" + "Q2xpZW50IENlcnQxFDASBgNVBAMMC1Rlc3QgQ2xpZW50MIIBIjANBgkqhkiG9w0B\n" + "AQEFAAOCAQ8AMIIBCgKCAQEAoHWEJXvfaHDM33AyYbJHggKOllgcvwscEnsXztIt\n" + "OK+0jO6SRFSbtye1cjtrkGVCYBjeWMcOdEiNB0pw3PceVpF/Q9ifCuaSYsJA3sPH\n" + "wi/A3G7ZTe2KCH1i26I4zyw1Bn5AzkaDDXsaht2S9PEqIBCbWo/V1pWiv4QdYmLT\n" + "/UFYJDxFpFC3iKVC+BDv9yzziyaFXOYsQJXcaq8ZRD79bNV5NFfzUih8RoasIdD4\n" + "LoamBSbbr5XzstTISus+wu1JDKgKkYMJhLGA/tdU/eOKuTDx89yO4ba23W74xeqW\n" + "JYe0wPy+krmeB5M7UA7jIvg1JXhYACxujhieMp7wcC3FPwIDAQABMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQCMTQ89YnD19bCGIdUl/z6w2yx1x1kvTYHT+SzhUprsgiuS3KT1\n" + "RZNhjf5U3Yu+B6SrJCLuylv+L2zQfmHogp3lV7bayOA7r/rVy5fdmHS+Ei1w6LDL\n" + "t8jayiRMPG4VCgaG486yI73PFpK5DXnyFqSd23TlWvNoNeVag5gjlhzG+mHZBSB2\n" + "ExpGY3SPxrKSzDqIITVPVgzjW25N8qtgLXC6HODDiViNYq1nmuoS4O80NIYAPPs6\n" + "sxUMa5kT+zc17q57ZcgNq/sSGI3BU4b/E/8ntIwiui2xWSf/4JR6xtanih8uY5Pu\n" + "QTgg9qTtFgtu4WWUP7JhreoINTw6O4/g5Z18\n" + "-----END CERTIFICATE-----\n"; diff --git a/src/testing/marry.c b/src/testing/marry.c new file mode 100644 index 000000000..c0328df93 --- /dev/null +++ b/src/testing/marry.c @@ -0,0 +1,312 @@ +// +// Copyright 2020 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +#ifdef _WIN32 + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#include + +#define TEST_NO_MAIN +#include "nuts.h" + +void +nuts_scratch_addr(const char *scheme, size_t sz, char *addr) +{ + if ((strcmp(scheme, "inproc") == 0) || + (strcmp(scheme, "abstract") == 0)) { + (void) snprintf(addr, sz, "%s://nuts%04x%04x%04x%04x", scheme, + nng_random(), nng_random(), nng_random(), nng_random()); + return; + } + + if ((strncmp(scheme, "tcp", 3) == 0) || + (strncmp(scheme, "tls", 3) == 0)) { + (void) snprintf( + addr, sz, "%s://127.0.0.1:%u", scheme, nuts_next_port()); + return; + } + + if (strncmp(scheme, "ws", 2) == 0) { + (void) snprintf(addr, sz, + "%s://127.0.0.1:%u/nuts%04x%04x%04x%04x", scheme, + nuts_next_port(), nng_random(), nng_random(), nng_random(), + nng_random()); + return; + } + + if ((strncmp(scheme, "ipc", 3) == 0) || + (strncmp(scheme, "unix", 4) == 0)) { +#ifdef _WIN32 + // Windows doesn't place IPC names in the filesystem. + (void) snprintf(addr, sz, "%s://nuts%04x%04x%04x%04x", scheme, + nng_random(), nng_random(), nng_random(), nng_random()); + return; +#else + char *tmpdir; + + if (((tmpdir = getenv("TMPDIR")) == NULL) && + ((tmpdir = getenv("TEMP")) == NULL) && + ((tmpdir = getenv("TMP")) == NULL)) { + tmpdir = "/tmp"; + } + + (void) snprintf(addr, sz, "%s://%s/nuts%04x%04x%04x%04x", + scheme, tmpdir, nng_random(), nng_random(), nng_random(), + nng_random()); + return; +#endif + } + + // We should not be here. + abort(); +} + +// nuts_next_port returns a "next" allocation port. +// Ports are chosen by starting from a random point within a +// range (normally 38000-40000, but other good places to choose +// might be 36000-37000, 42000-43000, 45000-47000, 48000-49000. +// These are non-ephemeral ports. Successive calls to this function +// will return the next port in the range (wrapping). This works even +// across process boundaries, as the range is tracked in a file named +// by $TEST_PORT_FILE. The range of ports can be configured by using +// $TEST_PORT_RANGE (the range is specified as "lo:hi" where the actual +// port will be in the range [lo,hi). +uint16_t +nuts_next_port(void) +{ + char * name; + FILE * f; + uint16_t port; + uint16_t base; + uint16_t end; + char * str; +#ifdef _WIN32 + OVERLAPPED olp; + HANDLE h; +#endif + + if ((name = getenv("NUTS_PORT_FILE")) == NULL) { + name = ".nuts_ports"; + } + if (((str = getenv("NUTS_PORT_RANGE")) == NULL) || + ((sscanf(str, "%hu:%hu", &base, &end)) != 1) || + ((int) end - (int) base) < 1) { + base = 38000; + end = 40000; + } + + if (((f = fopen(name, "r+")) == NULL) && + ((f = fopen(name, "w+")) == NULL)) { + return (0); + } + (void) fseek(f, 0, SEEK_SET); + +#ifdef _WIN32 + h = (HANDLE) _get_osfhandle(_fileno(f)); + + // This contains the offset information for LockFileEx. + ZeroMemory(&olp, sizeof(olp)); + + if (LockFileEx(h, LOCKFILE_EXCLUSIVE_LOCK, 0, MAXDWORD, MAXDWORD, + &olp) == FALSE) { + fclose(f); + return (0); + } +#else + if (lockf(fileno(f), 0, F_LOCK) != 0) { + (void) fclose(f); + return (0); + } +#endif + if (fscanf(f, "%hu", &port) != 1) { + unsigned seed = (unsigned) time(NULL); + +#ifdef _WIN32 + port = base + rand_s(&seed) % (end - base); +#else + port = base + rand_r(&seed) % (end - base); +#endif + } + port++; + if ((port < base) || (port >= (base + end))) { + port = base; + } + +#ifdef _WIN32 + fseek(f, 0, SEEK_SET); + SetEndOfFile(h); + (void) fprintf(f, "%u", port); + ZeroMemory(&olp, sizeof(olp)); + (void) UnlockFileEx(h, 0, MAXDWORD, MAXDWORD, &olp); +#else + fseek(f, 0, SEEK_SET); + if (ftruncate(fileno(f), 0) != 0) { + (void) fclose(f); + return (0); + } + + (void) fprintf(f, "%u", port); + (void) lockf(fileno(f), 0, F_ULOCK); + +#endif + (void) fclose(f); + return (port); +} + +struct marriage_notice { + nng_mtx *mx; + nng_cv * cv; + int s1; + int s2; + int cnt1; + int cnt2; + nng_pipe p1; + nng_pipe p2; +}; + +static void +married(nng_pipe p, nng_pipe_ev ev, void *arg) +{ + struct marriage_notice *notice = arg; + (void) ev; + + nng_mtx_lock(notice->mx); + if (nng_socket_id(nng_pipe_socket(p)) == notice->s1) { + notice->cnt1++; + notice->p1 = p; + } else if (nng_socket_id(nng_pipe_socket(p)) == notice->s2) { + notice->cnt2++; + notice->p2 = p; + } + nng_cv_wake(notice->cv); + nng_mtx_unlock(notice->mx); +} + +int +nuts_marry(nng_socket s1, nng_socket s2) +{ + return (nuts_marry_ex(s1, s2, NULL, NULL, NULL)); +} + +// NB: This function is always called with sufficient space to +// hold the resulting expansion. +static void +replace_port_zero(const char *addr, char *buf, int port) +{ + int i; + int j; + bool colon; + char c; + + for (i = 0, j = 0; (c = addr[i]) != '\0'; i++) { + + if (colon && c == '0') { + char num[16]; + (void) snprintf(num, sizeof(num), "%d", port); + memcpy(&buf[j], num, strlen(num)); + j += (int) strlen(num); + colon = false; + continue; + } + colon = c == ':'; + buf[j++] = c; + } + buf[j] = '\0'; +} + +int +nuts_marry_ex( + nng_socket s1, nng_socket s2, const char *url, nng_pipe *p1, nng_pipe *p2) +{ + struct marriage_notice note; + nng_time timeout; + int rv; + char addr[64]; + nng_listener l; + int port; + + if (url == NULL) { + (void) snprintf(addr, sizeof(addr), + "inproc://marry%04x%04x%04x%04x", nng_random(), + nng_random(), nng_random(), nng_random()); + url = addr; + } + + note.cnt1 = 0; + note.cnt2 = 0; + note.s1 = nng_socket_id(s1); + note.s2 = nng_socket_id(s2); + timeout = nng_clock() + 1000; // 1 second + + if (((rv = nng_mtx_alloc(¬e.mx)) != 0) || + ((rv = nng_cv_alloc(¬e.cv, note.mx)) != 0) || + ((rv = nng_pipe_notify( + s1, NNG_PIPE_EV_ADD_POST, married, ¬e)) != 0) || + ((rv = nng_pipe_notify( + s2, NNG_PIPE_EV_ADD_POST, married, ¬e)) != 0) || + ((rv = nng_listen(s1, url, &l, 0)) != 0)) { + goto done; + } + + // If a TCP port of zero was selected, let's ask for the actual + // port bound. + if ((strstr(url, ":0") != NULL) && + (nng_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port) == 0) && + (port > 0)) { + replace_port_zero(url, addr, port); + url = addr; + } + if ((rv = nng_dial(s2, url, NULL, 0)) != 0) { + goto done; + } + + nng_mtx_lock(note.mx); + while ((note.cnt1 == 0) || (note.cnt2 == 0)) { + if ((rv = nng_cv_until(note.cv, timeout)) != 0) { + break; + } + } + nng_mtx_unlock(note.mx); + if (p1 != NULL) { + *p1 = note.p1; + } + if (p2 != NULL) { + *p2 = note.p2; + } + +done: + nng_pipe_notify(s1, NNG_PIPE_EV_ADD_POST, NULL, NULL); + nng_pipe_notify(s2, NNG_PIPE_EV_ADD_POST, NULL, NULL); + if (note.cv != NULL) { + nng_cv_free(note.cv); + } + if (note.mx != NULL) { + nng_mtx_free(note.mx); + } + return (rv); +} diff --git a/src/testing/nuts.h b/src/testing/nuts.h new file mode 100644 index 000000000..1d55ae85c --- /dev/null +++ b/src/testing/nuts.h @@ -0,0 +1,206 @@ +// +// Copyright 2020 Staysail Systems, Inc. +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +// NUTS - NNG Unit Test Support +// +// This is the NNG testing support library. It is used in the NNG +// project to support the various unit tests. It should not be used +// in other projects, and no guarantees are made about interface +// stability, etc. + +#ifndef NNG_TESTING_NUTS_H +#define NNG_TESTING_NUTS_H + +#include "acutest.h" + +#include +#include +#include + +// The following headers are provided for test code convenience. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// nuts_clock returns the current time in milliseconds. +// The reference clock may be any point in the past (typically since +// the program started running.) +extern uint64_t nuts_clock(void); + +// nuts_poll_fd tests if the given file descriptor polls as readable. +extern bool nuts_poll_fd(int); + +// nuts_be16 converts native and big-endian words. +extern uint16_t nuts_be16(uint16_t); + +// nuts_be32 converts native and big-endian double-words. +extern uint32_t nuts_be32(uint32_t); + +// nuts_sleep sleeps the specified number of milliseconds. +extern void nuts_sleep(int); + +// nuts_next_port returns a new port number (presumably unique) +extern uint16_t nuts_next_port(void); + +// nuts_scratch_addr makes a scratch address for the given scheme. +// The address buffer must be supplied, and the size should be at least +// 64 bytes to ensure no truncation occurs. +extern void nuts_scratch_addr(const char *, size_t, char *); + +// nuts_marry connects two sockets using inproc. It uses socket +// pipe hooks to ensure that it does not return before both sockets +// are fully connected. +extern int nuts_marry(nng_socket, nng_socket); + +// nuts_marry_ex is like nuts_marry, but returns the pipes that +// were connected, and includes an optional URL. The pipe pointers and the +// URL may be NULL if not needed. If a port number is part of the URL +// and is zero (i.e. if the URL contains :0) then listen is done first, +// and the actual bound port will be used for the client. +extern int nuts_marry_ex( + nng_socket, nng_socket, const char *, nng_pipe *, nng_pipe *); + +// nuts_stream_send_start and nuts_stream_recv_start are used +// to initiate transfers asynchronously. They return a token which can +// be used with nuts_stream_wait, which will return the result of +// the operation (0 on success, an NNG error number otherwise.) +extern void *nuts_stream_send_start(nng_stream *, void *, size_t); +extern void *nuts_stream_recv_start(nng_stream *, void *, size_t); +extern int nuts_stream_wait(void *); + +// These are TLS certificates. The client and server are signed with the +// root. The server uses CN 127.0.0.1. Other details are bogus, but +// designed to prevent accidental use elsewhere. +extern const char *nuts_server_key; +extern const char *nuts_server_crt; +extern const char *nuts_client_key; +extern const char *nuts_client_crt; + +// NUTS_SUCCESS tests for NNG success. It reports the failure if it +// did not. +#define NUTS_PASS(cond) \ + do { \ + int result_ = (cond); \ + TEST_CHECK_(result_ == 0, "%s succeeds", #cond); \ + TEST_MSG("%s: expected success, got %s (%d)", #cond, \ + nng_strerror(result_), result_); \ + } while (0) + +// NUTS_ERROR tests for a specific NNG error code. +#define NUTS_FAIL(cond, expect) \ + do { \ + int result_ = (cond); \ + TEST_CHECK_(result_ == (expect), "%s fails with %s", #cond, \ + nng_strerror(expect)); \ + TEST_MSG("%s: expected %s (%d), got %s (%d)", #cond, \ + nng_strerror(expect), expect, nng_strerror(result_), \ + result_); \ + } while (0) + +#define NUTS_SEND(sock, string) \ + NUTS_PASS(nng_send(sock, string, strlen(string) + 1, 0)) + +#define NUTS_RECV(sock, string) \ + do { \ + char buf_[64]; \ + size_t sz_ = sizeof(buf_); \ + int rv_ = nng_recv(sock, &buf_, &sz_, 0); \ + TEST_CHECK_( \ + rv_ == 0, "nng_recv (%d %s)", rv_, nng_strerror(rv_)); \ + TEST_CHECK_(sz_ == strlen(string) + 1, "length %d want %d", \ + sz_, strlen(string) + 1); \ + buf_[sizeof(buf_) - 1] = '\0'; \ + TEST_CHECK_( \ + strcmp(string, buf_) == 0, "%s == %s", string, buf_); \ + } while (0) + +#define NUTS_MATCH(s1, s2) \ + do { \ + TEST_CHECK_(strcmp(s1, s2) == 0, "%s == %s", s1, s2); \ + } while (0) + +#define NUTS_NULL(x) \ + do { \ + TEST_CHECK_((x) == NULL, "%p == NULL", x); \ + } while (0) + +#define NUTS_ADDR(var, scheme) \ + do { \ + static char nuts_addr_[64]; \ + nuts_scratch_addr(scheme, sizeof(nuts_addr_), nuts_addr_); \ + (var) = nuts_addr_; \ + } while (0) + +#define NUTS_OPEN(sock) NUTS_PASS(nng_pair1_open(&(sock))) + +#define NUTS_CLOSE(sock) NUTS_PASS(nng_close(sock)) + +#define NUTS_SLEEP(ms) nuts_sleep(ms) + +#define NUTS_CLOCK(var) \ + do { \ + (var) = nuts_clock(); \ + } while (0) + +#define NUTS_BEFORE(when) \ + do { \ + uint64_t nuts_t0_ = (when); \ + uint64_t nuts_t1_ = nuts_clock(); \ + TEST_CHECK_(nuts_t1_ < nuts_t0_, \ + "time before, deadline %lld, current %lld, delta %lld", \ + (long long) nuts_t0_, (long long) nuts_t1_, \ + (long long) nuts_t0_ - (long long) nuts_t1_); \ + } while (0) + +#define NUTS_AFTER(when) \ + do { \ + uint64_t nuts_t0_ = (when); \ + uint64_t nuts_t1_ = nuts_clock(); \ + TEST_CHECK_(nuts_t1_ > nuts_t0_, \ + "time after, deadline %lld, current %lld, delta %lld", \ + (long long) nuts_t0_, (long long) nuts_t1_, \ + (long long) nuts_t0_ - (long long) nuts_t1_); \ + } while (0) + +#define NUTS_MARRY(s1, s2) NUTS_PASS(nuts_marry(s1, s2)) +#define NUTS_MARRY_EX(s1, s2, url, p1, p2) \ + NUTS_PASS(nuts_marry_ex(s1, s2, url, p1, p2)) + +// Redefine some macros from acutest.h for consistency. +#define NUTS_TRUE TEST_CHECK +#define NUTS_ASSERT TEST_ASSERT +#define NUTS_CASE TEST_CASE +#define NUTS_MSG TEST_MSG + +#define NUTS_TESTS TEST_LIST + +#define NUTS_PROTO(x, y) (((x) << 4u) | (y)) + +#ifdef __cplusplus +}; +#endif + +#endif // NNG_TEST_NUTS_H diff --git a/src/testing/streams.c b/src/testing/streams.c new file mode 100644 index 000000000..d718ab76b --- /dev/null +++ b/src/testing/streams.c @@ -0,0 +1,146 @@ +// +// Copyright 2020 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +#define TEST_NO_MAIN + +#include +#include + +typedef struct { + uint8_t * base; + size_t rem; + nng_iov iov; + nng_aio * upper_aio; + nng_aio * lower_aio; + nng_stream *s; + void (*submit)(nng_stream *, nng_aio *); +} stream_xfr_t; + +static void +stream_xfr_free(stream_xfr_t *x) +{ + if (x == NULL) { + return; + } + if (x->upper_aio != NULL) { + nng_aio_free(x->upper_aio); + } + if (x->lower_aio != NULL) { + nng_aio_free(x->lower_aio); + } + nng_free(x, sizeof(*x)); +} + +static void +stream_xfr_start(stream_xfr_t *x) +{ + nng_iov iov; + iov.iov_buf = x->base; + iov.iov_len = x->rem; + + nng_aio_set_iov(x->lower_aio, 1, &iov); + x->submit(x->s, x->lower_aio); +} + +static void +stream_xfr_cb(void *arg) +{ + stream_xfr_t *x = arg; + int rv; + size_t n; + + rv = nng_aio_result(x->lower_aio); + if (rv != 0) { + nng_aio_finish(x->upper_aio, rv); + return; + } + n = nng_aio_count(x->lower_aio); + + x->rem -= n; + x->base += n; + + if (x->rem == 0) { + nng_aio_finish(x->upper_aio, 0); + return; + } + + stream_xfr_start(x); +} + +static stream_xfr_t * +stream_xfr_alloc(nng_stream *s, void (*submit)(nng_stream *, nng_aio *), + void *buf, size_t size) +{ + stream_xfr_t *x; + + if ((x = nng_alloc(size)) == NULL) { + return (NULL); + } + if (nng_aio_alloc(&x->upper_aio, NULL, NULL) != 0) { + stream_xfr_free(x); + return (NULL); + } + if (nng_aio_alloc(&x->lower_aio, stream_xfr_cb, x) != 0) { + stream_xfr_free(x); + return (NULL); + } + + // Upper should not take more than 30 seconds, lower not more than 5. + nng_aio_set_timeout(x->upper_aio, 30000); + nng_aio_set_timeout(x->lower_aio, 5000); + + nng_aio_begin(x->upper_aio); + + x->s = s; + x->rem = size; + x->base = buf; + x->submit = submit; + + return (x); +} + +int +nuts_stream_wait(stream_xfr_t *x) +{ + int rv; + if (x == NULL) { + return (NNG_ENOMEM); + } + nng_aio_wait(x->upper_aio); + rv = nng_aio_result(x->upper_aio); + stream_xfr_free(x); + return (rv); +} + +void * +nuts_stream_recv_start(nng_stream *s, void *buf, size_t size) +{ + stream_xfr_t *x; + + x = stream_xfr_alloc(s, nng_stream_recv, buf, size); + if (x == NULL) { + return (x); + } + stream_xfr_start(x); + return (x); +} + +void * +nuts_stream_send_start(nng_stream *s, void *buf, size_t size) +{ + stream_xfr_t *x; + + x = stream_xfr_alloc(s, nng_stream_send, buf, size); + if (x == NULL) { + return (x); + } + stream_xfr_start(x); + return (x); +} diff --git a/src/testing/util.c b/src/testing/util.c new file mode 100644 index 000000000..eeb70b4f9 --- /dev/null +++ b/src/testing/util.c @@ -0,0 +1,164 @@ +// +// Copyright 2020 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +#define TEST_NO_MAIN + +#ifdef _WIN32 + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include +#include +// order counts +#include +#define poll WSAPoll +#include +#else +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#include + +#if !defined(_WIN32) && !defined(CLOCK_MONOTONIC) +#include +#endif + +#include "nuts.h" + +uint64_t +nuts_clock(void) +{ +#ifdef _WIN32 + return (GetTickCount64()); +#elif defined(CLOCK_MONTONIC) + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + uint64_t val; + + val = ts.tv_sec; + val *= 1000; + val += ts.tv_nsec / 1000000; + return (val); +#else + static time_t epoch; + struct timeval tv; + + if (epoch == 0) { + epoch = time(NULL); + } + gettimeofday(&tv, NULL); + + if (tv.tv_sec < epoch) { + // Broken clock. + // This will force all other timing tests to fail + return (0); + } + tv.tv_sec -= epoch; + return ( + ((uint64_t)(tv.tv_sec) * 1000) + (uint64_t)(tv.tv_usec / 1000)); +#endif + +#ifdef _WIN32 +#else +#include +#include +#endif +} + +bool +nuts_poll_fd(int fd) +{ +#ifdef _WIN32 + struct pollfd pfd; + pfd.fd = (SOCKET) fd; + pfd.events = POLLRDNORM; + pfd.revents = 0; + + switch (WSAPoll(&pfd, 1, 0)) { + case 0: + return (false); + case 1: + return (true); + } +#else + struct pollfd pfd; + + pfd.fd = fd; + pfd.events = POLLRDNORM; + pfd.revents = 0; + + switch (poll(&pfd, 1, 0)) { + case 0: + return (false); + case 1: + return (true); + } +#endif + return (false); +} + +static bool +is_little_endian(void) +{ + uint16_t num = 0x1; + uint8_t *ptr = (uint8_t *) (void *) (&num); + return (ptr[0] == 1); +} + +uint16_t +nuts_be16(uint16_t in) +{ + if (is_little_endian()) { + in = ((in / 0x100) + ((in % 0x100) * 0x100)); + } + return (in); +} + +uint32_t +nuts_be32(uint32_t in) +{ + if (is_little_endian()) { + in = ((in >> 24u) & 0xffu) | ((in >> 8u) & 0xff00u) | + ((in << 8u) & 0xff0000u) | ((in << 24u) & 0xff000000u); + } + return (in); +} + +void +nuts_sleep(int msec) +{ +#ifdef _WIN32 + Sleep(msec); +#elif defined(CLOCK_MONOTONIC) + struct timespec ts; + + ts.tv_sec = msec / 1000; + ts.tv_nsec = (msec % 1000) * 1000000; + + // Do this in a loop, so that interrupts don't actually wake us. + while (ts.tv_sec || ts.tv_nsec) { + if (nanosleep(&ts, &ts) == 0) { + break; + } + } +#else + poll(NULL, 0, msec); +#endif +} diff --git a/src/transport/ipc/ipc_test.c b/src/transport/ipc/ipc_test.c index 3240b21d0..2fb4afa34 100644 --- a/src/transport/ipc/ipc_test.c +++ b/src/transport/ipc/ipc_test.c @@ -8,13 +8,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include -#include -#include - -#include - -#include +#include #ifdef NNG_PLATFORM_POSIX #include @@ -33,15 +27,14 @@ test_path_too_long(void) addr[255] = 0; memcpy(addr, "ipc://", strlen("ipc://")); - TEST_ASSERT(strlen(addr) == 255); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_FAIL(nng_listen(s1, addr, NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( - nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK), NNG_EADDRINVAL); + NUTS_ASSERT(strlen(addr) == 255); + NUTS_OPEN(s1); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_FAIL(nng_listen(s1, addr, NULL, 0), NNG_EADDRINVAL); + NUTS_FAIL(nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -49,16 +42,14 @@ test_ipc_dialer_perms(void) { nng_socket s; nng_dialer d; - char addr[64]; + char * addr; - testutil_scratch_addr("ipc", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s)); - TEST_NNG_PASS(nng_dialer_create(&d, s, addr)); - TEST_NNG_FAIL( + NUTS_ADDR(addr, "ipc"); + NUTS_OPEN(s); + NUTS_PASS(nng_dialer_create(&d, s, addr)); + NUTS_FAIL( nng_dialer_set_int(d, NNG_OPT_IPC_PERMISSIONS, 0444), NNG_ENOTSUP); - - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } void @@ -68,26 +59,24 @@ test_ipc_dialer_properties(void) nng_dialer d; nng_sockaddr sa; size_t z; - char addr[64]; + char *addr; - testutil_scratch_addr("ipc", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s)); - TEST_NNG_PASS(nng_dial(s, addr, &d, NNG_FLAG_NONBLOCK)); + NUTS_ADDR(addr, "ipc"); + NUTS_OPEN(s); + NUTS_PASS(nng_dial(s, addr, &d, NNG_FLAG_NONBLOCK)); // Dialers don't have local addresses. - TEST_NNG_FAIL( - nng_dialer_get_addr(d, NNG_OPT_LOCADDR, &sa), NNG_ENOTSUP); + NUTS_FAIL(nng_dialer_get_addr(d, NNG_OPT_LOCADDR, &sa), NNG_ENOTSUP); - TEST_NNG_FAIL( + NUTS_FAIL( nng_dialer_set(d, NNG_OPT_LOCADDR, &sa, sizeof(sa)), NNG_ENOTSUP); z = 8192; - TEST_NNG_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, z)); + NUTS_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, z)); z = 0; - TEST_NNG_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &z)); - TEST_CHECK(z == 8192); - TEST_NNG_FAIL(nng_dialer_set_bool(d, NNG_OPT_RAW, true), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_dialer_get_size(d, NNG_OPT_RECVMAXSZ, &z)); + NUTS_TRUE(z == 8192); + NUTS_FAIL(nng_dialer_set_bool(d, NNG_OPT_RAW, true), NNG_ENOTSUP); + NUTS_CLOSE(s); } void @@ -95,40 +84,38 @@ test_ipc_listener_perms(void) { nng_socket s; nng_listener l; - char addr[64]; + char *addr; #ifndef _WIN32 char * path; struct stat st; #endif - testutil_scratch_addr("ipc", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s)); - TEST_NNG_PASS(nng_listener_create(&l, s, addr)); + NUTS_ADDR(addr, "ipc"); + NUTS_OPEN(s); + NUTS_PASS(nng_listener_create(&l, s, addr)); #ifdef _WIN32 - TEST_NNG_FAIL(nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, 0444), + NUTS_FAIL(nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, 0444), NNG_ENOTSUP); #else path = &addr[strlen("ipc://")]; // Attempt to set invalid permissions fails. - TEST_NNG_FAIL( - nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, S_IFREG), + NUTS_FAIL(nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, S_IFREG), NNG_EINVAL); - TEST_NNG_PASS(nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, 0444)); - TEST_NNG_PASS(nng_listener_start(l, 0)); - TEST_CHECK(stat(path, &st) == 0); - TEST_CHECK((st.st_mode & 0777) == 0444); + NUTS_PASS(nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, 0444)); + NUTS_PASS(nng_listener_start(l, 0)); + NUTS_TRUE(stat(path, &st) == 0); + NUTS_TRUE((st.st_mode & 0777) == 0444); // Now that it's running, we cannot set it. - TEST_NNG_FAIL( + NUTS_FAIL( nng_listener_set_int(l, NNG_OPT_IPC_PERMISSIONS, 0644), NNG_EBUSY); #endif - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } void @@ -138,26 +125,24 @@ test_ipc_listener_properties(void) nng_listener l; nng_sockaddr sa; size_t z; - char addr[64]; + char *addr; - testutil_scratch_addr("ipc", sizeof(addr), addr); + NUTS_ADDR(addr, "ipc"); + NUTS_OPEN(s); + NUTS_PASS(nng_listen(s, addr, &l, 0)); + NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); + NUTS_TRUE(sa.s_ipc.sa_family == NNG_AF_IPC); + NUTS_MATCH(sa.s_ipc.sa_path, addr + strlen("ipc://")); - TEST_NNG_PASS(nng_pair0_open(&s)); - TEST_NNG_PASS(nng_listen(s, addr, &l, 0)); - TEST_NNG_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); - TEST_CHECK(sa.s_ipc.sa_family == NNG_AF_IPC); - TEST_STREQUAL(sa.s_ipc.sa_path, addr + strlen("ipc://")); - - TEST_NNG_FAIL(nng_listener_set(l, NNG_OPT_LOCADDR, &sa, sizeof(sa)), + NUTS_FAIL(nng_listener_set(l, NNG_OPT_LOCADDR, &sa, sizeof(sa)), NNG_EREADONLY); z = 8192; - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, z)); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, z)); z = 0; - TEST_NNG_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &z)); - TEST_CHECK(z == 8192); - TEST_NNG_FAIL( - nng_listener_set_bool(l, NNG_OPT_RAW, true), NNG_ENOTSUP); - TEST_NNG_PASS(nng_close(s)); + NUTS_PASS(nng_listener_get_size(l, NNG_OPT_RECVMAXSZ, &z)); + NUTS_TRUE(z == 8192); + NUTS_FAIL(nng_listener_set_bool(l, NNG_OPT_RAW, true), NNG_ENOTSUP); + NUTS_CLOSE(s); } void @@ -169,29 +154,28 @@ test_ipc_recv_max(void) nng_socket s1; nng_listener l; size_t sz; - char addr[64]; - - testutil_scratch_addr("ipc", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s0)); - TEST_NNG_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); - TEST_NNG_PASS(nng_listener_create(&l, s0, addr)); - TEST_NNG_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 200); - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); - TEST_NNG_PASS(nng_listener_start(l, 0)); - - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_dial(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_send(s1, msg, 95, 0)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_recv(s0, rcvbuf, &sz, 0)); - TEST_CHECK(sz == 95); - TEST_NNG_PASS(nng_send(s1, msg, 150, 0)); - TEST_NNG_FAIL(nng_recv(s0, rcvbuf, &sz, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(s0)); - TEST_NNG_PASS(nng_close(s1)); + char *addr; + + NUTS_ADDR(addr, "ipc"); + NUTS_OPEN(s0); + NUTS_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); + NUTS_PASS(nng_listener_create(&l, s0, addr)); + NUTS_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 200); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); + NUTS_PASS(nng_listener_start(l, 0)); + + NUTS_OPEN(s1); + NUTS_PASS(nng_dial(s1, addr, NULL, 0)); + NUTS_PASS(nng_send(s1, msg, 95, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_recv(s0, rcvbuf, &sz, 0)); + NUTS_TRUE(sz == 95); + NUTS_PASS(nng_send(s1, msg, 150, 0)); + NUTS_FAIL(nng_recv(s0, rcvbuf, &sz, 0), NNG_ETIMEDOUT); + NUTS_CLOSE(s0); + NUTS_CLOSE(s1); } void @@ -200,27 +184,27 @@ test_abstract_sockets(void) #ifdef NNG_HAVE_ABSTRACT_SOCKETS nng_socket s1; nng_socket s2; - char addr[64]; + char *addr; nng_pipe p1; nng_pipe p2; nng_sockaddr sa1; nng_sockaddr sa2; char * prefix = "abstract://"; - testutil_scratch_addr("abstract", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(testutil_marry_ex(s1, s2, addr, &p1, &p2)); - TEST_NNG_PASS(nng_pipe_get_addr(p1, NNG_OPT_REMADDR, &sa1)); - TEST_NNG_PASS(nng_pipe_get_addr(p2, NNG_OPT_LOCADDR, &sa2)); - TEST_CHECK(sa1.s_family == sa2.s_family); - TEST_CHECK(sa1.s_family == NNG_AF_ABSTRACT); - TEST_CHECK(sa1.s_abstract.sa_len == strlen(addr) - strlen(prefix)); - TEST_CHECK(sa2.s_abstract.sa_len == strlen(addr) - strlen(prefix)); - TEST_NNG_SEND_STR(s1, "ping"); - TEST_NNG_RECV_STR(s2, "ping"); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + + NUTS_ADDR(addr, "abstract"); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_MARRY_EX(s1, s2, addr, &p1, &p2); + NUTS_PASS(nng_pipe_get_addr(p1, NNG_OPT_REMADDR, &sa1)); + NUTS_PASS(nng_pipe_get_addr(p2, NNG_OPT_LOCADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_family == NNG_AF_ABSTRACT); + NUTS_TRUE(sa1.s_abstract.sa_len == strlen(addr) - strlen(prefix)); + NUTS_TRUE(sa2.s_abstract.sa_len == strlen(addr) - strlen(prefix)); + NUTS_SEND(s1, "ping"); + NUTS_RECV(s2, "ping"); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); #endif } @@ -238,36 +222,36 @@ test_abstract_auto_bind(void) snprintf(addr, sizeof(addr), "abstract://"); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_listen(s1, addr, &l, 0)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_listen(s1, addr, &l, 0)); - TEST_NNG_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); + NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); // Under linux there are either 8 or 5 hex characters. - TEST_CHECK(sa.s_family == NNG_AF_ABSTRACT); - TEST_CHECK(sa.s_abstract.sa_len < 10); + NUTS_TRUE(sa.s_family == NNG_AF_ABSTRACT); + NUTS_TRUE(sa.s_abstract.sa_len < 10); len = sa.s_abstract.sa_len; memcpy(name, sa.s_abstract.sa_name, len); name[len] = '\0'; - TEST_CHECK(strlen(name) == len); + NUTS_TRUE(strlen(name) == len); (void) snprintf(addr, sizeof(addr), "abstract://%s", name); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); // first send the ping - TEST_NNG_SEND_STR(s1, "ping"); - TEST_NNG_RECV_STR(s2, "ping"); + NUTS_SEND(s1, "ping"); + NUTS_RECV(s2, "ping"); - TEST_NNG_SEND_STR(s2, "pong"); - TEST_NNG_RECV_STR(s1, "pong"); + NUTS_SEND(s2, "pong"); + NUTS_RECV(s1, "pong"); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); #endif } @@ -283,15 +267,14 @@ test_abstract_too_long(void) addr[255] = 0; memcpy(addr, "abstract://", strlen("abstract://")); - TEST_ASSERT(strlen(addr) == 255); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_FAIL(nng_listen(s1, addr, NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( - nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK), NNG_EADDRINVAL); + NUTS_ASSERT(strlen(addr) == 255); + NUTS_OPEN(s1); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_FAIL(nng_listen(s1, addr, NULL, 0), NNG_EADDRINVAL); + NUTS_FAIL(nng_dial(s1, addr, NULL, NNG_FLAG_NONBLOCK), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); #endif } @@ -313,37 +296,37 @@ test_abstract_null(void) snprintf(name, sizeof(name), "a%%00b_%s", rng); snprintf(addr, sizeof(addr), "abstract://%s", name); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_listen(s1, addr, &l, 0)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_listen(s1, addr, &l, 0)); - TEST_NNG_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); + NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); // Under linux there are either 8 or 5 hex characters. - TEST_CHECK(sa.s_family == NNG_AF_ABSTRACT); - TEST_CHECK(sa.s_abstract.sa_len < 32); + NUTS_TRUE(sa.s_family == NNG_AF_ABSTRACT); + NUTS_TRUE(sa.s_abstract.sa_len < 32); len = sa.s_abstract.sa_len; - TEST_CHECK(len == 20); - TEST_CHECK(sa.s_abstract.sa_name[0] == 'a'); - TEST_CHECK(sa.s_abstract.sa_name[1] == '\0'); - TEST_CHECK(sa.s_abstract.sa_name[2] == 'b'); - TEST_CHECK(sa.s_abstract.sa_name[3] == '_'); - TEST_CHECK(memcmp(&sa.s_abstract.sa_name[4], rng, 16) == 0); + NUTS_TRUE(len == 20); + NUTS_TRUE(sa.s_abstract.sa_name[0] == 'a'); + NUTS_TRUE(sa.s_abstract.sa_name[1] == '\0'); + NUTS_TRUE(sa.s_abstract.sa_name[2] == 'b'); + NUTS_TRUE(sa.s_abstract.sa_name[3] == '_'); + NUTS_TRUE(memcmp(&sa.s_abstract.sa_name[4], rng, 16) == 0); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); // first send the ping - TEST_NNG_SEND_STR(s1, "1234"); - TEST_NNG_RECV_STR(s2, "1234"); + NUTS_SEND(s1, "1234"); + NUTS_RECV(s2, "1234"); - TEST_NNG_SEND_STR(s2, "5678"); - TEST_NNG_RECV_STR(s1, "5678"); + NUTS_SEND(s2, "5678"); + NUTS_RECV(s1, "5678"); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); #endif } @@ -368,31 +351,31 @@ test_unix_alias(void) snprintf(addr1, sizeof(addr1), "ipc:///tmp/%s", rng); snprintf(addr2, sizeof(addr2), "unix:///tmp/%s", rng); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); - TEST_NNG_PASS(nng_listen(s1, addr1, NULL, 0)); - TEST_NNG_PASS(nng_dial(s2, addr2, NULL, 0)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_listen(s1, addr1, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr2, NULL, 0)); // first send the ping - TEST_NNG_SEND_STR(s1, "ping"); - TEST_NNG_PASS(nng_recvmsg(s2, &msg, 0)); - TEST_ASSERT(msg != NULL); - TEST_CHECK(nng_msg_len(msg) == 5); - TEST_STREQUAL(nng_msg_body(msg), "ping"); + NUTS_SEND(s1, "ping"); + NUTS_PASS(nng_recvmsg(s2, &msg, 0)); + NUTS_ASSERT(msg != NULL); + NUTS_TRUE(nng_msg_len(msg) == 5); + NUTS_MATCH(nng_msg_body(msg), "ping"); p = nng_msg_get_pipe(msg); - TEST_NNG_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa1)); - TEST_NNG_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa2)); - TEST_CHECK(sa1.s_family == sa2.s_family); - TEST_CHECK(sa1.s_family == NNG_AF_IPC); - TEST_STREQUAL(sa1.s_ipc.sa_path, sa2.s_ipc.sa_path); + NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa1)); + NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa2)); + NUTS_TRUE(sa1.s_family == sa2.s_family); + NUTS_TRUE(sa1.s_family == NNG_AF_IPC); + NUTS_MATCH(sa1.s_ipc.sa_path, sa2.s_ipc.sa_path); nng_msg_free(msg); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); #endif } diff --git a/src/transport/tcp/tcp_test.c b/src/transport/tcp/tcp_test.c index 88b77ab47..d23227d7a 100644 --- a/src/transport/tcp/tcp_test.c +++ b/src/transport/tcp/tcp_test.c @@ -10,12 +10,8 @@ // found online at https://opensource.org/licenses/MIT. // -#include -#include -#include -#include -#include +#include // TCP tests. @@ -25,11 +21,10 @@ test_tcp_wild_card_connect_fail(void) nng_socket s; char addr[NNG_MAXADDRLEN]; - TEST_NNG_PASS(nng_pair0_open(&s)); - (void) snprintf( - addr, sizeof(addr), "tcp://*:%u", testutil_next_port()); - TEST_NNG_FAIL(nng_dial(s, addr, NULL, 0), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s)); + NUTS_OPEN(s); + (void) snprintf(addr, sizeof(addr), "tcp://*:%u", nuts_next_port()); + NUTS_FAIL(nng_dial(s, addr, NULL, 0), NNG_EADDRINVAL); + NUTS_CLOSE(s); } void @@ -40,17 +35,16 @@ test_tcp_wild_card_bind(void) char addr[NNG_MAXADDRLEN]; uint16_t port; - port = testutil_next_port(); + port = nuts_next_port(); - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); (void) snprintf(addr, sizeof(addr), "tcp4://*:%u", port); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - // reset port back one + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); - TEST_NNG_PASS(nng_close(s2)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_CLOSE(s2); + NUTS_CLOSE(s1); } void @@ -62,17 +56,16 @@ test_tcp_local_address_connect(void) char addr[NNG_MAXADDRLEN]; uint16_t port; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - port = testutil_next_port(); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + port = nuts_next_port(); (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); - // reset port back one + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); (void) snprintf( addr, sizeof(addr), "tcp://127.0.0.1;127.0.0.1:%u", port); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); - TEST_NNG_PASS(nng_close(s2)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_CLOSE(s2); + NUTS_CLOSE(s1); } void @@ -84,19 +77,19 @@ test_tcp_port_zero_bind(void) nng_listener l; char * addr; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair_open(&s2)); - TEST_NNG_PASS(nng_listen(s1, "tcp://127.0.0.1:0", &l, 0)); - TEST_NNG_PASS(nng_listener_get_string(l, NNG_OPT_URL, &addr)); - TEST_CHECK(memcmp(addr, "tcp://", 6) == 0); - TEST_NNG_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); - TEST_CHECK(sa.s_in.sa_family == NNG_AF_INET); - TEST_CHECK(sa.s_in.sa_port != 0); - TEST_CHECK(sa.s_in.sa_addr = testutil_htonl(0x7f000001)); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_PASS(nng_listen(s1, "tcp://127.0.0.1:0", &l, 0)); + NUTS_PASS(nng_listener_get_string(l, NNG_OPT_URL, &addr)); + NUTS_TRUE(memcmp(addr, "tcp://", 6) == 0); + NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa)); + NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET); + NUTS_TRUE(sa.s_in.sa_port != 0); + NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); nng_strfree(addr); - TEST_NNG_PASS(nng_close(s2)); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s2); + NUTS_CLOSE(s1); } void @@ -104,10 +97,10 @@ test_tcp_bad_local_interface(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_FAIL(nng_dial(s1, "tcp://bogus1;127.0.0.1:80", NULL, 0), + NUTS_OPEN(s1); + NUTS_FAIL(nng_dial(s1, "tcp://bogus1;127.0.0.1:80", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -115,10 +108,10 @@ test_tcp_non_local_address(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_FAIL(nng_dial(s1, "tcp://8.8.8.8;127.0.0.1:80", NULL, 0), + NUTS_OPEN(s1); + NUTS_FAIL(nng_dial(s1, "tcp://8.8.8.8;127.0.0.1:80", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -126,18 +119,18 @@ test_tcp_malformed_address(void) { nng_socket s1; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_FAIL( + NUTS_OPEN(s1); + NUTS_FAIL( nng_dial(s1, "tcp://127.0.0.1", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( + NUTS_FAIL( nng_dial(s1, "tcp://127.0.0.1.32", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( + NUTS_FAIL( nng_dial(s1, "tcp://127.0.x.1.32", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( + NUTS_FAIL( nng_listen(s1, "tcp://127.0.0.1.32", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_FAIL( + NUTS_FAIL( nng_listen(s1, "tcp://127.0.x.1.32", NULL, 0), NNG_EADDRINVAL); - TEST_NNG_PASS(nng_close(s1)); + NUTS_CLOSE(s1); } void @@ -148,58 +141,58 @@ test_tcp_no_delay_option(void) nng_listener l; bool v; int x; - char addr[64]; + char *addr; - testutil_scratch_addr("tcp", sizeof(addr), addr); + NUTS_ADDR(addr, "tcp"); - TEST_NNG_PASS(nng_pair0_open(&s)); + NUTS_OPEN(s); #ifndef NNG_ELIDE_DEPRECATED - TEST_NNG_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == true); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v); #endif - TEST_NNG_PASS(nng_dialer_create(&d, s, addr)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == true); - TEST_NNG_PASS(nng_dialer_set_bool(d, NNG_OPT_TCP_NODELAY, false)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == false); - TEST_NNG_FAIL( + NUTS_PASS(nng_dialer_create(&d, s, addr)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v); + NUTS_PASS(nng_dialer_set_bool(d, NNG_OPT_TCP_NODELAY, false)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v == false); + NUTS_FAIL( nng_dialer_get_int(d, NNG_OPT_TCP_NODELAY, &x), NNG_EBADTYPE); x = 0; - TEST_NNG_FAIL( + NUTS_FAIL( nng_dialer_set_int(d, NNG_OPT_TCP_NODELAY, x), NNG_EBADTYPE); // This assumes sizeof (bool) != sizeof (int) if (sizeof(bool) != sizeof(int)) { - TEST_NNG_FAIL( + NUTS_FAIL( nng_dialer_set(d, NNG_OPT_TCP_NODELAY, &x, sizeof(x)), NNG_EINVAL); } - TEST_NNG_PASS(nng_listener_create(&l, s, addr)); - TEST_NNG_PASS(nng_listener_get_bool(l, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == true); + NUTS_PASS(nng_listener_create(&l, s, addr)); + NUTS_PASS(nng_listener_get_bool(l, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v == true); x = 0; - TEST_NNG_FAIL( + NUTS_FAIL( nng_listener_set_int(l, NNG_OPT_TCP_NODELAY, x), NNG_EBADTYPE); // This assumes sizeof (bool) != sizeof (int) - TEST_NNG_FAIL(nng_listener_set(l, NNG_OPT_TCP_NODELAY, &x, sizeof(x)), + NUTS_FAIL(nng_listener_set(l, NNG_OPT_TCP_NODELAY, &x, sizeof(x)), NNG_EINVAL); - TEST_NNG_PASS(nng_dialer_close(d)); - TEST_NNG_PASS(nng_listener_close(l)); + NUTS_PASS(nng_dialer_close(d)); + NUTS_PASS(nng_listener_close(l)); // Make sure socket wide defaults apply. #ifndef NNG_ELIDE_DEPRECATED - TEST_NNG_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_NODELAY, true)); + NUTS_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_NODELAY, true)); v = false; - TEST_NNG_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == true); - TEST_NNG_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_NODELAY, false)); - TEST_NNG_PASS(nng_dialer_create(&d, s, addr)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); - TEST_CHECK(v == false); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v); + NUTS_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_NODELAY, false)); + NUTS_PASS(nng_dialer_create(&d, s, addr)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_NODELAY, &v)); + NUTS_TRUE(v == false); #endif - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } void @@ -210,48 +203,48 @@ test_tcp_keep_alive_option(void) nng_listener l; bool v; int x; - char addr[64]; + char *addr; - testutil_scratch_addr("tcp", sizeof(addr), addr); - TEST_NNG_PASS(nng_pair0_open(&s)); + NUTS_ADDR(addr, "tcp"); + NUTS_OPEN(s); #ifndef NNG_ELIDE_DEPRECATED - TEST_NNG_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == false); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v == false); #endif - TEST_NNG_PASS(nng_dialer_create(&d, s, addr)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == false); - TEST_NNG_PASS(nng_dialer_set_bool(d, NNG_OPT_TCP_KEEPALIVE, true)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == true); - TEST_NNG_FAIL( + NUTS_PASS(nng_dialer_create(&d, s, addr)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v == false); + NUTS_PASS(nng_dialer_set_bool(d, NNG_OPT_TCP_KEEPALIVE, true)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v); + NUTS_FAIL( nng_dialer_get_int(d, NNG_OPT_TCP_KEEPALIVE, &x), NNG_EBADTYPE); x = 1; - TEST_NNG_FAIL( + NUTS_FAIL( nng_dialer_set_int(d, NNG_OPT_TCP_KEEPALIVE, x), NNG_EBADTYPE); - TEST_NNG_PASS(nng_listener_create(&l, s, addr)); - TEST_NNG_PASS(nng_listener_get_bool(l, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == false); + NUTS_PASS(nng_listener_create(&l, s, addr)); + NUTS_PASS(nng_listener_get_bool(l, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v == false); x = 1; - TEST_NNG_FAIL( + NUTS_FAIL( nng_listener_set_int(l, NNG_OPT_TCP_KEEPALIVE, x), NNG_EBADTYPE); - TEST_NNG_PASS(nng_dialer_close(d)); - TEST_NNG_PASS(nng_listener_close(l)); + NUTS_PASS(nng_dialer_close(d)); + NUTS_PASS(nng_listener_close(l)); // Make sure socket wide defaults apply. #ifndef NNG_ELIDE_DEPRECATED - TEST_NNG_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_KEEPALIVE, false)); + NUTS_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_KEEPALIVE, false)); v = true; - TEST_NNG_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == false); - TEST_NNG_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_KEEPALIVE, true)); - TEST_NNG_PASS(nng_dialer_create(&d, s, addr)); - TEST_NNG_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); - TEST_CHECK(v == true); + NUTS_PASS(nng_socket_get_bool(s, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v == false); + NUTS_PASS(nng_socket_set_bool(s, NNG_OPT_TCP_KEEPALIVE, true)); + NUTS_PASS(nng_dialer_create(&d, s, addr)); + NUTS_PASS(nng_dialer_get_bool(d, NNG_OPT_TCP_KEEPALIVE, &v)); + NUTS_TRUE(v); #endif - TEST_NNG_PASS(nng_close(s)); + NUTS_CLOSE(s); } void @@ -263,32 +256,32 @@ test_tcp_recv_max(void) nng_socket s1; nng_listener l; size_t sz; - char addr[64]; - - testutil_scratch_addr("tcp", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s0)); - TEST_NNG_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); - TEST_NNG_PASS(nng_listener_create(&l, s0, addr)); - TEST_NNG_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 200); - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); - TEST_NNG_PASS(nng_listener_start(l, 0)); - - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_dial(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_send(s1, msg, 95, 0)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_recv(s0, buf, &sz, 0)); - TEST_CHECK(sz == 95); - TEST_NNG_PASS(nng_send(s1, msg, 150, 0)); - TEST_NNG_FAIL(nng_recv(s0, buf, &sz, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(s0)); - TEST_NNG_PASS(nng_close(s1)); + char *addr; + + NUTS_ADDR(addr, "tcp"); + + NUTS_OPEN(s0); + NUTS_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); + NUTS_PASS(nng_listener_create(&l, s0, addr)); + NUTS_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 200); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); + NUTS_PASS(nng_listener_start(l, 0)); + + NUTS_OPEN(s1); + NUTS_PASS(nng_dial(s1, addr, NULL, 0)); + NUTS_PASS(nng_send(s1, msg, 95, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_recv(s0, buf, &sz, 0)); + NUTS_TRUE(sz == 95); + NUTS_PASS(nng_send(s1, msg, 150, 0)); + NUTS_FAIL(nng_recv(s0, buf, &sz, 0), NNG_ETIMEDOUT); + NUTS_PASS(nng_close(s0)); + NUTS_CLOSE(s1); } -TEST_LIST = { +NUTS_TESTS = { { "tcp wild card connect fail", test_tcp_wild_card_connect_fail }, { "tcp wild card bind", test_tcp_wild_card_bind }, diff --git a/src/transport/ws/ws_test.c b/src/transport/ws/ws_test.c index f8f122a1c..7cbcd9d77 100644 --- a/src/transport/ws/ws_test.c +++ b/src/transport/ws/ws_test.c @@ -8,11 +8,7 @@ // found online at https://opensource.org/licenses/MIT. // -#include - -#include - -#include +#include static void test_ws_url_path_filters(void) @@ -21,19 +17,19 @@ test_ws_url_path_filters(void) nng_socket s2; char addr[NNG_MAXADDRLEN]; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - testutil_scratch_addr("ws", sizeof(addr), addr); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); + nuts_scratch_addr("ws", sizeof(addr), addr); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); // Now try we just remove the last character for now. // This will make the path different. addr[strlen(addr) - 1] = '\0'; - TEST_NNG_FAIL(nng_dial(s2, addr, NULL, 0), NNG_ECONNREFUSED); + NUTS_FAIL(nng_dial(s2, addr, NULL, 0), NNG_ECONNREFUSED); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } static void @@ -53,43 +49,43 @@ test_wild_card_port(void) int port2; int port3; char ws_url[128]; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); - TEST_NNG_PASS(nng_pair0_open(&s3)); - TEST_NNG_PASS(nng_pair0_open(&s4)); - TEST_NNG_PASS(nng_pair0_open(&s5)); - TEST_NNG_PASS(nng_pair0_open(&s6)); - TEST_NNG_PASS(nng_listen(s1, "ws://127.0.0.1:0/one", &l1, 0)); - TEST_NNG_PASS( + NUTS_OPEN(s1); + NUTS_OPEN(s2); + NUTS_OPEN(s3); + NUTS_OPEN(s4); + NUTS_OPEN(s5); + NUTS_OPEN(s6); + NUTS_PASS(nng_listen(s1, "ws://127.0.0.1:0/one", &l1, 0)); + NUTS_PASS( nng_listener_get_int(l1, NNG_OPT_TCP_BOUND_PORT, &port1)); - TEST_CHECK(port1 != 0); + NUTS_TRUE(port1 != 0); snprintf(ws_url, sizeof(ws_url), "ws4://127.0.0.1:%d/two", port1); - TEST_NNG_PASS(nng_listen(s2, ws_url, &l2, 0)); - TEST_NNG_PASS( + NUTS_PASS(nng_listen(s2, ws_url, &l2, 0)); + NUTS_PASS( nng_listener_get_int(l2, NNG_OPT_TCP_BOUND_PORT, &port2)); - TEST_CHECK(port1 != 0); - TEST_CHECK(port1 == port2); + NUTS_TRUE(port1 != 0); + NUTS_TRUE(port1 == port2); // Now try a different wild card port. - TEST_NNG_PASS(nng_listen(s3, "ws4://127.0.0.1:0/three", &l3, 0)); - TEST_NNG_PASS( + NUTS_PASS(nng_listen(s3, "ws4://127.0.0.1:0/three", &l3, 0)); + NUTS_PASS( nng_listener_get_int(l3, NNG_OPT_TCP_BOUND_PORT, &port3)); - TEST_CHECK(port3 != 0); - TEST_CHECK(port3 != port1); + NUTS_TRUE(port3 != 0); + NUTS_TRUE(port3 != port1); // Let's make sure can dial to each. snprintf(ws_url, sizeof(ws_url), "ws://127.0.0.1:%d/one", port1); - TEST_NNG_PASS(nng_dial(s4, ws_url, NULL, 0)); + NUTS_PASS(nng_dial(s4, ws_url, NULL, 0)); snprintf(ws_url, sizeof(ws_url), "ws://127.0.0.1:%d/two", port2); - TEST_NNG_PASS(nng_dial(s6, ws_url, NULL, 0)); + NUTS_PASS(nng_dial(s6, ws_url, NULL, 0)); snprintf(ws_url, sizeof(ws_url), "ws://127.0.0.1:%d/three", port3); - TEST_NNG_PASS(nng_dial(s6, ws_url, NULL, 0)); - - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); - TEST_NNG_PASS(nng_close(s3)); - TEST_NNG_PASS(nng_close(s4)); - TEST_NNG_PASS(nng_close(s5)); - TEST_NNG_PASS(nng_close(s6)); + NUTS_PASS(nng_dial(s6, ws_url, NULL, 0)); + + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); + NUTS_CLOSE(s3); + NUTS_CLOSE(s4); + NUTS_CLOSE(s5); + NUTS_CLOSE(s6); } static void @@ -100,21 +96,21 @@ test_wild_card_host(void) char addr[NNG_MAXADDRLEN]; uint16_t port; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - port = testutil_next_port(); + port = nuts_next_port(); // we use ws4 to ensure 127.0.0.1 binding snprintf(addr, sizeof(addr), "ws4://*:%u/test", port); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); nng_msleep(100); snprintf(addr, sizeof(addr), "ws://127.0.0.1:%u/test", port); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } static void @@ -125,21 +121,21 @@ test_empty_host(void) char addr[NNG_MAXADDRLEN]; uint16_t port; - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_pair0_open(&s2)); + NUTS_OPEN(s1); + NUTS_OPEN(s2); - port = testutil_next_port(); + port = nuts_next_port(); // we use ws4 to ensure 127.0.0.1 binding snprintf(addr, sizeof(addr), "ws4://:%u/test", port); - TEST_NNG_PASS(nng_listen(s1, addr, NULL, 0)); + NUTS_PASS(nng_listen(s1, addr, NULL, 0)); nng_msleep(100); snprintf(addr, sizeof(addr), "ws://127.0.0.1:%u/test", port); - TEST_NNG_PASS(nng_dial(s2, addr, NULL, 0)); + NUTS_PASS(nng_dial(s2, addr, NULL, 0)); - TEST_NNG_PASS(nng_close(s1)); - TEST_NNG_PASS(nng_close(s2)); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); } void @@ -151,29 +147,28 @@ test_ws_recv_max(void) nng_socket s1; nng_listener l; size_t sz; - char addr[64]; - - testutil_scratch_addr("ws", sizeof(addr), addr); - - TEST_NNG_PASS(nng_pair0_open(&s0)); - TEST_NNG_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); - TEST_NNG_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); - TEST_NNG_PASS(nng_listener_create(&l, s0, addr)); - TEST_NNG_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); - TEST_CHECK(sz == 200); - TEST_NNG_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); - TEST_NNG_PASS(nng_listener_start(l, 0)); - - TEST_NNG_PASS(nng_pair0_open(&s1)); - TEST_NNG_PASS(nng_dial(s1, addr, NULL, 0)); - TEST_NNG_PASS(nng_send(s1, msg, 95, 0)); - TEST_NNG_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); - TEST_NNG_PASS(nng_recv(s0, buf, &sz, 0)); - TEST_CHECK(sz == 95); - TEST_NNG_PASS(nng_send(s1, msg, 150, 0)); - TEST_NNG_FAIL(nng_recv(s0, buf, &sz, 0), NNG_ETIMEDOUT); - TEST_NNG_PASS(nng_close(s0)); - TEST_NNG_PASS(nng_close(s1)); + char *addr; + + NUTS_ADDR(addr, "ws"); + NUTS_OPEN(s0); + NUTS_PASS(nng_socket_set_ms(s0, NNG_OPT_RECVTIMEO, 100)); + NUTS_PASS(nng_socket_set_size(s0, NNG_OPT_RECVMAXSZ, 200)); + NUTS_PASS(nng_listener_create(&l, s0, addr)); + NUTS_PASS(nng_socket_get_size(s0, NNG_OPT_RECVMAXSZ, &sz)); + NUTS_TRUE(sz == 200); + NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, 100)); + NUTS_PASS(nng_listener_start(l, 0)); + + NUTS_OPEN(s1); + NUTS_PASS(nng_dial(s1, addr, NULL, 0)); + NUTS_PASS(nng_send(s1, msg, 95, 0)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 100)); + NUTS_PASS(nng_recv(s0, buf, &sz, 0)); + NUTS_TRUE(sz == 95); + NUTS_PASS(nng_send(s1, msg, 150, 0)); + NUTS_FAIL(nng_recv(s0, buf, &sz, 0), NNG_ETIMEDOUT); + NUTS_CLOSE(s0); + NUTS_CLOSE(s1); } TEST_LIST = { diff --git a/tests/testutil.c b/tests/testutil.c deleted file mode 100644 index ea8386b15..000000000 --- a/tests/testutil.c +++ /dev/null @@ -1,666 +0,0 @@ -// -// Copyright 2020 Staysail Systems, Inc. -// Copyright 2018 Capitar IT Group BV -// -// This software is supplied under the terms of the MIT License, a -// copy of which should be located in the distribution where this -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -#ifdef _WIN32 - -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif - -#include -#include -// order counts -#include -#define poll WSAPoll -#include -#else -#include -#include -#include -#include -#include -#include -#endif -#include -#include -#include -#include -#include - -#if !defined(_WIN32) && !defined(CLOCK_MONOTONIC) -#include -#endif - -#include "testutil.h" - -#include - -uint64_t -testutil_clock(void) -{ -#ifdef _WIN32 - return (GetTickCount64()); -#elif defined(CLOCK_MONTONIC) - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - uint64_t val; - - val = ts.tv_sec; - val *= 1000; - val += ts.tv_nsec / 1000000; - return (val); -#else - static time_t epoch; - struct timeval tv; - - if (epoch == 0) { - epoch = time(NULL); - } - gettimeofday(&tv, NULL); - - if (tv.tv_sec < epoch) { - // Broken clock. - // This will force all other timing tests to fail - return (0); - } - tv.tv_sec -= epoch; - return ( - ((uint64_t)(tv.tv_sec) * 1000) + (uint64_t)(tv.tv_usec / 1000)); -#endif - -#ifdef _WIN32 -#else -#include -#include -#endif -} - -bool -testutil_pollfd(int fd) -{ -#ifdef _WIN32 - struct pollfd pfd; - pfd.fd = (SOCKET) fd; - pfd.events = POLLRDNORM; - pfd.revents = 0; - - switch (WSAPoll(&pfd, 1, 0)) { - case 0: - return (false); - case 1: - return (true); - } -#else - struct pollfd pfd; - - pfd.fd = fd; - pfd.events = POLLRDNORM; - pfd.revents = 0; - - switch (poll(&pfd, 1, 0)) { - case 0: - return (false); - case 1: - return (true); - } -#endif - return (false); -} - -bool -testutil_is_little_endian(void) -{ - uint16_t num = 0x1; - uint8_t *ptr = (uint8_t *) (void *) (&num); - return (ptr[0] == 1); -} - -uint16_t -testutil_htons(uint16_t in) -{ - if (testutil_is_little_endian()) { - in = ((in / 0x100) + ((in % 0x100) * 0x100)); - } - return (in); -} - -uint32_t -testutil_htonl(uint32_t in) -{ - if (testutil_is_little_endian()) { - in = ((in >> 24u) & 0xffu) | ((in >> 8u) & 0xff00u) | - ((in << 8u) & 0xff0000u) | ((in << 24u) & 0xff000000u); - } - return (in); -} - -void -testutil_scratch_addr(const char *scheme, size_t sz, char *addr) -{ - if ((strcmp(scheme, "inproc") == 0) || - (strcmp(scheme, "abstract") == 0)) { - (void) snprintf(addr, sz, "%s://testutil%04x%04x%04x%04x", - scheme, nng_random(), nng_random(), nng_random(), - nng_random()); - return; - } - - if ((strncmp(scheme, "tcp", 3) == 0) || - (strncmp(scheme, "tls", 3) == 0)) { - (void) snprintf(addr, sz, "%s://127.0.0.1:%u", scheme, - testutil_next_port()); - return; - } - - if (strncmp(scheme, "ws", 2) == 0) { - (void) snprintf(addr, sz, - "%s://127.0.0.1:%u/testutil%04x%04x%04x%04x", scheme, - testutil_next_port(), nng_random(), nng_random(), - nng_random(), nng_random()); - return; - } - - if ((strncmp(scheme, "ipc", 3) == 0) || - (strncmp(scheme, "unix", 4) == 0)) { -#ifdef _WIN32 - // Windows doesn't place IPC names in the filesystem. - (void) snprintf(addr, sz, "%s://testutil%04x%04x%04x%04x", - scheme, nng_random(), nng_random(), nng_random(), - nng_random()); - return; -#else - char *tmpdir; - - if (((tmpdir = getenv("TMPDIR")) == NULL) && - ((tmpdir = getenv("TEMP")) == NULL) && - ((tmpdir = getenv("TMP")) == NULL)) { - tmpdir = "/tmp"; - } - - (void) snprintf(addr, sz, "%s://%s/testutil%04x%04x%04x%04x", - scheme, tmpdir, nng_random(), nng_random(), nng_random(), - nng_random()); - return; -#endif - } - - // We should not be here. - abort(); -} - -// testutil_next_port returns a "next" allocation port. -// Ports are chosen by starting from a random point within a -// range (normally 38000-40000, but other good places to choose -// might be 36000-37000, 42000-43000, 45000-47000, 48000-49000. -// These are non-ephemeral ports. Successive calls to this function -// will return the next port in the range (wrapping). This works even -// across process boundaries, as the range is tracked in a file named -// by $TEST_PORT_FILE. The range of ports can be configured by using -// $TEST_PORT_RANGE (the range is specified as "lo:hi" where the actual -// port will be in the range [lo,hi). -uint16_t -testutil_next_port(void) -{ - char * pfile; - FILE * f; - uint16_t port; - uint16_t base; - uint16_t end; - char * str; -#ifdef _WIN32 - OVERLAPPED olp; - HANDLE h; -#endif - - pfile = getenv("TEST_PORT_FILE"); - if (pfile == NULL) { - pfile = ".nng_ports"; - } - if (((str = getenv("TEST_PORT_RANGE")) == NULL) || - ((sscanf(str, "%hu:%hu", &base, &end)) != 1) || - ((int) end - (int) base) < 1) { - base = 38000; - end = 40000; - } - - if (((f = fopen(pfile, "r+")) == NULL) && - ((f = fopen(pfile, "w+")) == NULL)) { - return (0); - } - (void) fseek(f, 0, SEEK_SET); - -#ifdef _WIN32 - h = (HANDLE) _get_osfhandle(_fileno(f)); - - // This contains the offset information for LockFileEx. - ZeroMemory(&olp, sizeof(olp)); - - if (LockFileEx(h, LOCKFILE_EXCLUSIVE_LOCK, 0, MAXDWORD, MAXDWORD, - &olp) == FALSE) { - fclose(f); - return (0); - } -#else - if (lockf(fileno(f), 0, F_LOCK) != 0) { - (void) fclose(f); - return (0); - } -#endif - if (fscanf(f, "%hu", &port) != 1) { - unsigned seed = (unsigned) time(NULL); - -#ifdef _WIN32 - port = base + rand_s(&seed) % (end - base); -#else - port = base + rand_r(&seed) % (end - base); -#endif - } - port++; - if ((port < base) || (port >= (base + end))) { - port = base; - } - -#ifdef _WIN32 - fseek(f, 0, SEEK_SET); - SetEndOfFile(h); - (void) fprintf(f, "%u", port); - ZeroMemory(&olp, sizeof(olp)); - (void) UnlockFileEx(h, 0, MAXDWORD, MAXDWORD, &olp); -#else - fseek(f, 0, SEEK_SET); - if (ftruncate(fileno(f), 0) != 0) { - (void) fclose(f); - return (0); - } - - (void) fprintf(f, "%u", port); - (void) lockf(fileno(f), 0, F_ULOCK); - -#endif - (void) fclose(f); - return (port); -} - -void -testutil_sleep(int msec) -{ -#ifdef _WIN32 - Sleep(msec); -#elif defined(CLOCK_MONOTONIC) - struct timespec ts; - - ts.tv_sec = msec / 1000; - ts.tv_nsec = (msec % 1000) * 1000000; - - // Do this in a loop, so that interrupts don't actually wake us. - while (ts.tv_sec || ts.tv_nsec) { - if (nanosleep(&ts, &ts) == 0) { - break; - } - } -#else - poll(NULL, 0, msec); -#endif -} - -struct marriage_notice { - nng_mtx *mx; - nng_cv * cv; - int s1; - int s2; - int cnt1; - int cnt2; - nng_pipe p1; - nng_pipe p2; -}; - -static void -married(nng_pipe p, nng_pipe_ev ev, void *arg) -{ - struct marriage_notice *notice = arg; - (void) ev; - - nng_mtx_lock(notice->mx); - if (nng_socket_id(nng_pipe_socket(p)) == notice->s1) { - notice->cnt1++; - notice->p1 = p; - } else if (nng_socket_id(nng_pipe_socket(p)) == notice->s2) { - notice->cnt2++; - notice->p2 = p; - } - nng_cv_wake(notice->cv); - nng_mtx_unlock(notice->mx); -} - -int -testutil_marry(nng_socket s1, nng_socket s2) -{ - return (testutil_marry_ex(s1, s2, NULL, NULL, NULL)); -} - -int -testutil_marry_ex( - nng_socket s1, nng_socket s2, const char *url, nng_pipe *p1, nng_pipe *p2) -{ - struct marriage_notice note; - nng_time timeout; - int rv; - char addr[32]; - - if (url == NULL) { - (void) snprintf(addr, sizeof(addr), - "inproc://marry%04x%04x%04x%04x", nng_random(), - nng_random(), nng_random(), nng_random()); - url = addr; - } - - note.cnt1 = 0; - note.cnt2 = 0; - note.s1 = nng_socket_id(s1); - note.s2 = nng_socket_id(s2); - timeout = nng_clock() + 1000; // 1 second - - if (((rv = nng_mtx_alloc(¬e.mx)) != 0) || - ((rv = nng_cv_alloc(¬e.cv, note.mx)) != 0) || - ((rv = nng_pipe_notify( - s1, NNG_PIPE_EV_ADD_POST, married, ¬e)) != 0) || - ((rv = nng_pipe_notify( - s2, NNG_PIPE_EV_ADD_POST, married, ¬e)) != 0) || - ((rv = nng_listen(s1, url, NULL, 0)) != 0) || - ((rv = nng_dial(s2, url, NULL, 0)) != 0)) { - goto done; - } - - nng_mtx_lock(note.mx); - while ((note.cnt1 == 0) || (note.cnt2 == 0)) { - if ((rv = nng_cv_until(note.cv, timeout)) != 0) { - break; - } - } - nng_mtx_unlock(note.mx); - if (p1 != NULL) { - *p1 = note.p1; - } - if (p2 != NULL) { - *p2 = note.p2; - } - -done: - nng_pipe_notify(s1, NNG_PIPE_EV_ADD_POST, NULL, NULL); - nng_pipe_notify(s2, NNG_PIPE_EV_ADD_POST, NULL, NULL); - if (note.cv != NULL) { - nng_cv_free(note.cv); - } - if (note.mx != NULL) { - nng_mtx_free(note.mx); - } - return (rv); -} - -typedef struct { - uint8_t * base; - size_t rem; - nng_iov iov; - nng_aio * upper_aio; - nng_aio * lower_aio; - nng_stream *s; - void (*submit)(nng_stream *, nng_aio *); -} stream_xfr_t; - -static void -stream_xfr_free(stream_xfr_t *x) -{ - if (x == NULL) { - return; - } - if (x->upper_aio != NULL) { - nng_aio_free(x->upper_aio); - } - if (x->lower_aio != NULL) { - nng_aio_free(x->lower_aio); - } - nng_free(x, sizeof(*x)); -} - -static void -stream_xfr_start(stream_xfr_t *x) -{ - nng_iov iov; - iov.iov_buf = x->base; - iov.iov_len = x->rem; - - nng_aio_set_iov(x->lower_aio, 1, &iov); - x->submit(x->s, x->lower_aio); -} - -static void -stream_xfr_cb(void *arg) -{ - stream_xfr_t *x = arg; - int rv; - size_t n; - - rv = nng_aio_result(x->lower_aio); - if (rv != 0) { - nng_aio_finish(x->upper_aio, rv); - return; - } - n = nng_aio_count(x->lower_aio); - - x->rem -= n; - x->base += n; - - if (x->rem == 0) { - nng_aio_finish(x->upper_aio, 0); - return; - } - - stream_xfr_start(x); -} - -static stream_xfr_t * -stream_xfr_alloc(nng_stream *s, void (*submit)(nng_stream *, nng_aio *), - void *buf, size_t size) -{ - stream_xfr_t *x; - - if ((x = nng_alloc(size)) == NULL) { - return (NULL); - } - if (nng_aio_alloc(&x->upper_aio, NULL, NULL) != 0) { - stream_xfr_free(x); - return (NULL); - } - if (nng_aio_alloc(&x->lower_aio, stream_xfr_cb, x) != 0) { - stream_xfr_free(x); - return (NULL); - } - - // Upper should not take more than 30 seconds, lower not more than 5. - nng_aio_set_timeout(x->upper_aio, 30000); - nng_aio_set_timeout(x->lower_aio, 5000); - - nng_aio_begin(x->upper_aio); - - x->s = s; - x->rem = size; - x->base = buf; - x->submit = submit; - - return (x); -} - -static int -stream_xfr_wait(stream_xfr_t *x) -{ - int rv; - if (x == NULL) { - return (NNG_ENOMEM); - } - nng_aio_wait(x->upper_aio); - rv = nng_aio_result(x->upper_aio); - stream_xfr_free(x); - return (rv); -} - -void * -testutil_stream_recv_start(nng_stream *s, void *buf, size_t size) -{ - stream_xfr_t *x; - - x = stream_xfr_alloc(s, nng_stream_recv, buf, size); - if (x == NULL) { - return (x); - } - stream_xfr_start(x); - return (x); -} - -int -testutil_stream_recv_wait(void *arg) -{ - return (stream_xfr_wait(arg)); -} - -void * -testutil_stream_send_start(nng_stream *s, void *buf, size_t size) -{ - stream_xfr_t *x; - - x = stream_xfr_alloc(s, nng_stream_send, buf, size); - if (x == NULL) { - return (x); - } - stream_xfr_start(x); - return (x); -} - -int -testutil_stream_send_wait(void *arg) -{ - return (stream_xfr_wait(arg)); -} - -// TLS certificates. These are pre-generated, and should not be used outside -// of these test cases. They are all using RSA 2048 with SHA256. -// All certs are signed by the root key (making the root self-signed). -// They all expire in about 100 years -- so we don't have to worry about -// expiration. -// -// The server cert uses CN 127.0.0.1. -// -// Country = XX -// State = Utopia -// Locality = Paradise -// Organization = NNG Tests, Inc. -// - -const char *testutil_server_key = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEAyPdnRbMrQj9902TGQsmMbG6xTSl9XKbJr55BcnyZifsrqA7B\n" - "bNSkndVw9Qq+OJQIDBTfRhGdG+o9j3h6SDVvIb62fWtwJ5Fe0eUmeYwPc1PKQzOm\n" - "MFlMYekXiZsx60yu5LeuUhGlb84+csImH+m3NbutInPJcStSq0WfSV6VNk6DN353\n" - "5ex66zV2Ms6ikys1vCC434YqIpe1VxUh+IC2widJcLDCxmmJt3TOlx5f9OcKMkxu\n" - "H4fMAzgjIEpIrUjdb19CGNVvsNrEEB2CShBMgBdqMaAnKFxpKgfzS0JFulxRGNtp\n" - "srweki+j+a4sJXTv40kELkRQS6uB6wWZNjcPywIDAQABAoIBAQCGSUsot+BgFCzv\n" - "5JbWafb7Pbwb421xS8HZJ9Zzue6e1McHNVTqc+zLyqQAGX2iMMhvykKnf32L+anJ\n" - "BKgxOANaeSVYCUKYLfs+JfDfp0druMGexhR2mjT/99FSkfF5WXREQLiq/j+dxiLU\n" - "bActq+5QaWf3bYddp6VF7O/TBvCNqBfD0+S0o0wtBdvxXItrKPTD5iKr9JfLWdAt\n" - "YNAk2QgFywFtY5zc2wt4queghF9GHeBzzZCuVj9QvPA4WdVq0mePaPTmvTYQUD0j\n" - "GT6X5j9JhqCwfh7trb/HfkmLHwwc62zPDFps+Dxao80+vss5b/EYZ4zY3S/K3vpG\n" - "f/e42S2BAoGBAP51HQYFJGC/wsNtOcX8RtXnRo8eYmyboH6MtBFrZxWl6ERigKCN\n" - "5Tjni7EI3nwi3ONg0ENPFkoQ8h0bcVFS7iW5kz5te73WaOFtpkU9rmuFDUz37eLP\n" - "d+JLZ5Kwfn2FM9HoiSAZAHowE0MIlmmIEXSnFtqA2zzorPQLO/4QlR+VAoGBAMov\n" - "R0yaHg3qPlxmCNyLXKiGaGNzvsvWjYw825uCGmVZfhzDhOiCFMaMb51BS5Uw/gwm\n" - "zHxmJjoqak8JjxaQ1qKPoeY1TJ5ps1+TRq9Wzm2/zGqJHOXnRPlqwBQ6AFllAMgt\n" - "Rlp5uqb8QJ+YEo6/1kdGhw9kZWCZEEue6MNQjxnfAoGARLkUkZ+p54di7qz9QX+V\n" - "EghYgibOpk6R1hviNiIvwSUByhZgbvxjwC6pB7NBg31W8wIevU8K0g4plbrnq/Md\n" - "5opsPhwLo4XY5albkq/J/7f7k6ISWYN2+WMsIe4Q+42SJUsMXeLiwh1h1mTnWrEp\n" - "JbxK69CJZbXhoDe4iDGqVNECgYAjlgS3n9ywWE1XmAHxR3osk1OmRYYMfJv3VfLV\n" - "QSYCNqkyyNsIzXR4qdkvVYHHJZNhcibFsnkB/dsuRCFyOFX+0McPLMxqiXIv3U0w\n" - "qVe2C28gRTfX40fJmpdqN/c9xMBJe2aJoClRIM8DCBIkG/HMI8a719DcGrS6iqKv\n" - "VeuKAwKBgEgD+KWW1KtoSjCBlS0NP8HjC/Rq7j99YhKE6b9h2slIa7JTO8RZKCa0\n" - "qbuomdUeJA3R8h+5CFkEKWqO2/0+dUdLNOjG+CaTFHaUJevzHOzIjpn+VsfCLV13\n" - "yupGzHG+tGtdrWgLn9Dzdp67cDfSnsSh+KODPECAAFfo+wPvD8DS\n" - "-----END RSA PRIVATE KEY-----\n"; - -const char *testutil_server_crt = - "-----BEGIN CERTIFICATE-----\n" - "MIIDRzCCAi8CFCOIJGs6plMawgBYdDuCRV7UuJuyMA0GCSqGSIb3DQEBCwUAMF8x\n" - "CzAJBgNVBAYTAlhYMQ8wDQYDVQQIDAZVdG9waWExETAPBgNVBAcMCFBhcmFkaXNl\n" - "MRgwFgYDVQQKDA9OTkcgVGVzdHMsIEluYy4xEjAQBgNVBAMMCWxvY2FsaG9zdDAg\n" - "Fw0yMDA1MjMyMzMxMTlaGA8yMTIwMDQyOTIzMzExOVowXzELMAkGA1UEBhMCWFgx\n" - "DzANBgNVBAgMBlV0b3BpYTERMA8GA1UEBwwIUGFyYWRpc2UxGDAWBgNVBAoMD05O\n" - "RyBUZXN0cywgSW5jLjESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B\n" - "AQEFAAOCAQ8AMIIBCgKCAQEAyPdnRbMrQj9902TGQsmMbG6xTSl9XKbJr55BcnyZ\n" - "ifsrqA7BbNSkndVw9Qq+OJQIDBTfRhGdG+o9j3h6SDVvIb62fWtwJ5Fe0eUmeYwP\n" - "c1PKQzOmMFlMYekXiZsx60yu5LeuUhGlb84+csImH+m3NbutInPJcStSq0WfSV6V\n" - "Nk6DN3535ex66zV2Ms6ikys1vCC434YqIpe1VxUh+IC2widJcLDCxmmJt3TOlx5f\n" - "9OcKMkxuH4fMAzgjIEpIrUjdb19CGNVvsNrEEB2CShBMgBdqMaAnKFxpKgfzS0JF\n" - "ulxRGNtpsrweki+j+a4sJXTv40kELkRQS6uB6wWZNjcPywIDAQABMA0GCSqGSIb3\n" - "DQEBCwUAA4IBAQA86Fqrd4aiih6R3fwiMLwV6IQJv+u5rQeqA4D0xu6v6siP42SJ\n" - "YMaI2DkNGrWdSFVSHUK/efceCrhnMlW7VM8I1cyl2F/qKMfnT72cxqqquiKtQKdT\n" - "NDTzv61QMUP9n86HxMzGS7jg0Pknu55BsIRNK6ndDvI3D/K/rzZs4xbqWSSfNfQs\n" - "fNFBbOuDrkS6/1h3p8SY1uPM18WLVv3GO2T3aeNMHn7YJAKSn+sfaxzAPyPIK3UT\n" - "W8ecGQSHOqBJJQELyUfMu7lx/FCYKUhN7/1uhU5Qf1pCR8hkIMegtqr64yVBNMOn\n" - "248fuiHbs9BRknuA/PqjxIDDZTwtDrfVSO/S\n" - "-----END CERTIFICATE-----\n"; - -const char *testutil_client_key = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEArohAOr7gv5aNpTEviOPPBJ2fArUX2EajMEtU9tF8H/TTlcMB\n" - "oy+vYoyNe56jc7CWUfO0S54rg0XaQ7HTI5EWueSR9wrEVK4q+Zg6x1dwr4k5SxD5\n" - "NcStDXzUjiCi9ygZRxpOUz8jRhKZFENuCdLxSN7E2vuOIU9IR5FpatMlsD33rTOX\n" - "Pgyx7qNpBj63ZCzY3b09zWBAXc/sLd1mxjlNP/LbtVLrFeIT1j6Gv0UgzxIcEjQ3\n" - "vybV/EYK7THn7jLhudEa+7fC9jfzwozbuszfEje/U0h0/DF4coGyIQTfDh6Wmk3x\n" - "5YB2QaI/0jwn8cwracKGtNO+vLqV4yUWZxf5xwIDAQABAoIBADXIEJrJpPIEz6Me\n" - "0/oH0QwoEg7AhReFNNY18HmaNfiW9fhJPiDuGcpxa0uzp8SHntqkEWPX2qq6BLcl\n" - "fd2Q4QLpdz08GSHLBb0h9sLko/nDfF8wXMr/zx+/3rPpRK6KsbdiWM54P0NhicBf\n" - "wvHOCcIdu2WLbNHA35IGMgjUBeIXxAsje63RBS3Dd6RnASxF7bbC/GXiUouQnos1\n" - "VSLoR6fLQQYlrMOAJU3ruPvMRwkrgaHQ1jl3PL4ilZMuvt7LSAi/KUDKMLRHdLNe\n" - "tMPITE5CvQ/rBhiUHMsTn1Xb2/jmSuJieJtG2fEDmLFuYZMUFMg1XfQ+ZC9cDCGI\n" - "wiEYUbkCgYEA1NoKnHp7Zmc2AK1J78uYByEwr8z2nAYZNq5LFeKuCd4rky6v385x\n" - "IjIYhvPLiGXw/lDfF1T15lHHo2FDAQqDa2rbEe+ycDC7Qa3eJjcsN284n1RM2pl+\n" - "iNyyhS09YVadelBxWsMqnwdDlf5lrSa7DW1+/u/z2iAw8lGka8XpFpsCgYEA0emd\n" - "sYqNivonQFEqJxi2kGTBjX8HNEjeF9tTLuAAg0hjhbW4i1v3JsekW9thbG436THa\n" - "4zWUBmcaEwx0iTD1dqM+d+PbN/4vxoRx9kWQJicfR+sa6eJiwL5UmiqDdX4to5z9\n" - "MbahemNBzYybr7lcvw+RbL91Fr/z3GooDM9rxkUCgYAuF8mUeTGfy1n2a5BHTV9u\n" - "q9FPQKNmxitPnA7GfoARwvrMtJ+BZ8M4FIEbOFArCWhWqkylUNCvP6ZryvQnlY9A\n" - "A7PM/os1oFfssSoaPHhmyL8KQcciz3qHSMOf81wHaCpSAnmJnhnstjX8lUqPZIO9\n" - "NKj7rBqycaYn02Y3sHP5YQKBgQDQxOQNW5uCiWDYWuDtmWqZGVxW+euUWJRqbbvB\n" - "dw+LgkdZCG7OS1z3uL8CjKHMUaJRzz+/kd3ysEACifStLYAzyg+q9XdlrOyfJ8Kg\n" - "CHdhOq+lu3I9Aubsg19pJLcx95g0jUJUWysmqekcIagFkPlpHHaqDZDKW4aRxRKo\n" - "CvNJcQKBgA9DB8OzHA/gp8TztxUZu8hAVfehLxVORquFvMRF0cr8uxjbu/6sDhzc\n" - "TRUkXRUe4DGxxMzAd+1SF/IWlcuZlfcuZrytH1hbjmrN8H30y+yGXFsSGCI/rudk\n" - "rLXNS+vWEeuOV8lQuQY0fkokmxnmhkPDMXra5/3KrVMzm3ZNF5N8\n" - "-----END RSA PRIVATE KEY-----\n"; - -const char *testutil_client_crt = - "-----BEGIN CERTIFICATE-----\n" - "MIIDdzCCAl8CFEzqJgxMn+OTdw7RjLtz8FlhrQ0HMA0GCSqGSIb3DQEBCwUAMHcx\n" - "CzAJBgNVBAYTAlhYMQ8wDQYDVQQIDAZVdG9waWExETAPBgNVBAcMCFBhcmFkaXNl\n" - "MRgwFgYDVQQKDA9OTkcgVGVzdHMsIEluYy4xFDASBgNVBAsMC0NsaWVudCBDZXJ0\n" - "MRQwEgYDVQQDDAtUZXN0IENsaWVudDAgFw0yMDA1MjMxODQ1MjZaGA8yMTIwMDQy\n" - "OTE4NDUyNlowdzELMAkGA1UEBhMCWFgxDzANBgNVBAgMBlV0b3BpYTERMA8GA1UE\n" - "BwwIUGFyYWRpc2UxGDAWBgNVBAoMD05ORyBUZXN0cywgSW5jLjEUMBIGA1UECwwL\n" - "Q2xpZW50IENlcnQxFDASBgNVBAMMC1Rlc3QgQ2xpZW50MIIBIjANBgkqhkiG9w0B\n" - "AQEFAAOCAQ8AMIIBCgKCAQEAoHWEJXvfaHDM33AyYbJHggKOllgcvwscEnsXztIt\n" - "OK+0jO6SRFSbtye1cjtrkGVCYBjeWMcOdEiNB0pw3PceVpF/Q9ifCuaSYsJA3sPH\n" - "wi/A3G7ZTe2KCH1i26I4zyw1Bn5AzkaDDXsaht2S9PEqIBCbWo/V1pWiv4QdYmLT\n" - "/UFYJDxFpFC3iKVC+BDv9yzziyaFXOYsQJXcaq8ZRD79bNV5NFfzUih8RoasIdD4\n" - "LoamBSbbr5XzstTISus+wu1JDKgKkYMJhLGA/tdU/eOKuTDx89yO4ba23W74xeqW\n" - "JYe0wPy+krmeB5M7UA7jIvg1JXhYACxujhieMp7wcC3FPwIDAQABMA0GCSqGSIb3\n" - "DQEBCwUAA4IBAQCMTQ89YnD19bCGIdUl/z6w2yx1x1kvTYHT+SzhUprsgiuS3KT1\n" - "RZNhjf5U3Yu+B6SrJCLuylv+L2zQfmHogp3lV7bayOA7r/rVy5fdmHS+Ei1w6LDL\n" - "t8jayiRMPG4VCgaG486yI73PFpK5DXnyFqSd23TlWvNoNeVag5gjlhzG+mHZBSB2\n" - "ExpGY3SPxrKSzDqIITVPVgzjW25N8qtgLXC6HODDiViNYq1nmuoS4O80NIYAPPs6\n" - "sxUMa5kT+zc17q57ZcgNq/sSGI3BU4b/E/8ntIwiui2xWSf/4JR6xtanih8uY5Pu\n" - "QTgg9qTtFgtu4WWUP7JhreoINTw6O4/g5Z18\n" - "-----END CERTIFICATE-----\n"; diff --git a/tests/testutil.h b/tests/testutil.h deleted file mode 100644 index 63979cff4..000000000 --- a/tests/testutil.h +++ /dev/null @@ -1,129 +0,0 @@ -// -// Copyright 2020 Staysail Systems, Inc. -// -// This software is supplied under the terms of the MIT License, a -// copy of which should be located in the distribution where this -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -#ifndef TESTUTIL_H -#define TESTUTIL_H - -#include -#include - -// The following headers are provided for test code convenience. -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// testutil_clock returns the current time in milliseconds. -// The reference clock may be any point in the past (typically since -// the program started running.) -extern uint64_t testutil_clock(void); - -// testutil_pollfd tests if the given file descriptor polls as readable. -extern bool testutil_pollfd(int); - -// testutil_htons is just htons portably. -extern uint16_t testutil_htons(uint16_t); - -// testutil_htonl is just htonl portably. -extern uint32_t testutil_htonl(uint32_t); - -// testutil_sleep sleeps the specified number of msec -extern void testutil_sleep(int); - -// testutil_next_port returns a new port number (presumably unique) -extern uint16_t testutil_next_port(void); - -// testutil_scratch_addr makes a scratch address for the given scheme. -// The address buffer must be supplied, and the size should be at least -// 64 bytes to ensure no truncation occurs. -extern void testutil_scratch_addr(const char *, size_t, char *); - -// testutil_marry connects two sockets using inproc. It uses socket -// pipe hooks to ensure that it does not return before both sockets -// are fully connected. -extern int testutil_marry(nng_socket, nng_socket); - -// testutil_marry_ex is like testutil_marry, but returns the pipes that -// were connected, and includes an optional URL. The pipe pointers and the -// URL may be NULL if not needed. -extern int testutil_marry_ex( - nng_socket, nng_socket, const char *, nng_pipe *, nng_pipe *); - -// testutil_stream_send_start and testutil_stream_recv_start are used -// to initiate transfers asynchronously. They return a token which can -// be used with testutil_stream_send_wait and testutil_stream_recv_wait. -// Those wait functions will return the result of operation (0 on -// success, an NNG error number otherwise.) -extern void *testutil_stream_send_start(nng_stream *, void *, size_t); -extern void *testutil_stream_recv_start(nng_stream *, void *, size_t); -extern int testutil_stream_send_wait(void *); -extern int testutil_stream_recv_wait(void *); - -// These are TLS certificates. The client and server are signed with the -// root. The server uses CN 127.0.0.1. Other details are bogus, but -// designed to prevent accidental use elsewhere. -extern const char *testutil_server_key; -extern const char *testutil_server_crt; -extern const char *testutil_client_key; -extern const char *testutil_client_crt; - -// TEST_NNG_PASS tests for NNG success. It reports the failure if it -// did not. -#define TEST_NNG_PASS(cond) \ - do { \ - int result_ = (cond); \ - TEST_CHECK_(result_ == 0, "%s succeeds", #cond); \ - TEST_MSG("%s: expected success, got %s (%d)", #cond, \ - nng_strerror(result_), result_); \ - } while (0) - -#define TEST_NNG_FAIL(cond, expect) \ - do { \ - int result_ = (cond); \ - TEST_CHECK_(result_ == expect, "%s fails with %s", #cond, \ - nng_strerror(expect)); \ - TEST_MSG("%s: expected %s (%d), got %s (%d)", #cond, \ - nng_strerror(expect), expect, nng_strerror(result_), \ - result_); \ - } while (0) - -#define TEST_NNG_SEND_STR(sock, string) \ - TEST_NNG_PASS(nng_send(sock, string, strlen(string) + 1, 0)) - -#define TEST_NNG_RECV_STR(sock, string) \ - do { \ - char buf_[64]; \ - size_t sz_ = sizeof(buf_); \ - int rv_ = nng_recv(sock, &buf_, &sz_, 0); \ - TEST_CHECK_( \ - rv_ == 0, "nng_recv (%d %s)", rv_, nng_strerror(rv_)); \ - TEST_CHECK_(sz_ == strlen(string) + 1, "length %d want %d", \ - sz_, strlen(string) + 1); \ - buf_[sizeof(buf_) - 1] = '\0'; \ - TEST_CHECK_( \ - strcmp(string, buf_) == 0, "%s == %s", string, buf_); \ - } while (0) - -#define TEST_STREQUAL(s1, s2) \ - do { \ - TEST_CHECK_(strcmp(s1, s2) == 0, "%s == %s", s1, s2); \ - } while (0) - -#define TEST_NULL(x) \ - do { \ - TEST_CHECK_((x) == NULL, "%p == NULL", x); \ - } while (0) - -#ifdef __cplusplus -}; -#endif - -#endif // TESTUTIL_H