From 0266d4ac27b29bc5cb28c22f568dc12391366f8c Mon Sep 17 00:00:00 2001 From: Simon Giesecke Date: Wed, 20 Mar 2019 17:03:26 +0100 Subject: [PATCH] Problem: testutil_monitoring not using unity Solution: migrate to unity and adapt users --- tests/testutil_monitoring.hpp | 100 +++++++++++++++++++--------------- tests/testutil_security.hpp | 41 +++++++------- 2 files changed, 78 insertions(+), 63 deletions(-) diff --git a/tests/testutil_monitoring.hpp b/tests/testutil_monitoring.hpp index 03830d44..ed880c8d 100644 --- a/tests/testutil_monitoring.hpp +++ b/tests/testutil_monitoring.hpp @@ -30,7 +30,7 @@ #ifndef __TESTUTIL_MONITORING_HPP_INCLUDED__ #define __TESTUTIL_MONITORING_HPP_INCLUDED__ -#include "testutil.hpp" +#include "testutil_unity.hpp" // General, i.e. non-security specific, monitor utilities @@ -47,10 +47,10 @@ static int get_monitor_event_internal (void *monitor_, zmq_msg_t msg; zmq_msg_init (&msg); if (zmq_msg_recv (&msg, monitor_, recv_flag_) == -1) { - assert (errno == EAGAIN); + TEST_ASSERT_FAILURE_ERRNO (EAGAIN, -1); return -1; // timed out or no message available } - assert (zmq_msg_more (&msg)); + TEST_ASSERT_TRUE (zmq_msg_more (&msg)); uint8_t *data = (uint8_t *) zmq_msg_data (&msg); uint16_t event = *(uint16_t *) (data); @@ -59,9 +59,8 @@ static int get_monitor_event_internal (void *monitor_, // Second frame in message contains event address zmq_msg_init (&msg); - int res = zmq_msg_recv (&msg, monitor_, recv_flag_) == -1; - assert (res != -1); - assert (!zmq_msg_more (&msg)); + TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, monitor_, recv_flag_)); + TEST_ASSERT_FALSE (zmq_msg_more (&msg)); if (address_) { uint8_t *data = (uint8_t *) zmq_msg_data (&msg); @@ -111,23 +110,33 @@ int get_monitor_event (void *monitor_, int *value_, char **address_) void expect_monitor_event (void *monitor_, int expected_event_) { - int event = get_monitor_event (monitor_, NULL, NULL); - if (event != expected_event_) { - fprintf (stderr, "Expected monitor event %x but received %x\n", - expected_event_, event); - assert (event == expected_event_); - } + TEST_ASSERT_EQUAL_HEX (expected_event_, + get_monitor_event (monitor_, NULL, NULL)); } -void print_unexpected_event (int event_, +void print_unexpected_event (char *buf_, + size_t buf_size_, + int event_, int err_, int expected_event_, int expected_err_) { - fprintf (stderr, - "Unexpected event: 0x%x, value = %i/0x%x (expected: 0x%x, value " - "= %i/0x%x)\n", - event_, err_, err_, expected_event_, expected_err_, expected_err_); + snprintf (buf_, buf_size_, + "Unexpected event: 0x%x, value = %i/0x%x (expected: 0x%x, value " + "= %i/0x%x)\n", + event_, err_, err_, expected_event_, expected_err_, + expected_err_); +} + +void print_unexpected_event_stderr (int event_, + int err_, + int expected_event_, + int expected_err_) +{ + char buf[256]; + print_unexpected_event (buf, sizeof buf, event_, err_, expected_event_, + expected_err_); + fputs (buf, stderr); } // expects that one or more occurrences of the expected event are received @@ -179,13 +188,15 @@ int expect_monitor_event_multiple (void *server_mon_, } if (event != expected_event_ || (-1 != expected_err_ && err != expected_err_)) { - print_unexpected_event (event, err, expected_event_, expected_err_); - assert (false); + char buf[256]; + print_unexpected_event (buf, sizeof buf, event, err, + expected_event_, expected_err_); + TEST_FAIL_MESSAGE (buf); } ++count_of_expected_events; } - assert (optional_ || count_of_expected_events > 0 - || client_closed_connection); + TEST_ASSERT_TRUE (optional_ || count_of_expected_events > 0 + || client_closed_connection); return count_of_expected_events; } @@ -203,11 +214,11 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_, zmq_msg_t msg; zmq_msg_init (&msg); if (zmq_msg_recv (&msg, monitor_, recv_flag_) == -1) { - assert (errno == EAGAIN); + TEST_ASSERT_FAILURE_ERRNO (EAGAIN, -1); return -1; // timed out or no message available } - assert (zmq_msg_more (&msg)); - assert (sizeof (uint64_t) == zmq_msg_size (&msg)); + TEST_ASSERT_TRUE (zmq_msg_more (&msg)); + TEST_ASSERT_EQUAL_UINT (sizeof (uint64_t), zmq_msg_size (&msg)); uint64_t event; memcpy (&event, zmq_msg_data (&msg), sizeof (event)); @@ -216,11 +227,11 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_, // Second frame in message contains the number of values zmq_msg_init (&msg); if (zmq_msg_recv (&msg, monitor_, recv_flag_) == -1) { - assert (errno == EAGAIN); + TEST_ASSERT_FAILURE_ERRNO (EAGAIN, -1); return -1; // timed out or no message available } - assert (zmq_msg_more (&msg)); - assert (sizeof (uint64_t) == zmq_msg_size (&msg)); + TEST_ASSERT_TRUE (zmq_msg_more (&msg)); + TEST_ASSERT_EQUAL_UINT (sizeof (uint64_t), zmq_msg_size (&msg)); uint64_t value_count; memcpy (&value_count, zmq_msg_data (&msg), sizeof (value_count)); @@ -230,11 +241,11 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_, // Subsequent frames in message contain event values zmq_msg_init (&msg); if (zmq_msg_recv (&msg, monitor_, recv_flag_) == -1) { - assert (errno == EAGAIN); + TEST_ASSERT_FAILURE_ERRNO (EAGAIN, -1); return -1; // timed out or no message available } - assert (zmq_msg_more (&msg)); - assert (sizeof (uint64_t) == zmq_msg_size (&msg)); + TEST_ASSERT_TRUE (zmq_msg_more (&msg)); + TEST_ASSERT_EQUAL_UINT (sizeof (uint64_t), zmq_msg_size (&msg)); if (value_ && value_ + i) memcpy (value_ + i, zmq_msg_data (&msg), sizeof (*value_)); @@ -243,9 +254,8 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_, // Second-to-last frame in message contains local address zmq_msg_init (&msg); - int res = zmq_msg_recv (&msg, monitor_, recv_flag_) == -1; - assert (res != -1); - assert (zmq_msg_more (&msg)); + TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, monitor_, recv_flag_)); + TEST_ASSERT_TRUE (zmq_msg_more (&msg)); if (local_address_) { uint8_t *data = (uint8_t *) zmq_msg_data (&msg); @@ -258,9 +268,8 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_, // Last frame in message contains remote address zmq_msg_init (&msg); - res = zmq_msg_recv (&msg, monitor_, recv_flag_) == -1; - assert (res != -1); - assert (!zmq_msg_more (&msg)); + TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, monitor_, recv_flag_)); + TEST_ASSERT_TRUE (!zmq_msg_more (&msg)); if (remote_address_) { uint8_t *data = (uint8_t *) zmq_msg_data (&msg); @@ -326,24 +335,29 @@ void expect_monitor_event_v2 (void *monitor_, monitor_, NULL, expected_local_address_ ? &local_address : NULL, expected_remote_address_ ? &remote_address : NULL); bool failed = false; + char buf[256]; + char *pos = buf; if (event != expected_event_) { - fprintf (stderr, "Expected monitor event %llx, but received %llx\n", - (long long) expected_event_, (long long) event); + pos += snprintf (pos, sizeof buf - (pos - buf), + "Expected monitor event %llx, but received %llx\n", + (long long) expected_event_, (long long) event); failed = true; } if (expected_local_address_ && 0 != strcmp (local_address, expected_local_address_)) { - fprintf (stderr, "Expected local address %s, but received %s\n", - expected_local_address_, local_address); + pos += snprintf (pos, sizeof buf - (pos - buf), + "Expected local address %s, but received %s\n", + expected_local_address_, local_address); } if (expected_remote_address_ && 0 != strcmp (remote_address, expected_remote_address_)) { - fprintf (stderr, "Expected remote address %s, but received %s\n", - expected_remote_address_, remote_address); + pos += snprintf (pos, sizeof buf - (pos - buf), + "Expected remote address %s, but received %s\n", + expected_remote_address_, remote_address); } free (local_address); free (remote_address); - assert (!failed); + TEST_ASSERT_FALSE_MESSAGE (failed, buf); } #endif diff --git a/tests/testutil_security.hpp b/tests/testutil_security.hpp index 3e90e13d..c1b50829 100644 --- a/tests/testutil_security.hpp +++ b/tests/testutil_security.hpp @@ -305,26 +305,27 @@ void zap_handler (void * /*unused_*/) // assert_* are macros rather than functions, to allow assertion failures be // attributed to the causing source code line -#define assert_no_more_monitor_events_with_timeout(monitor, timeout) \ - { \ - int event_count = 0; \ - int event, err; \ - while ((event = get_monitor_event_with_timeout ((monitor), &err, NULL, \ - (timeout))) \ - != -1) { \ - if (event == ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL \ - && (err == EPIPE || err == ECONNRESET \ - || err == ECONNABORTED)) { \ - fprintf (stderr, \ - "Ignored event (skipping any further events): %x " \ - "(err = %i == %s)\n", \ - event, err, zmq_strerror (err)); \ - continue; \ - } \ - ++event_count; \ - print_unexpected_event (event, err, 0, 0); \ - } \ - TEST_ASSERT_EQUAL_INT (0, event_count); \ +#define assert_no_more_monitor_events_with_timeout(monitor, timeout) \ + { \ + int event_count = 0; \ + int event, err; \ + while ((event = get_monitor_event_with_timeout ((monitor), &err, NULL, \ + (timeout))) \ + != -1) { \ + if (event == ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL \ + && (err == EPIPE || err == ECONNRESET \ + || err == ECONNABORTED)) { \ + fprintf (stderr, \ + "Ignored event (skipping any further events): %x " \ + "(err = %i == %s)\n", \ + event, err, zmq_strerror (err)); \ + continue; \ + } \ + ++event_count; \ + /* TODO write this into a buffer and attach to the assertion msg below */ \ + print_unexpected_event_stderr (event, err, 0, 0); \ + } \ + TEST_ASSERT_EQUAL_INT (0, event_count); \ } void setup_handshake_socket_monitor (void *server_,