diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-09-30 22:07:21 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-09-30 22:07:21 -0700 |
| commit | b9b5c31b19df95d672ddc76cdfde29318f78b5ea (patch) | |
| tree | b5292f5bf8f311d35c1a36e7310f92d47b2d172f /tests/trantest.h | |
| parent | 33990278f78ab743ac9c4220c537063ce5790d16 (diff) | |
| download | nng-b9b5c31b19df95d672ddc76cdfde29318f78b5ea.tar.gz nng-b9b5c31b19df95d672ddc76cdfde29318f78b5ea.tar.bz2 nng-b9b5c31b19df95d672ddc76cdfde29318f78b5ea.zip | |
Add support for ZT sockaddr properties (pipe).
Also add a generic property test function to trantest.
Diffstat (limited to 'tests/trantest.h')
| -rw-r--r-- | tests/trantest.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/trantest.h b/tests/trantest.h index 4b4d0335..542cff32 100644 --- a/tests/trantest.h +++ b/tests/trantest.h @@ -28,6 +28,8 @@ typedef struct { unsigned trantest_port = 0; +typedef int (*trantest_proptest_t)(nng_msg *, nng_listener, nng_dialer); + void trantest_next_address(char *out, const char *template) { @@ -170,6 +172,44 @@ trantest_send_recv(trantest *tt) } void +trantest_check_properties(trantest *tt, trantest_proptest_t f) +{ + Convey("Properties test", { + nng_listener l; + nng_dialer d; + nng_msg * send; + nng_msg * recv; + size_t len; + nng_pipe p; + char url[NNG_MAXADDRLEN]; + size_t sz; + int rv; + + So(nng_listen(tt->repsock, tt->addr, &l, 0) == 0); + So(l != 0); + So(nng_dial(tt->reqsock, tt->addr, &d, 0) == 0); + So(d != 0); + + nng_usleep(20000); // listener may be behind slightly + + send = NULL; + So(nng_msg_alloc(&send, 0) == 0); + So(send != NULL); + So(nng_msg_append(send, "props", 5) == 0); + + So(nng_sendmsg(tt->reqsock, send, 0) == 0); + recv = NULL; + So(nng_recvmsg(tt->repsock, &recv, 0) == 0); + So(recv != NULL); + So(nng_msg_len(recv) == 5); + So(strcmp(nng_msg_body(recv), "props") == 0); + rv = f(recv, l, d); + nng_msg_free(recv); + So(rv == 0); + }); +} + +void trantest_send_recv_large(trantest *tt) { Convey("Send and recv large data", { @@ -240,3 +280,23 @@ trantest_test_all(const char *addr) trantest_send_recv_large(&tt); }) } + +void +trantest_test_extended(const char *addr, trantest_proptest_t f) +{ + trantest tt; + + Convey("Given transport", { + trantest_init(&tt, addr); + + Reset({ trantest_fini(&tt); }); + + trantest_scheme(&tt); + trantest_conn_refused(&tt); + trantest_duplicate_listen(&tt); + trantest_listen_accept(&tt); + trantest_send_recv(&tt); + trantest_send_recv_large(&tt); + trantest_check_properties(&tt, f); + }) +} |
