From cb8e9066edacbd0440df54672b426c44f102085f Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 30 Nov 2024 11:32:28 -0500 Subject: 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. --- src/testing/nuts.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src/testing/nuts.h') 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. -- cgit v1.2.3-70-g09d2