Page MenuHomePhabricator

test: p2p: check disconnect due to lack of desirable service flags
Needs RevisionPublic

Authored by PiRK on Aug 6 2025, 11:26.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Summary

This PR adds missing test coverage for disconnecting peers which don't offer the desirable service flags in their VERSION message.

This check is relevant for the connection types "outbound-full-relay", "block-relay-only" and "addr-fetch" (see CNode::ExpectServicesFromConn(...)). Feeler connections always disconnect, which is also tested here.

This also adds coverage for the logic introduced in PR #28170
("p2p: adaptive connections services flags").

This is a backport of core#29279, core#29704 and core#29898
Depends on D18451

Test Plan

ninja all check-all

Event Timeline

PiRK requested review of this revision.Aug 6 2025, 11:26

lint f-string without placeholder

Tail of the build log:

PASSED          [100%]##teamcity[testFinished timestamp='2025-08-06T11:41:51.419' duration='39' flowId='tests.test_iguana.test_redeem_script_input_sigchecks' name='tests.test_iguana.test_redeem_script_input_sigchecks']


============================== 20 passed in 0.55s ==============================
[200/524] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/daa_tests.cpp.o
[201/524] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/message_writer_tests.cpp.o
[202/524] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/write_name_tests.cpp.o
[203/524] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/wallet_tests.cpp.o
[204/524] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/p2p_messaging_tests.cpp.o
[205/524] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/eda_tests.cpp.o
[206/524] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/grasberg_tests.cpp.o
[207/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/bitcoinaddressvalidatortests.cpp.o
[208/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/compattests.cpp.o
[209/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/util.cpp.o
[210/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/test_bitcoin-qt_autogen/mocs_compilation.cpp.o
[211/524] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/fixture.cpp.o
[212/524] Test Bitcoin utilities...
[213/524] Linking CXX executable src/pow/test/test-pow
[214/524] pow: testing daa_tests
[215/524] Running utility command for check-pow-daa_tests
[216/524] pow: testing eda_tests
[217/524] Running utility command for check-pow-eda_tests
[218/524] pow: testing grasberg_tests
[219/524] Running utility command for check-pow-grasberg_tests
[220/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/guiutiltests.cpp.o
[221/524] pow: testing aserti32d_tests
[222/524] Running utility command for check-pow-aserti32d_tests
[223/524] Running pow test suite
PASSED: pow test suite
[224/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/uritests.cpp.o
[225/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/optiontests.cpp.o
[226/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/apptests.cpp.o
[227/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/test_main.cpp.o
[228/524] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/fixture.cpp.o
[229/524] Linking CXX executable src/seeder/test/test-seeder
[230/524] seeder: testing db_tests
[231/524] seeder: testing parse_name_tests
[232/524] seeder: testing message_writer_tests
[233/524] seeder: testing options_tests
[234/524] seeder: testing p2p_messaging_tests
[235/524] Running utility command for check-seeder-db_tests
[236/524] Running utility command for check-seeder-parse_name_tests
[237/524] seeder: testing write_name_tests
[238/524] Running utility command for check-seeder-message_writer_tests
[239/524] Running utility command for check-seeder-options_tests
[240/524] Running utility command for check-seeder-p2p_messaging_tests
[241/524] Running utility command for check-seeder-write_name_tests
[242/524] Running seeder test suite
PASSED: seeder test suite
[243/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/rpcnestedtests.cpp.o
[244/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/paymentservertests.cpp.o
[245/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/__/__/wallet/test/wallet_test_fixture.cpp.o
[246/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/addressbooktests.cpp.o
[247/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/wallettests.cpp.o
[248/524] Linking CXX executable src/qt/test/test_bitcoin-qt
[249/524] bitcoin-qt: testing test_bitcoin-qt
[250/524] Running bitcoin-qt test suite
PASSED: bitcoin-qt test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

tests/test_iguana.py::test_redeem_script_empty_stack ##teamcity[testStarted timestamp='2025-08-06T11:48:43.672' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_empty_stack' metainfo='test_redeem_script_empty_stack' name='tests.test_iguana.test_redeem_script_empty_stack']
PASSED              [ 85%]##teamcity[testFinished timestamp='2025-08-06T11:48:43.685' duration='12' flowId='tests.test_iguana.test_redeem_script_empty_stack' name='tests.test_iguana.test_redeem_script_empty_stack']

tests/test_iguana.py::test_redeem_script_false ##teamcity[testStarted timestamp='2025-08-06T11:48:43.686' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_false' metainfo='test_redeem_script_false' name='tests.test_iguana.test_redeem_script_false']
PASSED                    [ 90%]##teamcity[testFinished timestamp='2025-08-06T11:48:43.699' duration='12' flowId='tests.test_iguana.test_redeem_script_false' name='tests.test_iguana.test_redeem_script_false']

tests/test_iguana.py::test_redeem_script_cleanstack ##teamcity[testStarted timestamp='2025-08-06T11:48:43.700' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_cleanstack' metainfo='test_redeem_script_cleanstack' name='tests.test_iguana.test_redeem_script_cleanstack']
PASSED               [ 95%]##teamcity[testFinished timestamp='2025-08-06T11:48:43.723' duration='22' flowId='tests.test_iguana.test_redeem_script_cleanstack' name='tests.test_iguana.test_redeem_script_cleanstack']

tests/test_iguana.py::test_redeem_script_input_sigchecks ##teamcity[testStarted timestamp='2025-08-06T11:48:43.724' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_input_sigchecks' metainfo='test_redeem_script_input_sigchecks' name='tests.test_iguana.test_redeem_script_input_sigchecks']
PASSED          [100%]##teamcity[testFinished timestamp='2025-08-06T11:48:43.773' duration='48' flowId='tests.test_iguana.test_redeem_script_input_sigchecks' name='tests.test_iguana.test_redeem_script_input_sigchecks']


============================== 20 passed in 0.61s ==============================
[211/524] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/fixture.cpp.o
[212/524] Linking CXX executable src/pow/test/test-pow
[213/524] Test Bitcoin utilities...
[214/524] pow: testing daa_tests
[215/524] Running utility command for check-pow-daa_tests
[216/524] pow: testing eda_tests
[217/524] Running utility command for check-pow-eda_tests
[218/524] pow: testing grasberg_tests
[219/524] Running utility command for check-pow-grasberg_tests
[220/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/uritests.cpp.o
[221/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/guiutiltests.cpp.o
[222/524] pow: testing aserti32d_tests
[223/524] Running utility command for check-pow-aserti32d_tests
[224/524] Running pow test suite
PASSED: pow test suite
[225/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/apptests.cpp.o
[226/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/optiontests.cpp.o
[227/524] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/fixture.cpp.o
[228/524] Linking CXX executable src/seeder/test/test-seeder
[229/524] seeder: testing message_writer_tests
[230/524] seeder: testing db_tests
[231/524] seeder: testing options_tests
[232/524] seeder: testing parse_name_tests
[233/524] seeder: testing p2p_messaging_tests
[234/524] Running utility command for check-seeder-db_tests
[235/524] Running utility command for check-seeder-message_writer_tests
[236/524] Running utility command for check-seeder-options_tests
[237/524] Running utility command for check-seeder-parse_name_tests
[238/524] seeder: testing write_name_tests
[239/524] Running utility command for check-seeder-p2p_messaging_tests
[240/524] Running utility command for check-seeder-write_name_tests
[241/524] Running seeder test suite
PASSED: seeder test suite
[242/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/test_main.cpp.o
[243/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/rpcnestedtests.cpp.o
[244/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/paymentservertests.cpp.o
[245/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/__/__/wallet/test/wallet_test_fixture.cpp.o
[246/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/addressbooktests.cpp.o
[247/524] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/wallettests.cpp.o
[248/524] Linking CXX executable src/qt/test/test_bitcoin-qt
[249/524] bitcoin-qt: testing test_bitcoin-qt
[250/524] Running bitcoin-qt test suite
PASSED: bitcoin-qt test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1
Fabien requested changes to this revision.Aug 9 2025, 16:36
Fabien added a subscriber: Fabien.
Fabien added inline comments.
test/functional/p2p_handshake.py
55 ↗(On Diff #55116)

Do you mind adding the avalanche type here ?

This revision now requires changes to proceed.Aug 9 2025, 16:36