summaryrefslogtreecommitdiff
path: root/tests/trantest.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/trantest.h')
-rw-r--r--tests/trantest.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/trantest.h b/tests/trantest.h
index 37763d24..d334c257 100644
--- a/tests/trantest.h
+++ b/tests/trantest.h
@@ -11,6 +11,8 @@
#include "convey.h"
#include "core/nng_impl.h"
#include "nng.h"
+#include "protocol/reqrep0/rep.h"
+#include "protocol/reqrep0/req.h"
#include <stdlib.h>
#include <string.h>
@@ -30,9 +32,54 @@ unsigned trantest_port = 0;
typedef int (*trantest_proptest_t)(nng_msg *, nng_listener, nng_dialer);
+#ifndef NNG_HAVE_ZEROTIER
+#define nng_zt_register notransport
+#endif
+#ifndef NNG_HAVE_INPROC
+#define nng_inproc_register notransport
+#endif
+#ifndef NNG_HAVE_IPC
+#define nng_ipc_register notransport
+#endif
+#ifndef NNG_HAVE_TCP
+#define nng_tcp_register notransport
+#endif
+
+int
+notransport(void)
+{
+ ConveySkip("Transport not configured");
+ return (NNG_ENOTSUP);
+}
+
+#define CHKTRAN(s, t) \
+ if (strncmp(s, t, strlen(t)) == 0) \
+ notransport()
+
+void
+trantest_checktran(const char *url)
+{
+#ifndef NNG_HAVE_ZEROTIER
+ CHKTRAN(url, "zt:");
+#endif
+#ifndef NNG_HAVE_INPROC
+ CHKTRAN(url, "inproc:");
+#endif
+#ifndef NNG_HAVE_IPC
+ CHKTRAN(url, "ipc:");
+#endif
+#ifndef NNG_HAVE_TCP
+ CHKTRAN(url, "tcp:");
+#endif
+
+ (void) url;
+}
+
void
trantest_next_address(char *out, const char *template)
{
+ trantest_checktran(template);
+
if (trantest_port == 0) {
char *pstr;
trantest_port = 5555;
@@ -56,11 +103,16 @@ void
trantest_init(trantest *tt, const char *addr)
{
trantest_next_address(tt->addr, addr);
+
+#if defined(NNG_HAVE_REQ0) && defined(NNG_HAVE_REP0)
So(nng_req_open(&tt->reqsock) == 0);
So(nng_rep_open(&tt->repsock) == 0);
tt->tran = nni_tran_find(addr);
So(tt->tran != NULL);
+#else
+ ConveySkip("Missing REQ or REP protocols");
+#endif
}
void