Commit 00a448b1 authored by Luca Boccassi's avatar Luca Boccassi

Problem: WS tests bind to hard-coded TCP port and fail when ran in parallel

Solution: bind to wildcard and use ZMQ_LAST_ENDPOINT
parent a61db18e
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <string.h>
#include "testutil.hpp" #include "testutil.hpp"
#include "testutil_unity.hpp" #include "testutil_unity.hpp"
...@@ -34,12 +35,16 @@ SETUP_TEARDOWN_TESTCONTEXT ...@@ -34,12 +35,16 @@ SETUP_TEARDOWN_TESTCONTEXT
void test_roundtrip () void test_roundtrip ()
{ {
char connect_address[MAX_SOCKET_STRING + strlen ("/roundtrip")];
size_t addr_length = sizeof (connect_address);
void *sb = test_context_socket (ZMQ_REP); void *sb = test_context_socket (ZMQ_REP);
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:5556/roundtrip")); TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/roundtrip"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/roundtrip");
void *sc = test_context_socket (ZMQ_REQ); void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO ( TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
zmq_connect (sc, "ws://127.0.0.1:5556/roundtrip"));
bounce (sb, sc); bounce (sb, sc);
...@@ -49,11 +54,16 @@ void test_roundtrip () ...@@ -49,11 +54,16 @@ void test_roundtrip ()
void test_short_message () void test_short_message ()
{ {
char connect_address[MAX_SOCKET_STRING + strlen ("/short")];
size_t addr_length = sizeof (connect_address);
void *sb = test_context_socket (ZMQ_REP); void *sb = test_context_socket (ZMQ_REP);
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:5557/short")); TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/short"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/short");
void *sc = test_context_socket (ZMQ_REQ); void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, "ws://127.0.0.1:5557/short")); TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
zmq_msg_t msg; zmq_msg_t msg;
TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init_size (&msg, 255)); TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init_size (&msg, 255));
...@@ -78,11 +88,16 @@ void test_short_message () ...@@ -78,11 +88,16 @@ void test_short_message ()
void test_large_message () void test_large_message ()
{ {
char connect_address[MAX_SOCKET_STRING + strlen ("/large")];
size_t addr_length = sizeof (connect_address);
void *sb = test_context_socket (ZMQ_REP); void *sb = test_context_socket (ZMQ_REP);
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:5557/large")); TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "ws://*:*/large"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/short");
void *sc = test_context_socket (ZMQ_REQ); void *sc = test_context_socket (ZMQ_REQ);
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, "ws://127.0.0.1:5557/large")); TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
zmq_msg_t msg; zmq_msg_t msg;
TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init_size (&msg, 65536)); TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init_size (&msg, 65536));
...@@ -108,6 +123,8 @@ void test_large_message () ...@@ -108,6 +123,8 @@ void test_large_message ()
void test_curve () void test_curve ()
{ {
char connect_address[MAX_SOCKET_STRING + strlen ("/roundtrip")];
size_t addr_length = sizeof (connect_address);
char client_public[41]; char client_public[41];
char client_secret[41]; char client_secret[41];
char server_public[41]; char server_public[41];
...@@ -124,7 +141,10 @@ void test_curve () ...@@ -124,7 +141,10 @@ void test_curve ()
zmq_setsockopt (server, ZMQ_CURVE_SERVER, &as_server, sizeof (int))); zmq_setsockopt (server, ZMQ_CURVE_SERVER, &as_server, sizeof (int)));
TEST_ASSERT_SUCCESS_ERRNO ( TEST_ASSERT_SUCCESS_ERRNO (
zmq_setsockopt (server, ZMQ_CURVE_SECRETKEY, server_secret, 41)); zmq_setsockopt (server, ZMQ_CURVE_SECRETKEY, server_secret, 41));
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (server, "ws://*:5556/roundtrip")); TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (server, "ws://*:*/roundtrip"));
TEST_ASSERT_SUCCESS_ERRNO (zmq_getsockopt (server, ZMQ_LAST_ENDPOINT,
connect_address, &addr_length));
strcat (connect_address, "/roundtrip");
void *client = test_context_socket (ZMQ_REQ); void *client = test_context_socket (ZMQ_REQ);
...@@ -134,8 +154,7 @@ void test_curve () ...@@ -134,8 +154,7 @@ void test_curve ()
zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 41)); zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 41));
TEST_ASSERT_SUCCESS_ERRNO ( TEST_ASSERT_SUCCESS_ERRNO (
zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 41)); zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 41));
TEST_ASSERT_SUCCESS_ERRNO ( TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (client, connect_address));
zmq_connect (client, "ws://127.0.0.1:5556/roundtrip"));
bounce (server, client); bounce (server, client);
......
...@@ -124,16 +124,20 @@ const char *cert = ...@@ -124,16 +124,20 @@ const char *cert =
void test_roundtrip () void test_roundtrip ()
{ {
char connect_address[MAX_SOCKET_STRING + strlen ("/roundtrip")];
size_t addr_length = sizeof (connect_address);
void *sb = test_context_socket (ZMQ_REP); void *sb = test_context_socket (ZMQ_REP);
zmq_setsockopt (sb, ZMQ_WSS_CERT_PEM, cert, strlen (cert)); zmq_setsockopt (sb, ZMQ_WSS_CERT_PEM, cert, strlen (cert));
zmq_setsockopt (sb, ZMQ_WSS_KEY_PEM, key, strlen (key)); zmq_setsockopt (sb, ZMQ_WSS_KEY_PEM, key, strlen (key));
TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "wss://*:5556/roundtrip")); TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "wss://*:*/roundtrip"));
TEST_ASSERT_SUCCESS_ERRNO (
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, connect_address, &addr_length));
strcat (connect_address, "/roundtrip");
void *sc = test_context_socket (ZMQ_REQ); void *sc = test_context_socket (ZMQ_REQ);
zmq_setsockopt (sc, ZMQ_WSS_TRUST_PEM, cert, strlen (cert)); zmq_setsockopt (sc, ZMQ_WSS_TRUST_PEM, cert, strlen (cert));
zmq_setsockopt (sc, ZMQ_WSS_HOSTNAME, "zeromq.org", strlen ("zeromq.org")); zmq_setsockopt (sc, ZMQ_WSS_HOSTNAME, "zeromq.org", strlen ("zeromq.org"));
TEST_ASSERT_SUCCESS_ERRNO ( TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
zmq_connect (sc, "wss://127.0.0.1:5556/roundtrip"));
bounce (sb, sc); bounce (sb, sc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment