aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-03-20 18:38:54 -0700
committerGarrett D'Amore <garrett@damore.org>2018-03-20 18:42:23 -0700
commit6df40cb6eea9a4220d61c4c927ce5a857a12a338 (patch)
treeac4b7ecbcb41a456eb4d0429fc180047656371ba /tests
parent9ca901c1b70b17d851426483d9f54611cfa8e395 (diff)
downloadnng-6df40cb6eea9a4220d61c4c927ce5a857a12a338.tar.gz
nng-6df40cb6eea9a4220d61c4c927ce5a857a12a338.tar.bz2
nng-6df40cb6eea9a4220d61c4c927ce5a857a12a338.zip
fixes #301 String option handling for getopt
Diffstat (limited to 'tests')
-rw-r--r--tests/pollfd.c8
-rw-r--r--tests/sock.c14
-rw-r--r--tests/tcp.c17
-rw-r--r--tests/tls.c7
-rw-r--r--tests/trantest.h14
-rw-r--r--tests/ws.c24
-rw-r--r--tests/wss.c14
-rw-r--r--tests/wssfile.c20
-rw-r--r--tests/zt.c61
9 files changed, 91 insertions, 88 deletions
diff --git a/tests/pollfd.c b/tests/pollfd.c
index aa07adab..0baa6b2d 100644
--- a/tests/pollfd.c
+++ b/tests/pollfd.c
@@ -116,20 +116,16 @@ TestMain("Poll FDs", {
Convey("We cannot get a send FD for PULL", {
nng_socket s3;
int fd;
- size_t sz;
So(nng_pull0_open(&s3) == 0);
Reset({ nng_close(s3); });
- sz = sizeof(fd);
- So(nng_getopt(s3, NNG_OPT_SENDFD, &fd, &sz) == NNG_ENOTSUP);
+ So(nng_getopt_int(s3, NNG_OPT_SENDFD, &fd) == NNG_ENOTSUP);
});
Convey("We cannot get a recv FD for PUSH", {
nng_socket s3;
int fd;
- size_t sz;
So(nng_push0_open(&s3) == 0);
Reset({ nng_close(s3); });
- sz = sizeof(fd);
- So(nng_getopt(s3, NNG_OPT_RECVFD, &fd, &sz) == NNG_ENOTSUP);
+ So(nng_getopt_int(s3, NNG_OPT_RECVFD, &fd) == NNG_ENOTSUP);
});
})
diff --git a/tests/sock.c b/tests/sock.c
index 75d7c140..30dcd1b5 100644
--- a/tests/sock.c
+++ b/tests/sock.c
@@ -198,18 +198,18 @@ TestMain("Socket Operations", {
Convey("Short size is not copied", {
size_t sz = 0;
to = 0;
- So(nng_getopt(
- s1, NNG_OPT_SENDTIMEO, &to, &sz) == 0);
+ So(nng_getopt(s1, NNG_OPT_SENDTIMEO, &to,
+ &sz) == NNG_EINVAL);
So(sz == sizeof(to));
So(to == 0);
sz = 0;
- So(nng_getopt(
- s1, NNG_OPT_RECONNMINT, &to, &sz) == 0);
+ So(nng_getopt(s1, NNG_OPT_RECONNMINT, &to,
+ &sz) == NNG_EINVAL);
So(to == 0);
sz = 0;
- So(nng_getopt(
- s1, NNG_OPT_RECONNMAXT, &to, &sz) == 0);
+ So(nng_getopt(s1, NNG_OPT_RECONNMAXT, &to,
+ &sz) == NNG_EINVAL);
So(to == 0);
});
@@ -225,7 +225,7 @@ TestMain("Socket Operations", {
int l = 5;
size_t sz = 0;
So(nng_getopt(s1, NNG_OPT_RECVBUF, &l, &sz) ==
- 0);
+ NNG_EINVAL);
So(sz == sizeof(l));
So(l == 5);
});
diff --git a/tests/tcp.c b/tests/tcp.c
index 10d777da..58b4f15c 100644
--- a/tests/tcp.c
+++ b/tests/tcp.c
@@ -30,14 +30,13 @@ check_props_v4(nng_msg *msg)
p = nng_msg_get_pipe(msg);
So(p > 0);
- z = sizeof(nng_sockaddr);
- So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0);
- So(z == sizeof(la));
+ So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
So(la.s_family == NNG_AF_INET);
So(la.s_in.sa_port == htons(trantest_port - 1));
So(la.s_in.sa_port != 0);
So(la.s_in.sa_addr == htonl(0x7f000001));
+ // untyped
z = sizeof(nng_sockaddr);
So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == 0);
So(z == sizeof(ra));
@@ -45,6 +44,10 @@ check_props_v4(nng_msg *msg)
So(ra.s_in.sa_port != 0);
So(ra.s_in.sa_addr == htonl(0x7f000001));
+ So(nng_pipe_getopt_size(p, NNG_OPT_REMADDR, &z) == NNG_EBADTYPE);
+ z = 1;
+ So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == NNG_EINVAL);
+
return (0);
}
@@ -84,8 +87,7 @@ TestMain("TCP Transport", {
nng_socket s1;
nng_socket s2;
nng_listener l;
- char addr[NNG_MAXADDRLEN];
- size_t sz;
+ char * addr;
So(nng_pair_open(&s1) == 0);
So(nng_pair_open(&s2) == 0);
@@ -94,9 +96,10 @@ TestMain("TCP Transport", {
nng_close(s1);
});
So(nng_listen(s1, "tcp://127.0.0.1:0", &l, 0) == 0);
- sz = NNG_MAXADDRLEN;
- So(nng_listener_getopt(l, NNG_OPT_URL, addr, &sz) == 0);
+ So(nng_listener_getopt_string(l, NNG_OPT_URL, &addr) == 0);
+ So(memcmp(addr, "tcp://", 6) == 0);
So(nng_dial(s2, addr, NULL, 0) == 0);
+ nng_strfree(addr);
});
Convey("Malformed TCP addresses do not panic", {
diff --git a/tests/tls.c b/tests/tls.c
index a441b453..087234ff 100644
--- a/tests/tls.c
+++ b/tests/tls.c
@@ -134,6 +134,8 @@ check_props_v4(nng_msg *msg)
int i;
So(nng_pipe_getopt_int(p, NNG_OPT_REMADDR, &i) == NNG_EBADTYPE);
+ z = 1;
+ So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == NNG_EINVAL);
return (0);
}
@@ -303,7 +305,7 @@ TestMain("TLS Transport", {
nng_socket s1;
nng_socket s2;
nng_listener l;
- char addr[NNG_MAXADDRLEN];
+ char * addr;
size_t sz;
So(nng_tls_register() == 0);
@@ -315,8 +317,9 @@ TestMain("TLS Transport", {
});
So(nng_listen(s1, "tls+tcp://127.0.0.1:0", &l, 0) == 0);
sz = NNG_MAXADDRLEN;
- So(nng_listener_getopt(l, NNG_OPT_URL, addr, &sz) == 0);
+ So(nng_listener_getopt_string(l, NNG_OPT_URL, &addr) == 0);
So(nng_dial(s2, addr, NULL, 0) == 0);
+ nng_strfree(addr);
});
Convey("Malformed TLS addresses do not panic", {
diff --git a/tests/trantest.h b/tests/trantest.h
index feb34be8..cbed58f3 100644
--- a/tests/trantest.h
+++ b/tests/trantest.h
@@ -281,8 +281,7 @@ trantest_send_recv(trantest *tt)
nng_msg * recv;
size_t len;
nng_pipe p;
- char url[NNG_MAXADDRLEN];
- size_t sz;
+ char * url;
So(trantest_listen(tt, &l) == 0);
So(l != 0);
@@ -314,9 +313,9 @@ trantest_send_recv(trantest *tt)
So(strcmp(nng_msg_body(recv), "acknowledge") == 0);
p = nng_msg_get_pipe(recv);
So(p != 0);
- sz = sizeof(url);
- So(nng_pipe_getopt(p, NNG_OPT_URL, url, &sz) == 0);
+ So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0);
So(strcmp(url, tt->addr) == 0);
+ nng_strfree(url);
nng_msg_free(recv);
});
}
@@ -330,8 +329,7 @@ trantest_send_recv_multi(trantest *tt)
nng_msg * send;
nng_msg * recv;
nng_pipe p;
- char url[NNG_MAXADDRLEN];
- size_t sz;
+ char * url;
int i;
char msgbuf[16];
@@ -369,9 +367,9 @@ trantest_send_recv_multi(trantest *tt)
So(strcmp(nng_msg_body(recv), msgbuf) == 0);
p = nng_msg_get_pipe(recv);
So(p != 0);
- sz = sizeof(url);
- So(nng_pipe_getopt(p, NNG_OPT_URL, url, &sz) == 0);
+ So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0);
So(strcmp(url, tt->addr) == 0);
+ nng_strfree(url);
nng_msg_free(recv);
}
});
diff --git a/tests/ws.c b/tests/ws.c
index 32175e9c..6db790f2 100644
--- a/tests/ws.c
+++ b/tests/ws.c
@@ -34,9 +34,7 @@ check_props_v4(nng_msg *msg)
p = nng_msg_get_pipe(msg);
So(p > 0);
- z = sizeof(nng_sockaddr);
- So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0);
- So(z == sizeof(la));
+ So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
So(la.s_family == NNG_AF_INET);
So(la.s_in.sa_port == htons(trantest_port - 1));
So(la.s_in.sa_port != 0);
@@ -52,26 +50,34 @@ check_props_v4(nng_msg *msg)
// Request Header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Key") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
+ So(nng_pipe_getopt_string(p, NNG_OPT_WS_REQUEST_HEADERS, &buf) == 0);
+ So(strlen(buf) == len - 1);
+ nng_strfree(buf);
// Response Header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Accept") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
+ So(nng_pipe_getopt_string(p, NNG_OPT_WS_RESPONSE_HEADERS, &buf) == 0);
+ So(strlen(buf) == len - 1);
+ nng_strfree(buf);
return (0);
}
diff --git a/tests/wss.c b/tests/wss.c
index 58df8cbf..89a26623 100644
--- a/tests/wss.c
+++ b/tests/wss.c
@@ -156,26 +156,28 @@ check_props(nng_msg *msg)
// Request header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Key") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
// Response header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Accept") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
return (0);
}
diff --git a/tests/wssfile.c b/tests/wssfile.c
index 48736117..41fb8f9f 100644
--- a/tests/wssfile.c
+++ b/tests/wssfile.c
@@ -162,26 +162,34 @@ check_props(nng_msg *msg)
// Request header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_REQUEST_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Key") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
+ So(nng_pipe_getopt_string(p, NNG_OPT_WS_REQUEST_HEADERS, &buf) == 0);
+ So(strlen(buf) == len - 1);
+ nng_strfree(buf);
// Response header
z = 0;
buf = NULL;
- So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
+ So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) ==
+ NNG_EINVAL);
So(z > 0);
len = z;
- So((buf = nni_alloc(len)) != NULL);
+ So((buf = nng_alloc(len)) != NULL);
So(nng_pipe_getopt(p, NNG_OPT_WS_RESPONSE_HEADERS, buf, &z) == 0);
So(strstr(buf, "Sec-WebSocket-Accept") != NULL);
So(z == len);
- nni_free(buf, len);
+ nng_free(buf, len);
+ So(nng_pipe_getopt_string(p, NNG_OPT_WS_RESPONSE_HEADERS, &buf) == 0);
+ So(strlen(buf) == len - 1);
+ nng_strfree(buf);
return (0);
}
diff --git a/tests/zt.c b/tests/zt.c
index 3344f32b..f0aae6e2 100644
--- a/tests/zt.c
+++ b/tests/zt.c
@@ -42,17 +42,15 @@ mkdir(const char *path, int mode)
static int
check_props(nng_msg *msg)
{
- nng_sockaddr la, ra;
- nng_pipe p;
- size_t z;
+ nng_pipe p;
p = nng_msg_get_pipe(msg);
So(p > 0);
// Check local address.
Convey("Local address property works", {
- z = sizeof(nng_sockaddr);
- So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0);
- So(z == sizeof(la));
+ nng_sockaddr la;
+ So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
+
So(la.s_family == NNG_AF_ZT);
So(la.s_zt.sa_port == (trantest_port - 1));
So(la.s_zt.sa_nwid == 0xa09acf02337b057bull);
@@ -61,76 +59,65 @@ check_props(nng_msg *msg)
Convey("Remote address property works", {
// Check remote address.
- uint64_t mynode;
+ uint64_t mynode;
+ nng_sockaddr ra;
- z = sizeof(nng_sockaddr);
- So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == 0);
- So(z == sizeof(ra));
+ So(nng_pipe_getopt_sockaddr(p, NNG_OPT_REMADDR, &ra) == 0);
So(ra.s_family == NNG_AF_ZT);
So(ra.s_zt.sa_port != 0);
So(ra.s_zt.sa_nwid == 0xa09acf02337b057bull);
- z = sizeof(mynode);
- So(nng_pipe_getopt(p, NNG_OPT_ZT_NODE, &mynode, &z) == 0);
+ So(nng_pipe_getopt_uint64(p, NNG_OPT_ZT_NODE, &mynode) == 0);
So(mynode != 0);
So(ra.s_zt.sa_nodeid == mynode);
});
Convey("NWID property works", {
- uint64_t nwid;
+ uint64_t nwid = 0;
- z = sizeof(nwid);
- nwid = 0;
- So(nng_pipe_getopt(p, NNG_OPT_ZT_NWID, &nwid, &z) == 0);
+ So(nng_pipe_getopt_uint64(p, NNG_OPT_ZT_NWID, &nwid) == 0);
So(nwid = 0xa09acf02337b057bull);
});
Convey("Network status property works", {
- int s;
- z = sizeof(s);
- s = 0;
- So(nng_pipe_getopt(p, NNG_OPT_ZT_NETWORK_STATUS, &s, &z) == 0);
+ int s = 0;
+
+ So(nng_pipe_getopt_int(p, NNG_OPT_ZT_NETWORK_STATUS, &s) == 0);
So(s == NNG_ZT_STATUS_UP);
});
Convey("Ping properties work", {
- int c;
- nng_duration t;
+ int c = 0;
+ nng_duration t = 0;
- z = sizeof(c);
- c = 0;
- So(nng_pipe_getopt(p, NNG_OPT_ZT_PING_TRIES, &c, &z) == 0);
+ So(nng_pipe_getopt_int(p, NNG_OPT_ZT_PING_TRIES, &c) == 0);
So(c > 0 && c < 10); // actually 5...
- t = 0;
So(nng_pipe_getopt_ms(p, NNG_OPT_ZT_PING_TIME, &t) == 0);
So(t > 1000 && t < 3600000); // 1 sec - 1 hour
});
Convey("Home property works", {
- char v[256];
- z = sizeof(v);
- So(nng_pipe_getopt(p, NNG_OPT_ZT_HOME, v, &z) == 0);
- So(strlen(v) < sizeof(v));
+ char *v;
+ So(nng_pipe_getopt_string(p, NNG_OPT_ZT_HOME, &v) == 0);
+ nng_strfree(v);
});
Convey("MTU property works", {
size_t mtu;
// Check MTU
- z = sizeof(mtu);
- So(nng_pipe_getopt(p, NNG_OPT_ZT_MTU, &mtu, &z) == 0);
+ So(nng_pipe_getopt_size(p, NNG_OPT_ZT_MTU, &mtu) == 0);
So(mtu >= 1000 && mtu <= 10000);
});
Convey("Network name property works", {
- char name[NNG_MAXADDRLEN];
- size_t namesz;
+ char *name;
- namesz = sizeof(name);
- So(nng_pipe_getopt(
- p, NNG_OPT_ZT_NETWORK_NAME, name, &namesz) == 0);
+ So(nng_pipe_getopt_string(p, NNG_OPT_ZT_NETWORK_NAME, &name) ==
+ 0);
So(strcmp(name, "nng_test_open") == 0);
+ nng_strfree(name);
});
return (0);