10
10
from test_framework .messages import MSG_TX , msg_feefilter
11
11
from test_framework .mininode import mininode_lock , P2PInterface
12
12
from test_framework .test_framework import BitcoinTestFramework
13
+ from test_framework .util import assert_equal
13
14
14
15
15
16
def hashToHex (hash ):
@@ -26,6 +27,17 @@ def allInvsMatch(invsExpected, testnode):
26
27
return False
27
28
28
29
30
+ class FeefilterConn (P2PInterface ):
31
+ feefilter_received = False
32
+
33
+ def on_feefilter (self , message ):
34
+ self .feefilter_received = True
35
+
36
+ def assert_feefilter_received (self , recv : bool ):
37
+ with mininode_lock :
38
+ assert_equal (self .feefilter_received , recv )
39
+
40
+
29
41
class TestP2PConn (P2PInterface ):
30
42
def __init__ (self ):
31
43
super ().__init__ ()
@@ -55,6 +67,22 @@ def skip_test_if_missing_module(self):
55
67
self .skip_if_no_wallet ()
56
68
57
69
def run_test (self ):
70
+ self .test_feefilter_forcerelay ()
71
+ self .test_feefilter ()
72
+
73
+ def test_feefilter_forcerelay (self ):
74
+ self .log .info ('Check that peers without forcerelay permission (default) get a feefilter message' )
75
+ self .nodes [0 ].add_p2p_connection (FeefilterConn ()).assert_feefilter_received (True )
76
+
77
+ self .log .info ('Check that peers with forcerelay permission do not get a feefilter message' )
78
+ self .
restart_node (
0 ,
extra_args = [
'[email protected] ' ])
79
+ self .nodes [0 ].add_p2p_connection (FeefilterConn ()).assert_feefilter_received (False )
80
+
81
+ # Restart to disconnect peers and load default extra_args
82
+ self .restart_node (0 )
83
+ self .connect_nodes (1 , 0 )
84
+
85
+ def test_feefilter (self ):
58
86
node1 = self .nodes [1 ]
59
87
node0 = self .nodes [0 ]
60
88
0 commit comments