Skip to content

Comments

Make failing test not hang#4622

Merged
bluca merged 1 commit intozeromq:masterfrom
ellert:make-failing-test-not-hang
Jun 26, 2025
Merged

Make failing test not hang#4622
bluca merged 1 commit intozeromq:masterfrom
ellert:make-failing-test-not-hang

Conversation

@ellert
Copy link
Contributor

@ellert ellert commented Nov 4, 2023

The tests/test_radio_dish test implements is_multicast_available() to verify that multicast is working on the system before running tests that relies on this, or skipping those test otherwise.

In some circumstances this check itself hangs due to the recvfrom() call being blocking waiting for data. The test is eventually killed with a SIGALARM signal.

./config/test-driver: line 112: 1227308 Alarm clock "$@" >> "$log_file" 2>&1
FAIL: tests/test_radio_dish

FAIL tests/test_radio_dish (exit status: 142)

$ tests/test_radio_dish
tests/test_radio_dish.cpp:511:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:512:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:513:test_long_group:PASS
tests/test_radio_dish.cpp:514:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:516:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:518:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:522:test_radio_dish_udp_ipv6:PASS
Alarm clock

With this commit, making the recvfrom() call non-blocking. The test does noy hang, and the non-available multicast is detected and the tests needing it are skipped:

PASS: tests/test_radio_dish

$ tests/test_radio_dish
tests/test_radio_dish.cpp:510:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:511:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:512:test_long_group:PASS
tests/test_radio_dish.cpp:513:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:514:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:516:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:518:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv6:PASS
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv6:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv6:IGNORE: No multicast available


16 Tests 0 Failures 4 Ignored
OK

@ellert ellert changed the title Make failing test noy hang Make failing test not hang Nov 11, 2023
@ellert ellert force-pushed the make-failing-test-not-hang branch from 113dd59 to dcc0fbc Compare December 8, 2023 06:39
@bluca bluca force-pushed the make-failing-test-not-hang branch from dcc0fbc to fcdd413 Compare June 25, 2025 19:08
@bluca
Copy link
Member

bluca commented Jun 25, 2025

D:\a\libzmq\libzmq\libzmq\tests\test_radio_dish.cpp(410,54): error C2065: 'MSG_DONTWAIT': undeclared identifier [D:\a\libzmq\libzmq\build_libzmq\tests\test_radio_dish.vcxproj]

verify that multicast is working on the system before running tests
that relies on this, or skipping those test otherwise.

In some circumstances this check itself hangs due to the recvfrom()
call being blocking waiting for data. The test is eventually killed
with a SIGALARM signal.

./config/test-driver: line 112: 1227308 Alarm clock             "$@" >> "$log_file" 2>&1
FAIL: tests/test_radio_dish

FAIL: tests/test_radio_dish
===========================

FAIL tests/test_radio_dish (exit status: 142)

$ tests/test_radio_dish
tests/test_radio_dish.cpp:511:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:512:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:513:test_long_group:PASS
tests/test_radio_dish.cpp:514:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:516:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:518:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:522:test_radio_dish_udp_ipv6:PASS
Alarm clock

With this commit, making the recvfrom() call non-blocking. The test
does noy hang, and the non-available multicast is detected and the
tests needing it are skipped:

PASS: tests/test_radio_dish

$ tests/test_radio_dish
tests/test_radio_dish.cpp:510:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:511:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:512:test_long_group:PASS
tests/test_radio_dish.cpp:513:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:514:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:516:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:518:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv6:PASS
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv6:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv6:IGNORE: No multicast available

-----------------------
16 Tests 0 Failures 4 Ignored
OK
@ellert ellert force-pushed the make-failing-test-not-hang branch from fcdd413 to 0761bb1 Compare June 26, 2025 11:46
@ellert
Copy link
Contributor Author

ellert commented Jun 26, 2025

D:\a\libzmq\libzmq\libzmq\tests\test_radio_dish.cpp(410,54): error C2065: 'MSG_DONTWAIT': undeclared identifier [D:\a\libzmq\libzmq\build_libzmq\tests\test_radio_dish.vcxproj]

Better?

@bluca
Copy link
Member

bluca commented Jun 26, 2025

Please push the release tags from the upstream repo to your github fork (git push --follow-tags), that way the OBS SCM/CI workflows can also run and test the changes in more environments

@bluca bluca merged commit 3e5ce5c into zeromq:master Jun 26, 2025
20 checks passed
@ellert ellert deleted the make-failing-test-not-hang branch June 26, 2025 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants