[tests] p2p_segwit: sync_blocks in subtest wrapper.

This commit is contained in:
John Newbery 2018-06-13 17:47:43 -04:00
parent 55e8050853
commit e3aab295e7
1 changed files with 16 additions and 20 deletions

View File

@ -75,6 +75,7 @@ from test_framework.util import (
assert_equal, assert_equal,
bytes_to_hex_str, bytes_to_hex_str,
connect_nodes, connect_nodes,
disconnect_nodes,
get_bip9_status, get_bip9_status,
hex_str_to_bytes, hex_str_to_bytes,
sync_blocks, sync_blocks,
@ -236,37 +237,30 @@ class SegWitTest(BitcoinTestFramework):
# Keep a place to store utxo's that can be used in later tests # Keep a place to store utxo's that can be used in later tests
self.utxo = [] self.utxo = []
# Segwit status 'defined'
self.segwit_status = 'defined' self.segwit_status = 'defined'
self.test_non_witness_transaction() self.test_non_witness_transaction()
self.test_unnecessary_witness_before_segwit_activation() self.test_unnecessary_witness_before_segwit_activation()
self.test_v0_outputs_arent_spendable() self.test_v0_outputs_arent_spendable()
self.test_block_relay() self.test_block_relay()
# Advance to segwit being 'started'
self.advance_to_segwit_started() self.advance_to_segwit_started()
sync_blocks(self.nodes)
# Segwit status 'started'
self.test_getblocktemplate_before_lockin() self.test_getblocktemplate_before_lockin()
sync_blocks(self.nodes)
# At lockin, nothing should change.
self.advance_to_segwit_lockin() self.advance_to_segwit_lockin()
# Retest unnecessary witnesses # Segwit status 'locked_in'
self.test_unnecessary_witness_before_segwit_activation() self.test_unnecessary_witness_before_segwit_activation()
self.test_witness_tx_relay_before_segwit_activation() self.test_witness_tx_relay_before_segwit_activation()
self.test_block_relay() self.test_block_relay()
self.test_standardness_v0() self.test_standardness_v0()
sync_blocks(self.nodes)
# Now activate segwit
self.advance_to_segwit_active() self.advance_to_segwit_active()
sync_blocks(self.nodes) # Segwit status 'active'
# Test P2SH witness handling again
self.test_p2sh_witness() self.test_p2sh_witness()
self.test_witness_commitments() self.test_witness_commitments()
self.test_block_malleability() self.test_block_malleability()
@ -285,7 +279,6 @@ class SegWitTest(BitcoinTestFramework):
self.test_signature_version_1() self.test_signature_version_1()
self.test_non_standard_witness_blinding() self.test_non_standard_witness_blinding()
self.test_non_standard_witness() self.test_non_standard_witness()
sync_blocks(self.nodes)
self.test_upgrade_after_activation() self.test_upgrade_after_activation()
self.test_witness_sigops() self.test_witness_sigops()
@ -300,6 +293,7 @@ class SegWitTest(BitcoinTestFramework):
func(self, *args, **kwargs) func(self, *args, **kwargs)
# Each subtest should leave some utxos for the next subtest # Each subtest should leave some utxos for the next subtest
assert self.utxo assert self.utxo
sync_blocks(self.nodes)
# Assert segwit status is as expected at end of subtest # Assert segwit status is as expected at end of subtest
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], self.segwit_status) assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], self.segwit_status)
@ -368,8 +362,6 @@ class SegWitTest(BitcoinTestFramework):
self.test_node.sync_with_ping() self.test_node.sync_with_ping()
assert_equal(self.nodes[0].getbestblockhash(), block.hash) assert_equal(self.nodes[0].getbestblockhash(), block.hash)
sync_blocks(self.nodes)
# Update our utxo list; we spent the first entry. # Update our utxo list; we spent the first entry.
self.utxo.pop(0) self.utxo.pop(0)
self.utxo.append(UTXO(tx.sha256, 0, tx.vout[0].nValue)) self.utxo.append(UTXO(tx.sha256, 0, tx.vout[0].nValue))
@ -482,6 +474,11 @@ class SegWitTest(BitcoinTestFramework):
witness, and so can't be spent before segwit activation (the point at which witness, and so can't be spent before segwit activation (the point at which
blocks are permitted to contain witnesses).""" blocks are permitted to contain witnesses)."""
# node2 doesn't need to be connected for this test.
# (If it's connected, node0 may propogate an invalid block to it over
# compact blocks and the nodes would have inconsistent tips.)
disconnect_nodes(self.nodes[0], 2)
# Create two outputs, a p2wsh and p2sh-p2wsh # Create two outputs, a p2wsh and p2sh-p2wsh
witness_program = CScript([OP_TRUE]) witness_program = CScript([OP_TRUE])
witness_hash = sha256(witness_program) witness_hash = sha256(witness_program)
@ -542,6 +539,8 @@ class SegWitTest(BitcoinTestFramework):
# TODO: support multiple acceptable reject reasons. # TODO: support multiple acceptable reject reasons.
test_witness_block(self.nodes[0], self.test_node, block, accepted=False, with_witness=False) test_witness_block(self.nodes[0], self.test_node, block, accepted=False, with_witness=False)
connect_nodes(self.nodes[0], 2)
self.utxo.pop(0) self.utxo.pop(0)
self.utxo.append(UTXO(txid, 2, value)) self.utxo.append(UTXO(txid, 2, value))
@ -1964,9 +1963,6 @@ class SegWitTest(BitcoinTestFramework):
def test_upgrade_after_activation(self): def test_upgrade_after_activation(self):
"""Test the behavior of starting up a segwit-aware node after the softfork has activated.""" """Test the behavior of starting up a segwit-aware node after the softfork has activated."""
# Make sure the nodes are all up
sync_blocks(self.nodes)
# Restart with the new binary # Restart with the new binary
self.stop_node(2) self.stop_node(2)
self.start_node(2, extra_args=["-vbparams=segwit:0:999999999999"]) self.start_node(2, extra_args=["-vbparams=segwit:0:999999999999"])