Problem: tests use hard-coded fixed IPC file path

Solution: use wildcards or random directories to avoid races when
multiple users are running the same test on the same machine
This commit is contained in:
Luca Boccassi
2019-01-13 14:50:07 +00:00
parent 4147957a5e
commit f64b697095
4 changed files with 42 additions and 16 deletions

View File

@@ -42,24 +42,27 @@ void tearDown ()
teardown_test_context ();
}
static const char *SOCKET_ADDR = "ipc:///tmp/test_rebind_ipc";
void test_rebind_ipc ()
{
char my_endpoint[256];
size_t len = sizeof (my_endpoint);
void *sb0 = test_context_socket (ZMQ_PUSH);
void *sb1 = test_context_socket (ZMQ_PUSH);
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb0, SOCKET_ADDR));
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb0, "ipc://*"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb0, ZMQ_LAST_ENDPOINT, my_endpoint, &len));
void *sc = test_context_socket (ZMQ_PULL);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, SOCKET_ADDR));
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, my_endpoint));
send_string_expect_success (sb0, "42", 0);
recv_string_expect_success (sc, "42", 0);
test_context_socket_close (sb0);
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb1, SOCKET_ADDR));
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb1, my_endpoint));
send_string_expect_success (sb1, "42", 0);
recv_string_expect_success (sc, "42", 0);