aboutsummaryrefslogtreecommitdiff
path: root/src/testing/nuts.h
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-30 11:32:28 -0500
committerGarrett D'Amore <garrett@damore.org>2024-11-30 12:06:11 -0500
commitcb8e9066edacbd0440df54672b426c44f102085f (patch)
treee1cdd426afb9e2f5eff498d540038d23c918a853 /src/testing/nuts.h
parent12307a1afd2bb82901a03db9d3024288a4128563 (diff)
downloadnng-cb8e9066edacbd0440df54672b426c44f102085f.tar.gz
nng-cb8e9066edacbd0440df54672b426c44f102085f.tar.bz2
nng-cb8e9066edacbd0440df54672b426c44f102085f.zip
tests: inproc converted to NUTS
This actually represents a conversion of the transport tests implemented in Convey terms to NUTS. As part of this, have implemented a simple round trip performance test, using PAIR. The rest of the transport tests will shortly be converted to this as well.
Diffstat (limited to 'src/testing/nuts.h')
-rw-r--r--src/testing/nuts.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/testing/nuts.h b/src/testing/nuts.h
index a61968b8..a2e850a3 100644
--- a/src/testing/nuts.h
+++ b/src/testing/nuts.h
@@ -106,6 +106,62 @@ extern void *nuts_stream_send_start(nng_stream *, void *, size_t);
extern void *nuts_stream_recv_start(nng_stream *, void *, size_t);
extern int nuts_stream_wait(void *);
+// nuts_tran_ functions are implementation of tesets
+// for transports, to improve code reuse.
+extern void nuts_tran_conn_refused(const char *scheme);
+extern void nuts_tran_duplicate_listen(const char *scheme);
+extern void nuts_tran_listen_accept(const char *scheme);
+extern void nuts_tran_exchange(const char *scheme);
+extern void nuts_tran_pipe_id(const char *scheme);
+extern void nuts_tran_huge_msg(const char *scheme, size_t size);
+extern void nuts_tran_msg_props(const char *scheme, void (*check)(nng_msg *));
+extern void nuts_tran_perf(const char *scheme);
+
+#ifndef NUTS_TRAN_HUGE_MSG_SIZE
+#define NUTS_TRAN_HUGE_MSG_SIZE (1U << 20)
+#endif
+
+#define NUTS_DECLARE_TRAN_TESTS(scheme) \
+ void test_##scheme##_conn_refused(void) \
+ { \
+ nuts_tran_conn_refused(#scheme); \
+ } \
+ void test_##scheme##_duplicate_listen(void) \
+ { \
+ nuts_tran_duplicate_listen(#scheme); \
+ } \
+ void test_##scheme##_listen_accept(void) \
+ { \
+ nuts_tran_listen_accept(#scheme); \
+ } \
+ void test_##scheme##_exchange(void) \
+ { \
+ nuts_tran_exchange(#scheme); \
+ } \
+ void test_##scheme##_pipe_id(void) \
+ { \
+ nuts_tran_pipe_id(#scheme); \
+ } \
+ void test_##scheme##_huge_msg(void) \
+ { \
+ nuts_tran_huge_msg(#scheme, NUTS_TRAN_HUGE_MSG_SIZE); \
+ } \
+ void test_##scheme##_perf(void) \
+ { \
+ nuts_tran_perf(#scheme); \
+ }
+
+// clang-format off
+#define NUTS_INSERT_TRAN_TESTS(scheme) \
+ { #scheme " conn refused", test_##scheme##_conn_refused }, \
+ { #scheme " duplicate listen", test_##scheme##_duplicate_listen }, \
+ { #scheme " listen accept", test_##scheme##_listen_accept }, \
+ { #scheme " exchange", test_##scheme##_exchange }, \
+ { #scheme " pipe id", test_##scheme##_pipe_id }, \
+ { #scheme " huge msg", test_##scheme##_huge_msg }, \
+ { #scheme " perf", test_##scheme##_perf }
+// clang-format on
+
// These are TLS certificates. The client and server are signed with the
// root. The server uses CN 127.0.0.1. Other details are bogus, but
// designed to prevent accidental use elsewhere.