[tests] p2p_segwit: log and assert segwit status in subtest wrapper.
This commit is contained in:
parent
6839863d53
commit
25711c2696
1 changed files with 9 additions and 10 deletions
|
@ -236,7 +236,7 @@ class SegWitTest(BitcoinTestFramework):
|
|||
# Keep a place to store utxo's that can be used in later tests
|
||||
self.utxo = []
|
||||
|
||||
self.log.info("Starting tests before segwit lock in:")
|
||||
self.segwit_status = 'defined'
|
||||
|
||||
self.test_non_witness_transaction()
|
||||
self.test_unnecessary_witness_before_segwit_activation()
|
||||
|
@ -251,7 +251,6 @@ class SegWitTest(BitcoinTestFramework):
|
|||
sync_blocks(self.nodes)
|
||||
|
||||
# At lockin, nothing should change.
|
||||
self.log.info("Testing behavior post lockin, pre-activation")
|
||||
self.advance_to_segwit_lockin()
|
||||
|
||||
# Retest unnecessary witnesses
|
||||
|
@ -263,7 +262,6 @@ class SegWitTest(BitcoinTestFramework):
|
|||
sync_blocks(self.nodes)
|
||||
|
||||
# Now activate segwit
|
||||
self.log.info("Testing behavior after segwit activation")
|
||||
self.advance_to_segwit_active()
|
||||
|
||||
sync_blocks(self.nodes)
|
||||
|
@ -296,10 +294,14 @@ class SegWitTest(BitcoinTestFramework):
|
|||
def subtest(func): # noqa: N805
|
||||
"""Wraps the subtests for logging and state assertions."""
|
||||
def func_wrapper(self, *args, **kwargs):
|
||||
self.log.info("Subtest: {}".format(func.__name__))
|
||||
self.log.info("Subtest: {} (Segwit status = {})".format(func.__name__, self.segwit_status))
|
||||
# Assert segwit status is as expected
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], self.segwit_status)
|
||||
func(self, *args, **kwargs)
|
||||
# Each subtest should leave some utxos for the next subtest
|
||||
assert self.utxo
|
||||
# Assert segwit status is as expected at end of subtest
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], self.segwit_status)
|
||||
|
||||
return func_wrapper
|
||||
|
||||
|
@ -338,8 +340,6 @@ class SegWitTest(BitcoinTestFramework):
|
|||
def test_unnecessary_witness_before_segwit_activation(self):
|
||||
"""Verify that blocks with witnesses are rejected before activation."""
|
||||
|
||||
assert(get_bip9_status(self.nodes[0], 'segwit')['status'] != 'active')
|
||||
|
||||
tx = CTransaction()
|
||||
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
|
||||
tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, CScript([OP_TRUE])))
|
||||
|
@ -551,11 +551,10 @@ class SegWitTest(BitcoinTestFramework):
|
|||
height = self.nodes[0].getblockcount()
|
||||
# Will need to rewrite the tests here if we are past the first period
|
||||
assert(height < VB_PERIOD - 1)
|
||||
# Genesis block is 'defined'.
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'defined')
|
||||
# Advance to end of period, status should now be 'started'
|
||||
self.nodes[0].generate(VB_PERIOD - height - 1)
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started')
|
||||
self.segwit_status = 'started'
|
||||
|
||||
@subtest
|
||||
def test_getblocktemplate_before_lockin(self):
|
||||
|
@ -611,7 +610,6 @@ class SegWitTest(BitcoinTestFramework):
|
|||
# signalling blocks, rather than just at the right period boundary.
|
||||
|
||||
height = self.nodes[0].getblockcount()
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started')
|
||||
# Advance to end of period, and verify lock-in happens at the end
|
||||
self.nodes[0].generate(VB_PERIOD - 1)
|
||||
height = self.nodes[0].getblockcount()
|
||||
|
@ -619,6 +617,7 @@ class SegWitTest(BitcoinTestFramework):
|
|||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started')
|
||||
self.nodes[0].generate(1)
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'locked_in')
|
||||
self.segwit_status = 'locked_in'
|
||||
|
||||
@subtest
|
||||
def test_witness_tx_relay_before_segwit_activation(self):
|
||||
|
@ -746,12 +745,12 @@ class SegWitTest(BitcoinTestFramework):
|
|||
# TODO: we could verify that activation only happens at the right threshold
|
||||
# of signalling blocks, rather than just at the right period boundary.
|
||||
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'locked_in')
|
||||
height = self.nodes[0].getblockcount()
|
||||
self.nodes[0].generate(VB_PERIOD - (height % VB_PERIOD) - 2)
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'locked_in')
|
||||
self.nodes[0].generate(1)
|
||||
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'active')
|
||||
self.segwit_status = 'active'
|
||||
|
||||
@subtest
|
||||
def test_p2sh_witness(self, segwit_activated):
|
||||
|
|
Loading…
Reference in a new issue