From cccc08ad565f340bd4e6d19d0137bc45ced93107 Mon Sep 17 00:00:00 2001 From: Neel Chauhan Date: Tue, 15 Nov 2016 20:33:31 -0500 Subject: [PATCH 1/5] Add expect_log_msg_containing_either3() and expect_log_msg_containing_either4() --- src/test/log_test_helpers.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/log_test_helpers.h b/src/test/log_test_helpers.h index 4c020c7ec..a8ad7e8cc 100644 --- a/src/test/log_test_helpers.h +++ b/src/test/log_test_helpers.h @@ -51,6 +51,21 @@ void mock_dump_saved_logs(void); mock_saved_log_has_message_containing(str2), \ "expected log to contain " # str1 " or " # str2); +#define expect_log_msg_containing_either3(str1, str2, str3) \ + assert_log_predicate3(mock_saved_log_has_message_containing(str1) || \ + (mock_saved_log_has_message_containing(str2) || \ + mock_saved_log_has_message_containing(str3), \ + "expected log to contain " # str1 " or " # str2 " or " # str3); + +#define expect_log_msg_containing_either4(str1, str2, str3, str4) \ + assert_log_predicate4(mock_saved_log_has_message_containing(str1) || \ + (mock_saved_log_has_message_containing(str2) || \ + (mock_saved_log_has_message_containing(str3) || \ + mock_saved_log_has_message_containing(str4), \ + "expected log to contain " # str1 " or " # str2 " or " # str3 " or " # str4); + + + #define expect_single_log_msg(str) \ do { \ \ From 01492d3869a49ff005dd8590e11466dd3cc0045a Mon Sep 17 00:00:00 2001 From: Neel Chauhan Date: Tue, 15 Nov 2016 20:35:48 -0500 Subject: [PATCH 2/5] Add all four error messages to test_address_get_if_addrs6_list_internal() --- src/test/test_address.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/test_address.c b/src/test/test_address.c index e52779cb6..e0a5ea4f0 100644 --- a/src/test/test_address.c +++ b/src/test/test_address.c @@ -808,8 +808,10 @@ test_address_get_if_addrs6_list_internal(void *arg) results = get_interface_address6_list(LOG_ERR, AF_INET6, 1); tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1); if (smartlist_len(mock_saved_logs()) == 1) { - expect_log_msg_containing_either("connect() failed", - "unable to create socket"); + expect_log_msg_containing_either4("connect() failed", + "unable to create socket", + "Address that we determined via UDP socket magic is unsuitable for public comms.", + "getsockname() to determine interface failed"); } teardown_capture_of_logs(); From 0825fc6af90b2015cb6a4abe6b8682f6f44d64e2 Mon Sep 17 00:00:00 2001 From: Neel Chauhan Date: Tue, 15 Nov 2016 20:36:53 -0500 Subject: [PATCH 3/5] Add all four error messages to test_address_get_if_addrs6_list_no_internal() --- src/test/test_address.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/test_address.c b/src/test/test_address.c index e0a5ea4f0..fa32cf963 100644 --- a/src/test/test_address.c +++ b/src/test/test_address.c @@ -848,8 +848,11 @@ test_address_get_if_addrs6_list_no_internal(void *arg) results = get_interface_address6_list(LOG_ERR, AF_INET6, 0); tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1); if (smartlist_len(mock_saved_logs()) == 1) { - expect_log_msg_containing_either("connect() failed", - "unable to create socket"); + expect_log_msg_containing_either4("connect() failed", + "unable to create socket", + "Address that we determined via UDP socket magic is unsuitable for public comms.", + "getsockname() to determine interface failed"); + } teardown_capture_of_logs(); From 150a2b39b0efc17205bef07845e7a6d68b8c5148 Mon Sep 17 00:00:00 2001 From: teor Date: Wed, 16 Nov 2016 13:03:20 +1100 Subject: [PATCH 4/5] fixup! Add expect_log_msg_containing_either3() and expect_log_msg_containing_either4() Fix typos: * extra '(' * use assert_log_predicate (without 3 or 4 at the end) Tidy whitespace. Wrap long lines. --- src/test/log_test_helpers.h | 28 ++++++++++++++-------------- src/test/test_address.c | 15 ++++++++++----- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/test/log_test_helpers.h b/src/test/log_test_helpers.h index a8ad7e8cc..922c68b42 100644 --- a/src/test/log_test_helpers.h +++ b/src/test/log_test_helpers.h @@ -49,22 +49,22 @@ void mock_dump_saved_logs(void); #define expect_log_msg_containing_either(str1, str2) \ assert_log_predicate(mock_saved_log_has_message_containing(str1) || \ mock_saved_log_has_message_containing(str2), \ - "expected log to contain " # str1 " or " # str2); - -#define expect_log_msg_containing_either3(str1, str2, str3) \ - assert_log_predicate3(mock_saved_log_has_message_containing(str1) || \ - (mock_saved_log_has_message_containing(str2) || \ - mock_saved_log_has_message_containing(str3), \ - "expected log to contain " # str1 " or " # str2 " or " # str3); - -#define expect_log_msg_containing_either4(str1, str2, str3, str4) \ - assert_log_predicate4(mock_saved_log_has_message_containing(str1) || \ - (mock_saved_log_has_message_containing(str2) || \ - (mock_saved_log_has_message_containing(str3) || \ - mock_saved_log_has_message_containing(str4), \ - "expected log to contain " # str1 " or " # str2 " or " # str3 " or " # str4); + "expected log to contain " # str1 " or " # str2); +#define expect_log_msg_containing_either3(str1, str2, str3) \ + assert_log_predicate(mock_saved_log_has_message_containing(str1) || \ + mock_saved_log_has_message_containing(str2) || \ + mock_saved_log_has_message_containing(str3), \ + "expected log to contain " # str1 " or " # str2 \ + " or " # str3); +#define expect_log_msg_containing_either4(str1, str2, str3, str4) \ + assert_log_predicate(mock_saved_log_has_message_containing(str1) || \ + mock_saved_log_has_message_containing(str2) || \ + mock_saved_log_has_message_containing(str3) || \ + mock_saved_log_has_message_containing(str4), \ + "expected log to contain " # str1 " or " # str2 \ + " or " # str3 " or " # str4); #define expect_single_log_msg(str) \ do { \ diff --git a/src/test/test_address.c b/src/test/test_address.c index fa32cf963..0d142ad48 100644 --- a/src/test/test_address.c +++ b/src/test/test_address.c @@ -810,8 +810,11 @@ test_address_get_if_addrs6_list_internal(void *arg) if (smartlist_len(mock_saved_logs()) == 1) { expect_log_msg_containing_either4("connect() failed", "unable to create socket", - "Address that we determined via UDP socket magic is unsuitable for public comms.", - "getsockname() to determine interface failed"); + "Address that we determined via UDP " + "socket magic is unsuitable for public " + "comms.", + "getsockname() to determine interface " + "failed"); } teardown_capture_of_logs(); @@ -850,9 +853,11 @@ test_address_get_if_addrs6_list_no_internal(void *arg) if (smartlist_len(mock_saved_logs()) == 1) { expect_log_msg_containing_either4("connect() failed", "unable to create socket", - "Address that we determined via UDP socket magic is unsuitable for public comms.", - "getsockname() to determine interface failed"); - + "Address that we determined via UDP " + "socket magic is unsuitable for public " + "comms.", + "getsockname() to determine interface " + "failed"); } teardown_capture_of_logs(); From 44f3563d872b56593c11a6e557b130714fa8916b Mon Sep 17 00:00:00 2001 From: teor Date: Wed, 16 Nov 2016 13:08:39 +1100 Subject: [PATCH 5/5] Changes file for bug 20634 --- changes/bug20634 | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changes/bug20634 diff --git a/changes/bug20634 b/changes/bug20634 new file mode 100644 index 000000000..62fc9f478 --- /dev/null +++ b/changes/bug20634 @@ -0,0 +1,3 @@ + o Minor bugfixes (unit tests): + - Stop spurious failures in the local interface address discovery unit + tests. Fixes bug 20634; bugfix on 0.2.8.1-alpha; patch by Neel Chauhan.