diff options
-rwxr-xr-x | test/functional/p2p_segwit.py | 51 |
1 files changed, 23 insertions, 28 deletions
diff --git a/test/functional/p2p_segwit.py b/test/functional/p2p_segwit.py index 3467fce0f2..d01da7b281 100755 --- a/test/functional/p2p_segwit.py +++ b/test/functional/p2p_segwit.py @@ -241,7 +241,7 @@ class SegWitTest(BitcoinTestFramework): self.test_non_witness_transaction() self.test_unnecessary_witness_before_segwit_activation() self.test_v0_outputs_arent_spendable() - self.test_block_relay(segwit_activated=False) + self.test_block_relay() # Advance to segwit being 'started' self.advance_to_segwit_started() @@ -256,8 +256,8 @@ class SegWitTest(BitcoinTestFramework): # Retest unnecessary witnesses self.test_unnecessary_witness_before_segwit_activation() self.test_witness_tx_relay_before_segwit_activation() - self.test_block_relay(segwit_activated=False) - self.test_standardness_v0(segwit_activated=False) + self.test_block_relay() + self.test_standardness_v0() sync_blocks(self.nodes) @@ -267,7 +267,7 @@ class SegWitTest(BitcoinTestFramework): sync_blocks(self.nodes) # Test P2SH witness handling again - self.test_p2sh_witness(segwit_activated=True) + self.test_p2sh_witness() self.test_witness_commitments() self.test_block_malleability() self.test_witness_block_size() @@ -276,9 +276,9 @@ class SegWitTest(BitcoinTestFramework): self.test_max_witness_push_length() self.test_max_witness_program_length() self.test_witness_input_length() - self.test_block_relay(segwit_activated=True) + self.test_block_relay() self.test_tx_relay_after_segwit_activation() - self.test_standardness_v0(segwit_activated=True) + self.test_standardness_v0() self.test_segwit_versions() self.test_premature_coinbase_witness_spend() self.test_uncompressed_pubkey() @@ -286,7 +286,7 @@ class SegWitTest(BitcoinTestFramework): self.test_non_standard_witness_blinding() self.test_non_standard_witness() sync_blocks(self.nodes) - self.test_upgrade_after_activation(node_id=2) + self.test_upgrade_after_activation() self.test_witness_sigops() # Individual tests @@ -375,7 +375,7 @@ class SegWitTest(BitcoinTestFramework): self.utxo.append(UTXO(tx.sha256, 0, tx.vout[0].nValue)) @subtest - def test_block_relay(self, segwit_activated): + def test_block_relay(self): """Test that block requests to NODE_WITNESS peer are with MSG_WITNESS_FLAG. This is true regardless of segwit activation. @@ -409,7 +409,7 @@ class SegWitTest(BitcoinTestFramework): # Check that we can getdata for witness blocks or regular blocks, # and the right thing happens. - if not segwit_activated: + if self.segwit_status != 'active': # Before activation, we should be able to request old blocks with # or without witness, and they should be the same. chain_height = self.nodes[0].getblockcount() @@ -662,7 +662,7 @@ class SegWitTest(BitcoinTestFramework): self.utxo.append(UTXO(tx_hash, 0, tx_value)) @subtest - def test_standardness_v0(self, segwit_activated): + def test_standardness_v0(self): """Test V0 txout standardness. V0 segwit outputs and inputs are always standard. @@ -721,7 +721,7 @@ class SegWitTest(BitcoinTestFramework): tx3.wit.vtxinwit.append(CTxInWitness()) tx3.wit.vtxinwit[0].scriptWitness.stack = [witness_program] tx3.rehash() - if not segwit_activated: + if self.segwit_status != 'active': # Just check mempool acceptance, but don't add the transaction to the mempool, since witness is disallowed # in blocks and the tx is impossible to mine right now. assert_equal(self.nodes[0].testmempoolaccept([bytes_to_hex_str(tx3.serialize_with_witness())]), [{'txid': tx3.hash, 'allowed': True}]) @@ -753,7 +753,7 @@ class SegWitTest(BitcoinTestFramework): self.segwit_status = 'active' @subtest - def test_p2sh_witness(self, segwit_activated): + def test_p2sh_witness(self): """Test P2SH wrapped witness programs.""" # Prepare the p2sh-wrapped witness output @@ -774,7 +774,7 @@ class SegWitTest(BitcoinTestFramework): test_transaction_acceptance(self.nodes[0].rpc, self.test_node, tx, with_witness=False, accepted=True) block = self.build_next_block() self.update_witness_block_with_transactions(block, [tx]) - test_witness_block(self.nodes[0].rpc, self.test_node, block, accepted=True, with_witness=segwit_activated) + test_witness_block(self.nodes[0].rpc, self.test_node, block, accepted=True, with_witness=True) sync_blocks(self.nodes) # Now test attempts to spend the output. @@ -803,7 +803,7 @@ class SegWitTest(BitcoinTestFramework): spend_tx.wit.vtxinwit[0].scriptWitness.stack = [b'a', witness_program] # Verify mempool acceptance - test_transaction_acceptance(self.nodes[0].rpc, self.test_node, spend_tx, with_witness=True, accepted=segwit_activated) + test_transaction_acceptance(self.nodes[0].rpc, self.test_node, spend_tx, with_witness=True, accepted=True) block = self.build_next_block() self.update_witness_block_with_transactions(block, [spend_tx]) @@ -811,10 +811,7 @@ class SegWitTest(BitcoinTestFramework): # This no longer works before activation, because SCRIPT_VERIFY_WITNESS # is always set. # TODO: rewrite this test to make clear that it only works after activation. - if segwit_activated: - test_witness_block(self.nodes[0].rpc, self.test_node, block, accepted=True) - else: - test_witness_block(self.nodes[0].rpc, self.test_node, block, accepted=True, with_witness=False) + test_witness_block(self.nodes[0].rpc, self.test_node, block, accepted=True) # Update self.utxo self.utxo.pop(0) @@ -1964,30 +1961,28 @@ class SegWitTest(BitcoinTestFramework): self.utxo.pop(0) @subtest - def test_upgrade_after_activation(self, node_id): + def test_upgrade_after_activation(self): """Test the behavior of starting up a segwit-aware node after the softfork has activated.""" - assert(node_id != 0) # node0 is assumed to be a segwit-active bitcoind - # Make sure the nodes are all up sync_blocks(self.nodes) # Restart with the new binary - self.stop_node(node_id) - self.start_node(node_id, extra_args=["-vbparams=segwit:0:999999999999"]) - connect_nodes(self.nodes[0], node_id) + self.stop_node(2) + self.start_node(2, extra_args=["-vbparams=segwit:0:999999999999"]) + connect_nodes(self.nodes[0], 2) sync_blocks(self.nodes) # Make sure that this peer thinks segwit has activated. - assert(get_bip9_status(self.nodes[node_id], 'segwit')['status'] == "active") + assert(get_bip9_status(self.nodes[2], 'segwit')['status'] == "active") # Make sure this peer's blocks match those of node0. - height = self.nodes[node_id].getblockcount() + height = self.nodes[2].getblockcount() while height >= 0: - block_hash = self.nodes[node_id].getblockhash(height) + block_hash = self.nodes[2].getblockhash(height) assert_equal(block_hash, self.nodes[0].getblockhash(height)) - assert_equal(self.nodes[0].getblock(block_hash), self.nodes[node_id].getblock(block_hash)) + assert_equal(self.nodes[0].getblock(block_hash), self.nodes[2].getblock(block_hash)) height -= 1 @subtest |