Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc-minimaldata.py
| Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | def build_block(self, parent, transactions=(), nTime=None): | ||||
| create_coinbase(block_height), | create_coinbase(block_height), | ||||
| block_time, | block_time, | ||||
| txlist=transactions, | txlist=transactions, | ||||
| ) | ) | ||||
| block.solve() | block.solve() | ||||
| self.block_heights[block.hash_int] = block_height | self.block_heights[block.hash_int] = block_height | ||||
| return block | return block | ||||
| def check_for_ban_on_rejected_tx(self, tx, reject_reason=None): | def check_for_reason_on_rejected_tx(self, tx, reject_reason=None): | ||||
| """Check we are disconnected when sending a txn that the node rejects. | """Check we are disconnected when sending a txn that the node rejects. | ||||
| (Can't actually get banned, since bitcoind won't ban local peers.)""" | (Can't actually get banned, since bitcoind won't ban local peers.)""" | ||||
| self.nodes[0].p2ps[0].send_txs_and_test( | self.nodes[0].p2ps[0].send_txs_and_test( | ||||
| [tx], | [tx], | ||||
| self.nodes[0], | self.nodes[0], | ||||
| success=False, | success=False, | ||||
| expect_disconnect=True, | |||||
| reject_reason=reject_reason, | reject_reason=reject_reason, | ||||
| ) | ) | ||||
| self.reconnect_p2p() | |||||
| def check_for_ban_on_rejected_block(self, block, reject_reason=None): | def check_for_ban_on_rejected_block(self, block, reject_reason=None): | ||||
| """Check we are disconnected when sending a block that the node rejects. | """Check we are disconnected when sending a block that the node rejects. | ||||
| (Can't actually get banned, since bitcoind won't ban local peers.)""" | (Can't actually get banned, since bitcoind won't ban local peers.)""" | ||||
| self.nodes[0].p2ps[0].send_blocks_and_test( | self.nodes[0].p2ps[0].send_blocks_and_test( | ||||
| [block], | [block], | ||||
| self.nodes[0], | self.nodes[0], | ||||
| ▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
| self.log.info("Trying to mine a minimaldata violation.") | self.log.info("Trying to mine a minimaldata violation.") | ||||
| self.check_for_ban_on_rejected_block( | self.check_for_ban_on_rejected_block( | ||||
| self.build_block(tip, [nonminimaltx]), MINIMALPUSH_ERROR | self.build_block(tip, [nonminimaltx]), MINIMALPUSH_ERROR | ||||
| ) | ) | ||||
| self.log.info("If we try to submit it by mempool or RPC we are banned") | self.log.info("If we try to submit it by mempool or RPC we are banned") | ||||
| assert_raises_rpc_error( | assert_raises_rpc_error( | ||||
| -26, MINIMALPUSH_ERROR, node.sendrawtransaction, ToHex(nonminimaltx) | -26, MINIMALPUSH_ERROR, node.sendrawtransaction, ToHex(nonminimaltx) | ||||
| ) | ) | ||||
| self.check_for_ban_on_rejected_tx(nonminimaltx, MINIMALPUSH_ERROR) | self.check_for_reason_on_rejected_tx(nonminimaltx, MINIMALPUSH_ERROR) | ||||
| self.log.info("Mine a normal block") | self.log.info("Mine a normal block") | ||||
| tip = self.build_block(tip) | tip = self.build_block(tip) | ||||
| node.p2ps[0].send_blocks_and_test([tip], node) | node.p2ps[0].send_blocks_and_test([tip], node) | ||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| MinimaldataTest().main() | MinimaldataTest().main() | ||||