Changeset View
Changeset View
Standalone View
Standalone View
test/functional/mempool_accept.py
Show All 19 Lines | from test_framework.script import ( | ||||
OP_0, | OP_0, | ||||
OP_EQUAL, | OP_EQUAL, | ||||
OP_HASH160, | OP_HASH160, | ||||
OP_RETURN, | OP_RETURN, | ||||
) | ) | ||||
from test_framework.util import ( | from test_framework.util import ( | ||||
assert_equal, | assert_equal, | ||||
assert_raises_rpc_error, | assert_raises_rpc_error, | ||||
wait_until, | |||||
) | ) | ||||
class MempoolAcceptanceTest(BitcoinTestFramework): | class MempoolAcceptanceTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.num_nodes = 1 | self.num_nodes = 1 | ||||
self.extra_args = [[ | self.extra_args = [[ | ||||
'-txindex', | '-txindex', | ||||
'-reindex', # Need reindex for txindex | |||||
'-acceptnonstdtxn=0', # Try to mimic main-net | '-acceptnonstdtxn=0', # Try to mimic main-net | ||||
]] * self.num_nodes | ]] * self.num_nodes | ||||
def skip_test_if_missing_module(self): | def skip_test_if_missing_module(self): | ||||
self.skip_if_no_wallet() | self.skip_if_no_wallet() | ||||
def check_mempool_result(self, result_expected, *args, **kwargs): | def check_mempool_result(self, result_expected, *args, **kwargs): | ||||
"""Wrapper to check result of testmempoolaccept on node_0's mempool""" | """Wrapper to check result of testmempoolaccept on node_0's mempool""" | ||||
result_test = self.nodes[0].testmempoolaccept(*args, **kwargs) | result_test = self.nodes[0].testmempoolaccept(*args, **kwargs) | ||||
assert_equal(result_expected, result_test) | assert_equal(result_expected, result_test) | ||||
# Must not change mempool state | # Must not change mempool state | ||||
assert_equal(self.nodes[0].getmempoolinfo()['size'], self.mempool_size) | assert_equal(self.nodes[0].getmempoolinfo()['size'], self.mempool_size) | ||||
def run_test(self): | def run_test(self): | ||||
node = self.nodes[0] | node = self.nodes[0] | ||||
self.log.info('Start with empty mempool, and 200 blocks') | self.log.info('Start with empty mempool, and 200 blocks') | ||||
self.mempool_size = 0 | self.mempool_size = 0 | ||||
wait_until(lambda: node.getblockcount() == 200) | assert_equal(node.getblockcount(), 200) | ||||
assert_equal(node.getmempoolinfo()['size'], self.mempool_size) | assert_equal(node.getmempoolinfo()['size'], self.mempool_size) | ||||
coins = node.listunspent() | coins = node.listunspent() | ||||
self.log.info('Should not accept garbage to testmempoolaccept') | self.log.info('Should not accept garbage to testmempoolaccept') | ||||
assert_raises_rpc_error(-3, 'Expected type array, got string', | assert_raises_rpc_error(-3, 'Expected type array, got string', | ||||
lambda: node.testmempoolaccept(rawtxs='ff00baar')) | lambda: node.testmempoolaccept(rawtxs='ff00baar')) | ||||
assert_raises_rpc_error(-8, 'Array must contain exactly one raw transaction for now', | assert_raises_rpc_error(-8, 'Array must contain exactly one raw transaction for now', | ||||
lambda: node.testmempoolaccept(rawtxs=['ff00baar', 'ff22'])) | lambda: node.testmempoolaccept(rawtxs=['ff00baar', 'ff22'])) | ||||
▲ Show 20 Lines • Show All 287 Lines • Show Last 20 Lines |