mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-27 11:06:52 +01:00
Problem: tests without test framework
Solution: migrate to unity
This commit is contained in:
@@ -28,36 +28,41 @@
|
||||
*/
|
||||
|
||||
#include "testutil.hpp"
|
||||
#include "testutil_unity.hpp"
|
||||
|
||||
int main (void)
|
||||
#include <unity.h>
|
||||
|
||||
void setUp ()
|
||||
{
|
||||
setup_test_environment ();
|
||||
void *ctx = zmq_ctx_new ();
|
||||
assert (ctx);
|
||||
setup_test_context ();
|
||||
}
|
||||
|
||||
void *frontend = zmq_socket (ctx, ZMQ_DEALER);
|
||||
assert (frontend);
|
||||
int rc = zmq_bind (frontend, "inproc://timeout_test");
|
||||
assert (rc == 0);
|
||||
void tearDown ()
|
||||
{
|
||||
teardown_test_context ();
|
||||
}
|
||||
|
||||
void test_timeo ()
|
||||
{
|
||||
void *frontend = test_context_socket (ZMQ_DEALER);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (frontend, "inproc://timeout_test"));
|
||||
|
||||
// Receive on disconnected socket returns immediately
|
||||
char buffer[32];
|
||||
rc = zmq_recv (frontend, buffer, 32, ZMQ_DONTWAIT);
|
||||
assert (rc == -1);
|
||||
assert (zmq_errno () == EAGAIN);
|
||||
TEST_ASSERT_FAILURE_ERRNO (EAGAIN,
|
||||
zmq_recv (frontend, buffer, 32, ZMQ_DONTWAIT));
|
||||
|
||||
|
||||
// Check whether receive timeout is honored
|
||||
const int timeout = 250;
|
||||
const int jitter = 50;
|
||||
rc = zmq_setsockopt (frontend, ZMQ_RCVTIMEO, &timeout, sizeof (int));
|
||||
assert (rc == 0);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
zmq_setsockopt (frontend, ZMQ_RCVTIMEO, &timeout, sizeof (int)));
|
||||
|
||||
void *stopwatch = zmq_stopwatch_start ();
|
||||
rc = zmq_recv (frontend, buffer, 32, 0);
|
||||
assert (rc == -1);
|
||||
assert (zmq_errno () == EAGAIN);
|
||||
TEST_ASSERT_FAILURE_ERRNO (EAGAIN, zmq_recv (frontend, buffer, 32, 0));
|
||||
unsigned int elapsed = zmq_stopwatch_stop (stopwatch) / 1000;
|
||||
assert (elapsed > timeout - jitter);
|
||||
TEST_ASSERT_GREATER_THAN_INT (timeout - jitter, elapsed);
|
||||
if (elapsed >= timeout + jitter) {
|
||||
// we cannot assert this on a non-RT system
|
||||
fprintf (stderr,
|
||||
@@ -67,27 +72,24 @@ int main (void)
|
||||
}
|
||||
|
||||
// Check that normal message flow works as expected
|
||||
void *backend = zmq_socket (ctx, ZMQ_DEALER);
|
||||
assert (backend);
|
||||
rc = zmq_connect (backend, "inproc://timeout_test");
|
||||
assert (rc == 0);
|
||||
rc = zmq_setsockopt (backend, ZMQ_SNDTIMEO, &timeout, sizeof (int));
|
||||
assert (rc == 0);
|
||||
void *backend = test_context_socket (ZMQ_DEALER);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (backend, "inproc://timeout_test"));
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
zmq_setsockopt (backend, ZMQ_SNDTIMEO, &timeout, sizeof (int)));
|
||||
|
||||
rc = zmq_send (backend, "Hello", 5, 0);
|
||||
assert (rc == 5);
|
||||
rc = zmq_recv (frontend, buffer, 32, 0);
|
||||
assert (rc == 5);
|
||||
send_string_expect_success (backend, "Hello", 0);
|
||||
recv_string_expect_success (frontend, "Hello", 0);
|
||||
|
||||
// Clean-up
|
||||
rc = zmq_close (backend);
|
||||
assert (rc == 0);
|
||||
|
||||
rc = zmq_close (frontend);
|
||||
assert (rc == 0);
|
||||
|
||||
rc = zmq_ctx_term (ctx);
|
||||
assert (rc == 0);
|
||||
|
||||
return 0;
|
||||
test_context_socket_close (backend);
|
||||
test_context_socket_close (frontend);
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
setup_test_environment ();
|
||||
|
||||
UNITY_BEGIN ();
|
||||
RUN_TEST (test_timeo);
|
||||
return UNITY_END ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user