aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt193
-rw-r--r--tests/errors.c4
-rw-r--r--tests/httpclient.c7
-rw-r--r--tests/httpserver.c24
-rw-r--r--tests/sock.c5
-rw-r--r--tests/trantest.h6
6 files changed, 120 insertions, 119 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e7d751ac..31b5fe29 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,10 +1,10 @@
#
+# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+# Copyright 2018 Capitar IT Group BV <info@capitar.com>
# Copyright (c) 2012 Martin Sustrik All rights reserved.
# Copyright (c) 2013 GoPivotal, Inc. All rights reserved.
# Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved.
# Copyright 2016 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com>
-# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
-# Copyright 2018 Capitar IT Group BV <info@capitar.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"),
@@ -27,37 +27,31 @@
# Build unit tests.
+# Note that tests which depend on internal (not public) APIs are not
+# enabled unless a static library is built. This is because on some
+# systems (e.g. Windows) we do not expose symbols that are not in the
+# public API. (When CMake learns more about using mapfiles to suppress
+# symbol visibility we will do this even more, to protect the namespace
+# of the user.)
+
include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src)
if (NNG_TESTS)
- if (THREADS_HAVE_PTHREAD_ARG)
- add_definitions (-pthread)
- endif()
-
# convey tests -- verify the test framework works!
add_executable(convey_test convey_test.c convey.c)
- if (CMAKE_THREAD_LIBS_INIT)
- target_link_libraries (convey_test "${CMAKE_THREAD_LIBS_INIT}")
- endif()
+ target_link_libraries (convey_test Threads::Threads)
add_test (NAME convey_test COMMAND convey_test
-v -d -p ENV_TEST=ON -p ANOTHERNAME -p AGAIN=yes extra)
- set_tests_properties( convey_test PROPERTIES TIMEOUT 2)
- list (APPEND all_tests convey_test)
-
- set (TEST_PORT 12100)
- macro (add_nng_test NAME TIMEOUT COND)
- if (${COND})
- list (APPEND all_tests ${NAME})
- add_executable (${NAME} ${NAME}.c convey.c)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
-
- add_test (NAME ${NAME} COMMAND ${NAME} -v -p TEST_PORT=${TEST_PORT})
- set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+20")
- endif()
+ set_tests_properties (convey_test PROPERTIES TIMEOUT 2)
+
+ set (NNG_TEST_PORT 13000)
+ macro (add_nng_test NAME TIMEOUT)
+ add_executable (${NAME} ${NAME}.c convey.c)
+ target_link_libraries (${NAME} ${PROJECT_NAME} Threads::Threads)
+ add_test (NAME ${NAME} COMMAND ${NAME} -v -p TEST_PORT=${NNG_TEST_PORT})
+ set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
+ math (EXPR NNG_TEST_PORT "${NNG_TEST_PORT}+20")
endmacro (add_nng_test)
# Compatibility tests are only added if all of the legacy protocols
@@ -73,17 +67,14 @@ if (NNG_TESTS)
NNG_PROTO_PULL0)
macro (add_nng_compat_test NAME TIMEOUT)
- list (APPEND all_tests ${NAME})
add_executable (${NAME} ${NAME}.c compat_testutil.c)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
+ target_link_libraries (${NAME} ${PROJECT_NAME})
target_include_directories(${NAME} PUBLIC
${PROJECT_SOURCE_DIR}/src/compat)
- add_test (NAME ${NAME} COMMAND ${NAME} ${TEST_PORT})
+ add_test (NAME ${NAME} COMMAND ${NAME} ${NNG_TEST_PORT})
set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+10")
+ math (EXPR NNG_TEST_PORT "${NNG_TEST_PORT}+20")
endmacro (add_nng_compat_test)
else ()
macro (add_nng_compat_test NAME TIMEOUT)
@@ -94,87 +85,103 @@ if (NNG_TESTS)
macro (add_nng_cpp_test NAME TIMEOUT)
if (NOT NNG_ENABLE_COVERAGE)
enable_language (CXX)
- list (APPEND all_tests ${NAME})
add_executable (${NAME} ${NAME}.cc)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
-
+ target_link_libraries (${NAME} ${PROJECT_NAME})
add_test (NAME ${NAME} COMMAND ${NAME} ${TEST_PORT})
set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+10")
+ math (EXPR TEST_PORT "${NNG_TEST_PORT}+20")
endif()
endmacro (add_nng_cpp_test)
- macro (add_nng_proto_test NAME TIMEOUT P1 P2)
- if (${P1} AND ${P2})
+ macro (add_nng_test1 NAME TIMEOUT COND1)
+ if (${COND1})
+ add_nng_test(${NAME} ${TIMEOUT})
+ else()
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
+ endif()
+ endmacro()
+
+ macro (add_nng_test2 NAME TIMEOUT COND1 COND2)
+ if (${COND1} AND ${COND2})
+ add_nng_test(${NAME} ${TIMEOUT})
+ else()
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
+ endif()
+ endmacro()
+
+ macro (add_nng_test3 NAME TIMEOUT COND1 COND2 COND3)
+ if (${COND1} AND ${COND2} AND ${COND3})
add_nng_test(${NAME} ${TIMEOUT} ON)
else()
- message (STATUS "Protocol test ${NAME} disabled (unconfigured)")
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
endif()
endmacro()
else ()
- macro (add_nng_test NAME TIMEOUT COND)
+ macro (add_nng_test NAME TIMEOUT)
endmacro (add_nng_test)
macro (add_nng_compat_test NAME TIMEOUT)
endmacro (add_nng_compat_test)
macro (add_nng_cpp_test NAME TIMEOUT)
endmacro (add_nng_cpp_test)
- macro (add_nng_proto_test NAME TIMEOUT P1 P2)
- endmacro()
+ macro (add_nng_test1 NAME TIMEOUT COND1)
+ endmacro(add_nng_test1)
+ macro (add_nng_test2 NAME TIMEOUT COND1 COND2)
+ endmacro(add_nng_test2)
+ macro (add_nng_test3 NAME TIMEOUT COND1 COND2 COND3)
+ endmacro(add_nng_test3)
endif ()
-add_nng_test(aio 5 ON)
-add_nng_test(bufsz 5 NNG_PROTO_PAIR0)
-add_nng_test(base64 5 NNG_SUPP_BASE64)
-add_nng_test(device 5 ON)
-add_nng_test(errors 2 ON)
-add_nng_test(files 5 ON)
-add_nng_test(httpclient 60 NNG_SUPP_HTTP)
-add_nng_test(httpserver 30 NNG_SUPP_HTTP)
-add_nng_test(idhash 5 ON)
-add_nng_test(inproc 5 NNG_TRANSPORT_INPROC)
-add_nng_test(ipc 5 NNG_TRANSPORT_IPC)
-add_nng_test(ipcperms 5 NNG_TRANSPORT_IPC)
-add_nng_test(ipcwinsec 5 NNG_TRANSPORT_IPC)
-add_nng_test(list 5 ON)
-add_nng_test(message 5 ON)
-add_nng_test(multistress 60 ON)
-add_nng_test(nonblock 60 ON)
-add_nng_test(options 5 ON)
-add_nng_test(pipe 5 ON)
-add_nng_test(platform 5 ON)
-add_nng_test(pollfd 5 ON)
-add_nng_test(reconnect 5 ON)
-add_nng_test(resolv 10 ON)
+add_nng_test(aio 5)
+add_nng_test2(base64 5 NNG_STATIC_LIB NNG_SUPP_BASE64)
+add_nng_test1(bufsz 5 NNG_PROTO_PAIR0)
+add_nng_test(device 5)
+add_nng_test(errors 2)
+add_nng_test1(files 5 NNG_STATIC_LIB)
+add_nng_test1(httpclient 60 NNG_SUPP_HTTP)
+add_nng_test2(httpserver 30 NNG_STATIC_LIB NNG_SUPP_HTTP)
+add_nng_test1(idhash 5 NNG_STATIC_LIB)
+add_nng_test1(inproc 5 NNG_TRANSPORT_INPROC)
+add_nng_test1(ipc 5 NNG_TRANSPORT_IPC)
+add_nng_test1(ipcperms 5 NNG_TRANSPORT_IPC)
+add_nng_test1(ipcwinsec 5 NNG_TRANSPORT_IPC)
+add_nng_test1(list 5 NNG_STATIC_LIB)
+add_nng_test(message 5)
+add_nng_test(multistress 60)
+add_nng_test(nonblock 60)
+add_nng_test(options 5)
+add_nng_test(pipe 5)
+add_nng_test(platform 5)
+add_nng_test(pollfd 5)
+add_nng_test(reconnect 5)
+add_nng_test1(resolv 10 NNG_STATIC_LIB)
add_nng_test(scalability 20 ON)
-add_nng_test(sha1 5 NNG_SUPP_SHA1)
-add_nng_test(sock 5 ON)
-add_nng_test(synch 5 ON)
-add_nng_test(tls 60 NNG_TRANSPORT_TLS)
-add_nng_test(tcp 180 NNG_TRANSPORT_TCP)
-add_nng_test(tcp6 60 NNG_TRANSPORT_TCP)
-add_nng_test(transport 5 ON)
-add_nng_test(udp 5 ON)
-add_nng_test(url 5 ON)
-add_nng_test(ws 30 NNG_TRANSPORT_WS)
-add_nng_test(wss 30 NNG_TRANSPORT_WSS)
-add_nng_test(wssfile 30 NNG_TRANSPORT_WSS)
-add_nng_test(zt 60 NNG_TRANSPORT_ZEROTIER)
-
-add_nng_proto_test(bus 5 NNG_PROTO_BUS0 NNG_PROTO_BUS0)
-add_nng_test(pipeline 5 NNG_PROTO_PULL0 NNG_PROTO_PIPELINE0)
-add_nng_proto_test(pair1 5 NNG_PROTO_PAIR1 NNG_PROTO_PAIR1)
-add_nng_proto_test(pubsub 5 NNG_PROTO_PUB0 NNG_PROTO_SUB0)
-add_nng_proto_test(reqctx 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqpoll 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqrep 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqstress 60 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(respondpoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_test(survey 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_proto_test(surveyctx 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_proto_test(surveypoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(sha1 5 NNG_STATIC_LIB NNG_SUPP_SHA1)
+add_nng_test(sock 5)
+add_nng_test1(synch 5 NNG_STATIC_LIB)
+add_nng_test2(tls 60 NNG_STATIC_LIB NNG_TRANSPORT_TLS)
+add_nng_test1(tcp 180 NNG_TRANSPORT_TCP)
+add_nng_test2(tcp6 60 NNG_STATIC_LIB NNG_TRANSPORT_TCP)
+add_nng_test1(transport 5 NNG_STATIC_LIB)
+add_nng_test1(udp 5 NNG_STATIC_LIB)
+add_nng_test(url 5)
+add_nng_test1(ws 30 NNG_TRANSPORT_WS)
+add_nng_test1(wss 30 NNG_TRANSPORT_WSS)
+add_nng_test2(wssfile 30 NNG_STATIC_LIB NNG_TRANSPORT_WSS)
+add_nng_test1(zt 60 NNG_TRANSPORT_ZEROTIER)
+
+add_nng_test1(bus 5 NNG_PROTO_BUS0)
+add_nng_test2(pipeline 5 NNG_PROTO_PULL0 NNG_PROTO_PUSH0)
+add_nng_test1(pair1 5 NNG_PROTO_PAIR1)
+add_nng_test2(pubsub 5 NNG_PROTO_PUB0 NNG_PROTO_SUB0)
+add_nng_test2(reqctx 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqpoll 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqrep 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqstress 60 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(respondpoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(survey 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(surveyctx 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(surveypoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
# compatbility tests
# We only support these if ALL the legacy protocols are supported. This
@@ -201,7 +208,7 @@ add_nng_compat_test(compat_ws 60)
# These are special tests for compat mode, not inherited from the
# legacy libnanomsg suite.
-add_nng_test(compat_options 5 NNG_PROTO_REP0)
+add_nng_test1(compat_options 5 NNG_PROTO_REP0)
# c++ tests
add_nng_cpp_test(cplusplus_pair 5)
diff --git a/tests/errors.c b/tests/errors.c
index f5e857e2..06747c24 100644
--- a/tests/errors.c
+++ b/tests/errors.c
@@ -8,12 +8,11 @@
//
#include "convey.h"
-#include "nng.c"
+#include "nng.h"
#include <errno.h>
#include <string.h>
TestMain("Error messages work", {
-
Convey("Known errors work", {
So(strcmp(nng_strerror(NNG_ECLOSED), "Object closed") == 0);
So(strcmp(nng_strerror(NNG_ETIMEDOUT), "Timed out") == 0);
@@ -28,6 +27,5 @@ TestMain("Error messages work", {
strerror(ENOENT)) == 0);
So(strcmp(nng_strerror(NNG_ESYSERR + EINVAL),
strerror(EINVAL)) == 0);
-
});
})
diff --git a/tests/httpclient.c b/tests/httpclient.c
index e167587e..96597d0c 100644
--- a/tests/httpclient.c
+++ b/tests/httpclient.c
@@ -18,6 +18,7 @@
// Basic HTTP client tests.
#include "core/nng_impl.h"
#include "supplemental/http/http.h"
+#include "supplemental/sha1/sha1.c"
#include "supplemental/sha1/sha1.h"
#include "supplemental/tls/tls.h"
@@ -26,8 +27,6 @@ const uint8_t example_sum[20] = { 0x0e, 0x97, 0x3b, 0x59, 0xf4, 0x76, 0x00,
0xc0 };
TestMain("HTTP Client", {
-
- nni_init();
atexit(nng_fini);
Convey("Given a TCP connection to httpbin.org", {
@@ -86,9 +85,9 @@ TestMain("HTTP Client", {
sz = atoi(cstr);
So(sz > 0);
- data = nni_alloc(sz);
+ data = nng_alloc(sz);
So(data != NULL);
- Reset({ nni_free(data, sz); });
+ Reset({ nng_free(data, sz); });
iov.iov_buf = data;
iov.iov_len = sz;
diff --git a/tests/httpserver.c b/tests/httpserver.c
index fb8e300e..9898a0ff 100644
--- a/tests/httpserver.c
+++ b/tests/httpserver.c
@@ -73,7 +73,7 @@ httpdo(nng_url *url, nng_http_req *req, nng_http_res *res, void **datap,
if (clen > 0) {
nng_iov iov;
- data = nni_alloc(clen);
+ data = nng_alloc(clen);
iov.iov_buf = data;
iov.iov_len = clen;
nng_aio_set_iov(aio, 1, &iov);
@@ -128,7 +128,7 @@ httpget(const char *addr, void **datap, size_t *sizep, uint16_t *statp,
if (clen > 0) {
if ((ptr = nng_http_res_get_header(res, "Content-Type")) !=
NULL) {
- ctype = nni_strdup(ptr);
+ ctype = strdup(ptr);
}
}
@@ -139,9 +139,9 @@ httpget(const char *addr, void **datap, size_t *sizep, uint16_t *statp,
fail:
if (rv != 0) {
if (data != NULL) {
- nni_free(data, clen);
+ nng_free(data, clen);
}
- nni_strfree(ctype);
+ free(ctype);
}
if (url != NULL) {
nni_url_free(url);
@@ -289,19 +289,19 @@ TestMain("HTTP Server", {
Reset({
nng_http_server_release(s);
- nni_strfree(tmpdir);
+ free(tmpdir);
nni_file_delete(file1);
nni_file_delete(file2);
nni_file_delete(file3);
nni_file_delete(subdir1);
nni_file_delete(subdir2);
nni_file_delete(workdir);
- nni_strfree(workdir);
- nni_strfree(file1);
- nni_strfree(file2);
- nni_strfree(file3);
- nni_strfree(subdir1);
- nni_strfree(subdir2);
+ free(workdir);
+ free(file1);
+ free(file2);
+ free(file3);
+ free(subdir1);
+ free(subdir2);
nng_url_free(url);
});
@@ -325,7 +325,7 @@ TestMain("HTTP Server", {
So(size == strlen(doc1));
So(memcmp(data, doc1, size) == 0);
So(strcmp(ctype, "text/html") == 0);
- nni_strfree(ctype);
+ free(ctype);
nng_free(data, size);
});
diff --git a/tests/sock.c b/tests/sock.c
index 37b713dd..29043cb3 100644
--- a/tests/sock.c
+++ b/tests/sock.c
@@ -25,7 +25,6 @@
#define SECONDS(x) ((x) *1000)
TestMain("Socket Operations", {
-
atexit(nng_fini);
// Reset({ nng_fini(); });
Reset({ nng_closeall(); });
@@ -98,7 +97,7 @@ TestMain("Socket Operations", {
So(nng_getopt(
s1, NNG_OPT_SOCKNAME, name, &sz) == 0);
So(sz > 0 && sz < 64);
- So(sz == nni_strnlen(name, 64) + 1);
+ So(sz == strlen(name) + 1);
So(atoi(name) == (int) s1.id);
So(nng_setopt(
@@ -409,7 +408,6 @@ TestMain("Socket Operations", {
l.id = ep.id;
So(nng_listener_start(l, 0) == NNG_ENOTSUP);
});
-
});
Convey("Listener creation ok", {
@@ -496,7 +494,6 @@ TestMain("Socket Operations", {
NNG_ENOENT);
So(nng_listener_getopt_ms(l, NNG_OPT_SENDTIMEO, &t) ==
NNG_ENOENT);
-
});
Convey("We can send and receive messages", {
diff --git a/tests/trantest.h b/tests/trantest.h
index de82099c..92d1db09 100644
--- a/tests/trantest.h
+++ b/tests/trantest.h
@@ -124,7 +124,7 @@ trantest_next_address(char *out, const char *template)
// start at a different port each time -- 5000 - 10000 --
// unless a specific port is given.
- trantest_port = nni_clock() % 5000 + 5000;
+ trantest_port = nng_clock() % 5000 + 5000;
if (((pstr = ConveyGetEnv("TEST_PORT")) != NULL) &&
(atoi(pstr) != 0)) {
trantest_port = atoi(pstr);
@@ -146,7 +146,7 @@ trantest_init(trantest *tt, const char *addr)
{
trantest_next_address(tt->addr, addr);
-#if defined(NNG_HAVE_REQ0) && defined(NNG_HAVE_REP0)
+#if defined(NNG_HAVE_REQ0) && defined(NNG_HAVE_REP0) && defined(NNG_STATIC_LIB)
So(nng_req_open(&tt->reqsock) == 0);
So(nng_rep_open(&tt->repsock) == 0);
@@ -426,7 +426,7 @@ trantest_send_recv_large(trantest *tt)
So((data = nng_alloc(size)) != NULL);
for (int i = 0; (size_t) i < size; i++) {
- data[i] = nni_random() & 0xff;
+ data[i] = nng_random() & 0xff;
}
So(trantest_listen(tt, &l) == 0);