@ -42,6 +42,7 @@ import time
from test_framework . test_framework import BitcoinTestFramework
from test_framework . util import assert_equal , assert_raises_rpc_error , wait_until
class MempoolPersistTest ( BitcoinTestFramework ) :
def set_test_params ( self ) :
self . num_nodes = 3
@ -60,7 +61,7 @@ class MempoolPersistTest(BitcoinTestFramework):
self . log . debug ( " Send 5 transactions from node2 (to its own address) " )
for i in range ( 5 ) :
self . nodes [ 2 ] . sendtoaddress ( self . nodes [ 2 ] . getnewaddress ( ) , Decimal ( " 10 " ) )
last_txid = self . nodes [ 2 ] . sendtoaddress ( self . nodes [ 2 ] . getnewaddress ( ) , Decimal ( " 10 " ) )
node2_balance = self . nodes [ 2 ] . getbalance ( )
self . sync_all ( )
@ -68,6 +69,13 @@ class MempoolPersistTest(BitcoinTestFramework):
assert_equal ( len ( self . nodes [ 0 ] . getrawmempool ( ) ) , 5 )
assert_equal ( len ( self . nodes [ 1 ] . getrawmempool ( ) ) , 5 )
self . log . debug ( " Prioritize a transaction on node0 " )
fees = self . nodes [ 0 ] . getmempoolentry ( txid = last_txid ) [ ' fees ' ]
assert_equal ( fees [ ' base ' ] , fees [ ' modified ' ] )
self . nodes [ 0 ] . prioritisetransaction ( txid = last_txid , fee_delta = 1000 )
fees = self . nodes [ 0 ] . getmempoolentry ( txid = last_txid ) [ ' fees ' ]
assert_equal ( fees [ ' base ' ] + Decimal ( ' 0.00001000 ' ) , fees [ ' modified ' ] )
self . log . debug ( " Stop-start the nodes. Verify that node0 has the transactions in its mempool and node1 does not. Verify that node2 calculates its balance correctly after loading wallet transactions. " )
self . stop_nodes ( )
# Give this node a head-start, so we can be "extra-sure" that it didn't load anything later
@ -81,6 +89,10 @@ class MempoolPersistTest(BitcoinTestFramework):
# The others have loaded their mempool. If node_1 loaded anything, we'd probably notice by now:
assert_equal ( len ( self . nodes [ 1 ] . getrawmempool ( ) ) , 0 )
self . log . debug ( ' Verify prioritization is loaded correctly ' )
fees = self . nodes [ 0 ] . getmempoolentry ( txid = last_txid ) [ ' fees ' ]
assert_equal ( fees [ ' base ' ] + Decimal ( ' 0.00001000 ' ) , fees [ ' modified ' ] )
# Verify accounting of mempool transactions after restart is correct
self . nodes [ 2 ] . syncwithvalidationinterfacequeue ( ) # Flush mempool to wallet
assert_equal ( node2_balance , self . nodes [ 2 ] . getbalance ( ) )