libzmq/tests
Luca Boccassi 510a42c3d5 Problem: test_system fails on Solaris due to lower file limit
Solution: use a different max socket value on Solaris, where the
default limit is 256 instead of 1024
2018-05-13 13:18:08 +01:00
..
CMakeLists.txt Problem: heartbeat tests only cover ROUTER/DEALER 2018-04-28 15:49:54 +01:00
README.md Problem: missing guidelines on proper test cleanup 2018-03-14 12:26:06 +01:00
test_abstract_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_address_tipc.cpp Support application metadata through ZMQ_METADATA 2018-03-14 12:56:15 +01:00
test_ancillaries.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_app_meta.cpp Support application metadata through ZMQ_METADATA 2018-03-14 12:56:15 +01:00
test_atomics.cpp Problem: copyright year is still 2015 2016-01-28 15:07:31 +01:00
test_base85.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_bind_after_connect_tcp.cpp Migrate tests/test_bind_after_connect_tcp.cpp to unity 2018-03-14 18:45:25 +01:00
test_bind_src_address.cpp Migrate tests/test_bind_src_address.cpp to unity 2018-03-14 18:45:25 +01:00
test_capabilities.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_client_server.cpp Problem: different aspects mixed in one test case 2018-03-14 18:59:36 +01:00
test_conflate.cpp Migrate tests/test_conflate.cpp to unity 2018-03-14 19:05:19 +01:00
test_connect_delay_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_connect_resolve.cpp Problem: test_connect_resolve not yet using unity 2018-03-14 22:40:24 +01:00
test_connect_rid.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_ctx_destroy.cpp Problem: socket_poller destruction after context shutdown is only tested with a non-thread-safe socket 2018-03-28 11:23:08 +02:00
test_ctx_options.cpp Problem: enormous memory increase due to zero copy decoding 2018-03-05 18:13:28 +01:00
test_dgram.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_diffserv.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_disconnect_inproc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_filter_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_fork.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_getsockopt_memset.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_heartbeats.cpp Problem: heartbeat tests only cover ROUTER/DEALER 2018-04-28 15:49:54 +01:00
test_hwm_pubsub.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_hwm.cpp Problem: test assertion failures do not clean up properly 2018-03-14 12:24:21 +01:00
test_immediate.cpp Problem: test_immediate not using unity 2018-03-16 15:46:39 +01:00
test_inproc_connect.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_invalid_rep.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_iov.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_ipc_wildcard.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_issue_566.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_last_endpoint.cpp Problem: test_last_endpoint not using unity 2018-03-16 16:35:31 +01:00
test_many_sockets.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_metadata.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_monitor.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_msg_ffn.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_msg_flags.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_pair_inproc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_pair_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_pair_tcp.cpp Problem: use of TCP loopback fastpath not available for user sockets 2018-02-09 14:22:42 +01:00
test_pair_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_pair_vmci.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_poller.cpp Problem: bind_loopback_ipv4 not reusable 2018-03-16 15:21:39 +01:00
test_probe_router.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_proxy_single_socket.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_proxy_terminate.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_proxy.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_pub_invert_matching.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_radio_dish.cpp Problem: ZMQ doesn't expose the MULTICAST_LOOP socket option 2018-05-10 19:24:46 +02:00
test_rebind_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_reconnect_ivl.cpp Problem: test_reconnect_ivl not using unity 2018-03-15 16:43:26 +01:00
test_req_correlate.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_req_relaxed.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_reqrep_device_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_reqrep_device.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_reqrep_inproc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_reqrep_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_reqrep_tcp.cpp Problem: open TODO comment regarding explicit zmq_disconnect/zmq_unbind 2018-03-21 16:28:10 +01:00
test_reqrep_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_reqrep_vmci.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_router_handover.cpp Problem: test_router_hangover not yet using unity 2018-03-14 15:09:13 +01:00
test_router_mandatory_hwm.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_router_mandatory_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_router_mandatory.cpp Problem: test assertion failures do not clean up properly 2018-03-14 12:24:21 +01:00
test_scatter_gather.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_security_curve.cpp Problem: build failure with VS <2015, has no snprintf 2018-02-11 17:33:13 +00:00
test_security_gssapi.cpp Problem: 4.2.5 is out, we need to restore API changes and 4.3.x 2018-03-23 19:31:42 +00:00
test_security_null.cpp Problem: backward incompatible change to NULL with ZAP 2018-03-22 19:27:23 +00:00
test_security_plain.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_security_zap.cpp Problem: backward incompatible change to NULL with ZAP 2018-03-22 19:27:23 +00:00
test_setsockopt.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_shutdown_stress_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_shutdown_stress.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_socket_null.cpp Problem: test_socket_null not using test framework 2018-02-11 17:25:36 +00:00
test_sockopt_hwm.cpp Problem: test assertion failures do not clean up properly 2018-03-14 12:24:21 +01:00
test_sodium.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_spec_dealer.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_spec_pushpull.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_spec_rep.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_spec_req.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_spec_router.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_srcfd.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_stream_disconnect.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_stream_empty.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_stream_exceeds_buffer.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_stream_timeout.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_stream.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_sub_forward_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_sub_forward.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_system.cpp Problem: test_system fails on Solaris due to lower file limit 2018-05-13 13:18:08 +01:00
test_term_endpoint_tipc.cpp Problem: TIPC availability check is too strict (#2977) 2018-03-09 17:47:42 +01:00
test_term_endpoint.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_thread_safe.cpp Problem: test_thread_safe not using unity 2018-03-15 16:43:27 +01:00
test_timeo.cpp Problem: test_timeo frequently fails on travis, probably because of slow 2018-02-09 09:56:38 +01:00
test_timers.cpp Problem: DRAFT build broken with GCC 4.7 2018-02-10 17:08:01 +00:00
test_unbind_inproc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_unbind_wildcard.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_use_fd_ipc.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_use_fd_tcp.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_xpub_manual.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_xpub_nodrop.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_xpub_verbose.cpp Problem: no test for ZMQ_XPUB_VERBOSE(R) 2018-03-02 13:42:44 +01:00
test_xpub_welcome_msg.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
test_zmq_poll_fd.cpp Problem: formatting inconsistent 2018-02-02 15:47:43 +01:00
testutil_security.hpp Problem: cannot set ZAP_ENFORCE_DOMAIN in testutil's wrappers 2018-03-22 19:25:42 +00:00
testutil_unity.hpp Problem: test helper recv_string_expect_success ignores the flags argument 2018-05-10 11:43:47 +02:00
testutil.hpp Problem: address parsing code is tied to the TCP code 2018-05-02 18:06:01 +02:00

Guidelines for tests

Write your test case as if you were writing clean application code. It should be safe to compile on all platforms.

Normally, you should only include the header files from the tests directory, e.g. testutil.hpp. Do not include files from src. Do not use the internal libzmq API. Tests for these should be placed in unittests instead.

If you must write non-portable code, wrap it in #ifdefs to ensure it will compile and run on all systems.

Note that testutil.hpp includes platform.h. Do not include it yourself as it changes location depending on the build system and OS.

All sources must contain the correct copyright header. Please copy from test_system.cpp if you're not certain.

Write new tests using the unity test framework. For an example, see test_sockopt_hwm.

Please use only ANSI C99 in test cases, no C++. This is to make the code more reusable.

On many slower environments, like embedded systems, VMs or CI systems, tests might fail because it takes time for sockets to settle after a connect. If you need to add a sleep, please be consistent with all the other tests and use: msleep (SETTLE_TIME);

Ensure proper cleanup

If a test program uses unity, it will execute test cases individually, and will continue to run further test cases if an assertion in one test case fails. However, the test case that had an assertion failure will be aborted. To ensure that the resources of the test case are properly cleaned up, use appropriate setUp and tearDown functions. These are run by unity before each test case starts resp. after it ended (whether successfully or not). The same setUp and tearDown function is used for all test cases in a test program.

For many test cases, the following setUp and tearDown functions will be appropriate: void setUp () { setup_test_context (); }

void tearDown ()
{
	teardown_test_context ();
}

Within the tests, do not use zmq_socket and zmq_close then but test_context_socket and test_context_socket_close instead. These functions will register/unregister sockets with the test_context. All sockets not closed when tearDown is executed, with forcibly be closed with linger=0 before terminating the context. Note that it is a misuse not to close sockets during successful test execution, and a warning will be output.

Building tests in Windows

The tests are only built via cmake, not when using the checked-in Visual Studio .sln files.