diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-03-20 18:38:54 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-03-20 18:42:23 -0700 |
| commit | 6df40cb6eea9a4220d61c4c927ce5a857a12a338 (patch) | |
| tree | ac4b7ecbcb41a456eb4d0429fc180047656371ba /tests | |
| parent | 9ca901c1b70b17d851426483d9f54611cfa8e395 (diff) | |
| download | nng-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.c | 8 | ||||
| -rw-r--r-- | tests/sock.c | 14 | ||||
| -rw-r--r-- | tests/tcp.c | 17 | ||||
| -rw-r--r-- | tests/tls.c | 7 | ||||
| -rw-r--r-- | tests/trantest.h | 14 | ||||
| -rw-r--r-- | tests/ws.c | 24 | ||||
| -rw-r--r-- | tests/wss.c | 14 | ||||
| -rw-r--r-- | tests/wssfile.c | 20 | ||||
| -rw-r--r-- | tests/zt.c | 61 |
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); } }); @@ -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); } @@ -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); |
