@@ -55,7 +55,7 @@ def test_outbound_eviction_unprotected(self):
5555 self .log .info ("Test that the peer gets evicted" )
5656 peer .wait_for_disconnect ()
5757
58- self .log .info ("Create an outbound connection and send header but never catch up" )
58+ self .log .info ("Create an outbound connection and send header but the peer never catches up" )
5959 # Mimic a node that just falls behind for long enough
6060 # This should also apply for a node doing IBD that does not catch up in time
6161 # Connect a peer and make it send us headers ending in our tip's parent
@@ -75,15 +75,15 @@ def test_outbound_eviction_unprotected(self):
7575 self .log .info ("Create an outbound connection and keep lagging behind, but not too much" )
7676 # Test that if the peer never catches up with our current tip, but it does with the
7777 # expected work that we set when setting the timer (that is, our tip at the time)
78- # we do not disconnect the peer
78+ # the node does not disconnect the peer
7979 peer = node .add_outbound_p2p_connection (P2PInterface (), p2p_idx = 0 , connection_type = "outbound-full-relay" )
8080
8181 self .log .info ("Mine a block so our peer starts lagging" )
8282 prev_prev_hash = tip_header .hashPrevBlock
8383 best_block_hash = self .generateblock (node , output = "raw(42)" , transactions = [])["hash" ]
8484 peer .sync_with_ping ()
8585
86- self .log .info ("Keep catching up with the old tip and check that we are not evicted " )
86+ self .log .info ("The peer keeps catching up with the old tip; check that the node does not evict the peer " )
8787 for i in range (10 ):
8888 # Generate an additional block so the peers is 2 blocks behind
8989 prev_header = from_hex (CBlockHeader (), node .getblockheader (best_block_hash , False ))
@@ -96,21 +96,21 @@ def test_outbound_eviction_unprotected(self):
9696 node .setmocktime (cur_mock_time )
9797 peer .sync_with_ping ()
9898
99- # Wait until we get out last call (by receiving a getheaders)
99+ # Make the peer wait until it gets node's last call (by receiving a getheaders)
100100 peer .wait_for_getheaders (block_hash = prev_prev_hash )
101101
102- # Send a header with the previous tip (so we go back to 1 block behind)
102+ # The peer sends a header with the previous tip (so the peer goes back to 1 block behind)
103103 peer .send_and_ping (msg_headers ([prev_header ]))
104104 prev_prev_hash = tip_header .hashPrevBlock
105105
106106 self .log .info ("Create an outbound connection and take some time to catch up, but do it in time" )
107107 # Check that if the peer manages to catch up within time, the timeouts are removed (and the peer is not disconnected)
108- # We are reusing the peer from the previous case which already sent us a valid (but old) block and whose timer is ticking
108+ # We are reusing the peer from the previous case which already sent the node a valid (but old) block and whose timer is ticking
109109
110- # Send an updated headers message matching our tip
110+ # Make the peer send an updated headers message matching our tip
111111 peer .send_and_ping (msg_headers ([from_hex (CBlockHeader (), node .getblockheader (best_block_hash , False ))]))
112112
113- # Wait for long enough for the timeouts to have triggered and check that we are still connected
113+ # Wait for long enough for the timeouts to have triggered and check that the peer is still connected
114114 cur_mock_time += (CHAIN_SYNC_TIMEOUT + 1 )
115115 node .setmocktime (cur_mock_time )
116116 peer .sync_with_ping ()
@@ -123,8 +123,10 @@ def test_outbound_eviction_unprotected(self):
123123
124124 def test_outbound_eviction_protected (self ):
125125 # This tests the eviction logic for **protected** outbound peers (that is, PeerManagerImpl::ConsiderEviction)
126- # Outbound connections are flagged as protected as long as they have sent us a connecting block with at least as
127- # much work as our current tip and we have enough empty protected_peers slots.
126+ # Outbound connections are flagged as protected if:
127+ # - The peer sends a connecting block with at least as much work as our current tip.
128+ # - There are still available slots in the node's protected_peers list.
129+ # This test ensures that such protected outbound peers are not disconnected even after chain sync and headers timeouts.
128130 node = self .nodes [0 ]
129131 cur_mock_time = node .mocktime
130132 tip_header = from_hex (CBlockHeader (), node .getblockheader (node .getbestblockhash (), False ))
@@ -145,7 +147,7 @@ def test_outbound_eviction_protected(self):
145147 peer .wait_for_getheaders (block_hash = tip_header .hashPrevBlock )
146148 cur_mock_time += (HEADERS_RESPONSE_TIME + 1 )
147149 node .setmocktime (cur_mock_time )
148- self .log .info ("Test that the node does not get evicted" )
150+ self .log .info ("Test that the peer does not get evicted" )
149151 peer .sync_with_ping ()
150152
151153 node .disconnect_p2ps ()
@@ -205,7 +207,7 @@ def test_outbound_eviction_mixed(self):
205207
206208 cur_mock_time += (HEADERS_RESPONSE_TIME + 1 )
207209 node .setmocktime (cur_mock_time )
208- self .log .info ("Check how none of the honest nor protected peers was evicted but all the misbehaving unprotected were" )
210+ self .log .info ("Check that none of the honest or protected peers were evicted, but all misbehaving unprotected peers were" )
209211 for peer in protected_peers + honest_unprotected_peers :
210212 peer .sync_with_ping ()
211213 for peer in misbehaving_unprotected_peers :
0 commit comments