aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compat/nanomsg/CMakeLists.txt10
-rw-r--r--src/compat/nanomsg/compat_tcp_test.c (renamed from src/compat/nanomsg/compat_tcp.c)100
-rw-r--r--src/compat/nanomsg/compat_testutil.h32
-rw-r--r--src/protocol/reqrep0/xreq_test.c8
-rw-r--r--src/protocol/survey0/xsurvey_test.c16
5 files changed, 93 insertions, 73 deletions
diff --git a/src/compat/nanomsg/CMakeLists.txt b/src/compat/nanomsg/CMakeLists.txt
index 2292d1a8..b2d99c3c 100644
--- a/src/compat/nanomsg/CMakeLists.txt
+++ b/src/compat/nanomsg/CMakeLists.txt
@@ -1,6 +1,5 @@
#
-# Copyright 2018 Capitar IT Group BV <info@capitar.com>
-# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+# Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
#
# This software is supplied under the terms of the MIT License, a
# copy of which should be located in the distribution where this
@@ -8,8 +7,9 @@
# found online at https://opensource.org/licenses/MIT.
#
-set(COMPAT_SOURCES compat/nanomsg/nn.c)
+#set(COMPAT_SOURCES compat/nanomsg/nn.c)
+nng_sources(nn.c)
-set(NNG_SRCS ${NNG_SRCS} ${COMPAT_SOURCES} PARENT_SCOPE)
+#set(NNG_SRCS ${NNG_SRCS} ${COMPAT_SOURCES} PARENT_SCOPE)
-nng_test(compat_tcp) \ No newline at end of file
+nng_test(compat_tcp_test) \ No newline at end of file
diff --git a/src/compat/nanomsg/compat_tcp.c b/src/compat/nanomsg/compat_tcp_test.c
index 6e0c2185..8fb7f7b6 100644
--- a/src/compat/nanomsg/compat_tcp.c
+++ b/src/compat/nanomsg/compat_tcp_test.c
@@ -1,5 +1,5 @@
/*
- Copyright 2019 Garrett D'Amore <garrett@damore.org>
+ Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
Copyright (c) 2012 Martin Sustrik All rights reserved.
Copyright 2016 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com>
@@ -28,7 +28,6 @@
#include <nng/compat/nanomsg/nn.h>
#include <nng/compat/nanomsg/pair.h>
-#include <nng/compat/nanomsg/pubsub.h>
#include <nng/compat/nanomsg/tcp.h>
#include "compat_testutil.h"
@@ -40,9 +39,8 @@ void
test_bind_and_close(void)
{
int sb;
- char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+ char addr[64];
+ testutil_scratch_addr("tcp", sizeof (addr), addr);
TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0);
TEST_CHECK(nn_bind(sb, addr) >= 0);
@@ -53,30 +51,27 @@ void
test_connect_and_close(void)
{
int sc;
- char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+ char addr[64];
+ testutil_scratch_addr("tcp", sizeof (addr), addr);
- TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
- TEST_CHECK(nn_close(sc) == 0);
+ TEST_NN_PASS((sc = nn_socket(AF_SP, NN_PAIR)) >= 0);
+ TEST_NN_PASS(nn_connect(sc, addr));
+ TEST_NN_PASS(nn_close(sc));
}
void
test_bind_and_connect(void)
{
- int sb, sc;
- char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+ int sb, sc, p1, p2;
+ char addr[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);
- TEST_CHECK(nn_bind(sb, addr) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
- testutil_sleep(200);
+ TEST_NN_MARRY_EX(sb, sc, addr, p1, p2);
TEST_CHECK(nn_close(sb) == 0);
TEST_CHECK(nn_close(sc) == 0);
@@ -128,18 +123,17 @@ test_no_delay(void)
void
test_ping_pong(void)
{
- int sb, sc;
- char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+ int sb, sc, p1, p2;
+ char addr[64];
- TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0);
- TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0);
- TEST_CHECK(sb != sc);
- TEST_CHECK(nn_bind(sb, addr) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
+ testutil_scratch_addr("tcp", sizeof(addr), addr);
- testutil_sleep(200);
+ TEST_NN_PASS((sb = nn_socket(AF_SP, NN_PAIR)));
+ TEST_NN_PASS((sc = nn_socket(AF_SP, NN_PAIR)));
+ TEST_CHECK(sb != sc);
+ TEST_NN_MARRY_EX(sc, sb, addr, p1, p2);
+ TEST_CHECK(p1 >= 0);
+ TEST_CHECK(p2 >= 0);
/* Ping-pong test. */
for (int i = 0; i != 100; ++i) {
@@ -166,18 +160,16 @@ test_ping_pong(void)
void
test_batch(void)
{
- int sb, sc;
- char addr[32];
- uint16_t port = testutil_next_port();
+ int sb, sc, p1, p2;
+ char addr[64];
int opt;
size_t sz;
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
- TEST_CHECK((sb = nn_socket(AF_SP, NN_PAIR)) >= 0);
- TEST_CHECK((sc = nn_socket(AF_SP, NN_PAIR)) >= 0);
+ testutil_scratch_addr("tcp", sizeof(addr), addr);
+
+ TEST_NN_PASS((sb = nn_socket(AF_SP, NN_PAIR)));
+ TEST_NN_PASS((sc = nn_socket(AF_SP, NN_PAIR)));
TEST_CHECK(sb != sc);
- TEST_CHECK(nn_bind(sb, addr) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
opt = 1000;
sz = sizeof(opt);
TEST_NN_PASS(nn_setsockopt(sb, NN_SOL_SOCKET, NN_RCVTIMEO, &opt, sz));
@@ -185,7 +177,9 @@ test_batch(void)
TEST_NN_PASS(nn_setsockopt(sc, NN_SOL_SOCKET, NN_RCVTIMEO, &opt, sz));
TEST_NN_PASS(nn_setsockopt(sc, NN_SOL_SOCKET, NN_SNDTIMEO, &opt, sz));
- testutil_sleep(200);
+ TEST_NN_MARRY_EX(sc, sb, addr, p1, p2);
+ TEST_CHECK(p1 >= 0);
+ TEST_CHECK(p2 >= 0);
// We can send 10 of these, because TCP buffers a reasonable amount.
// Pushing say 100 of them may run into TCP buffering limitations.
@@ -209,20 +203,19 @@ test_batch(void)
void
test_pair_reject(void)
{
- int sb, sc, sd;
+ int sb, sc, sd, p1, p2;
char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+
+ 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((sd = nn_socket(AF_SP, NN_PAIR)) >= 0);
TEST_CHECK(sb != sc);
- TEST_CHECK(nn_bind(sb, addr) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
- testutil_sleep(100);
- TEST_CHECK(nn_connect(sd, addr) >= 0);
+ TEST_NN_MARRY_EX(sc, sb, addr, p1, p2);
+
+ TEST_CHECK(nn_connect(sd, addr) >= 0);
testutil_sleep(200);
TEST_CHECK(nn_close(sb) == 0);
@@ -234,9 +227,9 @@ void
test_addr_in_use(void)
{
int sb, sc;
- char addr[32];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+ char addr[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);
@@ -251,14 +244,14 @@ test_addr_in_use(void)
void
test_max_recv_size(void)
{
- int sb, sc;
+ int sb, sc, p1, p2;
int opt;
int n;
size_t sz;
- char addr[32];
+ char addr[64];
char buf[64];
- uint16_t port = testutil_next_port();
- (void) snprintf(addr, sizeof(addr), "tcp://127.0.0.1:%u", port);
+
+ 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);
@@ -286,10 +279,7 @@ test_max_recv_size(void)
TEST_CHECK(opt == 4);
TEST_CHECK(sz == sizeof(opt));
- TEST_CHECK(nn_bind(sb, addr) >= 0);
- TEST_CHECK(nn_connect(sc, addr) >= 0);
-
- testutil_sleep(200);
+ TEST_NN_MARRY_EX(sc, sb, addr, p1, p2);
TEST_NN_PASS(nn_send(sc, "ABC", 4, 0));
TEST_NN_PASS(nn_send(sc, "012345", 6, 0));
diff --git a/src/compat/nanomsg/compat_testutil.h b/src/compat/nanomsg/compat_testutil.h
index afd75c34..113d6672 100644
--- a/src/compat/nanomsg/compat_testutil.h
+++ b/src/compat/nanomsg/compat_testutil.h
@@ -1,5 +1,5 @@
//
-// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -41,6 +41,36 @@ extern "C" {
expect, nng_strerror(err_), result_); \
} while (0)
+// These macros use some details of the socket and pipe which are not public.
+// 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_)); \
+ } 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); \
+ } while (0)
+
#ifdef __cplusplus
};
#endif
diff --git a/src/protocol/reqrep0/xreq_test.c b/src/protocol/reqrep0/xreq_test.c
index e474a0ac..57ad7f0a 100644
--- a/src/protocol/reqrep0/xreq_test.c
+++ b/src/protocol/reqrep0/xreq_test.c
@@ -234,7 +234,7 @@ test_xreq_recv_header(void)
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_ex(req, rep, &p1, &p2));
+ TEST_NNG_PASS(testutil_marry_ex(req, rep, NULL, &p1, &p2));
// Simulate a few hops.
TEST_NNG_PASS(nng_msg_alloc(&m, 0));
@@ -276,7 +276,7 @@ test_xreq_close_during_recv(void)
TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_RECVBUF, 5));
TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_SENDBUF, 20));
- TEST_NNG_PASS(testutil_marry_ex(req, rep, &p1, &p2));
+ 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);
@@ -307,7 +307,7 @@ test_xreq_close_pipe_during_send(void)
TEST_NNG_PASS(nng_setopt_int(rep, NNG_OPT_RECVBUF, 5));
TEST_NNG_PASS(nng_setopt_int(req, NNG_OPT_SENDBUF, 20));
- TEST_NNG_PASS(testutil_marry_ex(req, rep, &p1, &p2));
+ 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);
@@ -329,7 +329,7 @@ test_xreq_ttl_option(void)
nng_socket rep;
int v;
bool b;
- size_t sz = sizeof(v);
+ size_t sz;
const char *opt = NNG_OPT_MAXTTL;
TEST_NNG_PASS(nng_req0_open_raw(&rep));
diff --git a/src/protocol/survey0/xsurvey_test.c b/src/protocol/survey0/xsurvey_test.c
index b0123145..ff096de4 100644
--- a/src/protocol/survey0/xsurvey_test.c
+++ b/src/protocol/survey0/xsurvey_test.c
@@ -227,7 +227,7 @@ test_xsurvey_recv_header(void)
nng_socket resp;
nng_socket surv;
nng_msg * m;
- nng_pipe p1, p2;
+ nng_pipe p;
uint32_t id;
TEST_NNG_PASS(nng_respondent0_open_raw(&resp));
@@ -237,11 +237,11 @@ test_xsurvey_recv_header(void)
TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000));
TEST_NNG_PASS(nng_setopt_ms(resp, NNG_OPT_SENDTIMEO, 1000));
- TEST_NNG_PASS(testutil_marry_ex(surv, resp, &p1, &p2));
+ TEST_NNG_PASS(testutil_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(p2)));
+ 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));
@@ -279,7 +279,7 @@ test_xsurvey_close_during_recv(void)
TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_RECVBUF, 1));
TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_SENDBUF, 20));
- TEST_NNG_PASS(testutil_marry_ex(surv, resp, &p1, &p2));
+ 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);
@@ -310,7 +310,7 @@ test_xsurvey_close_pipe_during_send(void)
TEST_NNG_PASS(nng_setopt_int(resp, NNG_OPT_RECVBUF, 5));
TEST_NNG_PASS(nng_setopt_int(surv, NNG_OPT_SENDBUF, 20));
- TEST_NNG_PASS(testutil_marry_ex(surv, resp, &p1, &p2));
+ 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);
@@ -332,7 +332,7 @@ test_xsurvey_ttl_option(void)
nng_socket s;
int v;
bool b;
- size_t sz = sizeof(v);
+ size_t sz;
const char *opt = NNG_OPT_MAXTTL;
TEST_NNG_PASS(nng_surveyor0_open_raw(&s));
@@ -403,7 +403,7 @@ TEST_LIST = {
{ "xsurvey close during recv", test_xsurvey_close_during_recv },
{ "xsurvey close pipe during send",
test_xsurvey_close_pipe_during_send },
- { "xsurvey ttl option", test_xsurvey_ttl_option },
- { "xsurvey broadcast", test_xsurvey_broadcast },
+ { "xsurvey ttl option", test_xsurvey_ttl_option },
+ { "xsurvey broadcast", test_xsurvey_broadcast },
{ NULL, NULL },
};