aboutsummaryrefslogtreecommitdiff
path: root/src/compat
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-11-21 22:11:21 -0800
committerGarrett D'Amore <garrett@damore.org>2020-11-23 22:20:12 -0800
commitd1218d7309475193b53911667911c4f59a1a7752 (patch)
tree6ea796998fb60d2cb8afa704faa77fe7fddd644c /src/compat
parentb826bfc171d90f8bde7bd672c0ac14201b8b2742 (diff)
downloadnng-d1218d7309475193b53911667911c4f59a1a7752.tar.gz
nng-d1218d7309475193b53911667911c4f59a1a7752.tar.bz2
nng-d1218d7309475193b53911667911c4f59a1a7752.zip
New NUTS test framework (NNG Unit Test Support).
This is based on testutil/acutest, but is cleaner and fixes some short-comings. We will be adding more support for additional common paradigms to better facilitate transport tests. While here we added some more test cases, and fixed a possible symbol collision in the the stats framework (due to Linux use of a macro definition of "si_value" in a standard OS header). Test coverage may regress slightly as we are no longer using some of the legacy APIs.
Diffstat (limited to 'src/compat')
-rw-r--r--src/compat/nanomsg/compat_tcp_test.c149
-rw-r--r--src/compat/nanomsg/compat_testutil.h40
2 files changed, 91 insertions, 98 deletions
diff --git a/src/compat/nanomsg/compat_tcp_test.c b/src/compat/nanomsg/compat_tcp_test.c
index 24b42a01..ae4193b7 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 <acutest.h>
-#include <testutil.h>
+#include <nuts.h>
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 113d6672..e0612adb 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