From 45ad63d265261203155c882ec93b80a604e9ab3b Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 7 Dec 2024 15:45:15 -0800 Subject: nuts: try to avoid address in use for most tests We get test failures somewhat frequently due to port conflicts. This attempts to make more of the tests use the trick of binding to port 0, and letting us use the random port instead. --- src/testing/nuts.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/testing/nuts.h') diff --git a/src/testing/nuts.h b/src/testing/nuts.h index 5fe193db..f2e50c2c 100644 --- a/src/testing/nuts.h +++ b/src/testing/nuts.h @@ -85,6 +85,10 @@ extern uint16_t nuts_next_port(void); // 64 bytes to ensure no truncation occurs. extern void nuts_scratch_addr(const char *, size_t, char *); +// like nuts_scratch_addr, but attempts to use an autobind (0 port) +// address instead. +extern void nuts_scratch_addr_zero(const char *, size_t, char *); + // nuts_marry connects two sockets using inproc. It uses socket // pipe hooks to ensure that it does not return before both sockets // are fully connected. @@ -264,6 +268,14 @@ extern const char *nuts_ecdsa_client_crt; (var) = nuts_addr_; \ } while (0) +#define NUTS_ADDR_ZERO(var, scheme) \ + do { \ + static char nuts_addr_[64]; \ + nuts_scratch_addr_zero( \ + scheme, sizeof(nuts_addr_), nuts_addr_); \ + (var) = nuts_addr_; \ + } while (0) + #define NUTS_OPEN(sock) NUTS_PASS(nng_pair1_open(&(sock))) #define NUTS_CLOSE(sock) NUTS_PASS(nng_close(sock)) -- cgit v1.2.3-70-g09d2