|
|
|
@ -80,13 +80,6 @@ class TestNode(NodeConnCB):
@@ -80,13 +80,6 @@ class TestNode(NodeConnCB):
|
|
|
|
|
timeout -= self.sleep_time |
|
|
|
|
raise AssertionError("Sync failed to complete") |
|
|
|
|
|
|
|
|
|
def sync_with_ping(self, timeout=60): |
|
|
|
|
self.send_message(msg_ping(nonce=self.ping_counter)) |
|
|
|
|
test_function = lambda: self.last_pong.nonce == self.ping_counter |
|
|
|
|
self.sync(test_function, timeout) |
|
|
|
|
self.ping_counter += 1 |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
def wait_for_block(self, blockhash, timeout=60): |
|
|
|
|
test_function = lambda: self.last_block != None and self.last_block.sha256 == blockhash |
|
|
|
|
self.sync(test_function, timeout) |
|
|
|
@ -148,7 +141,7 @@ class TestNode(NodeConnCB):
@@ -148,7 +141,7 @@ class TestNode(NodeConnCB):
|
|
|
|
|
if with_witness: |
|
|
|
|
tx_message = msg_witness_tx(tx) |
|
|
|
|
self.send_message(tx_message) |
|
|
|
|
self.sync_with_ping() |
|
|
|
|
self.sync_with_ping(60) |
|
|
|
|
assert_equal(tx.hash in self.connection.rpc.getrawmempool(), accepted) |
|
|
|
|
if (reason != None and not accepted): |
|
|
|
|
# Check the rejection reason as well. |
|
|
|
@ -161,7 +154,7 @@ class TestNode(NodeConnCB):
@@ -161,7 +154,7 @@ class TestNode(NodeConnCB):
|
|
|
|
|
self.send_message(msg_witness_block(block)) |
|
|
|
|
else: |
|
|
|
|
self.send_message(msg_block(block)) |
|
|
|
|
self.sync_with_ping() |
|
|
|
|
self.sync_with_ping(60) |
|
|
|
|
assert_equal(self.connection.rpc.getbestblockhash() == block.hash, accepted) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -235,7 +228,7 @@ class SegWitTest(BitcoinTestFramework):
@@ -235,7 +228,7 @@ class SegWitTest(BitcoinTestFramework):
|
|
|
|
|
block = self.build_next_block(nVersion=1) |
|
|
|
|
block.solve() |
|
|
|
|
self.test_node.send_message(msg_block(block)) |
|
|
|
|
self.test_node.sync_with_ping() # make sure the block was processed |
|
|
|
|
self.test_node.sync_with_ping(60) # make sure the block was processed |
|
|
|
|
txid = block.vtx[0].sha256 |
|
|
|
|
|
|
|
|
|
self.nodes[0].generate(99) # let the block mature |
|
|
|
@ -251,7 +244,7 @@ class SegWitTest(BitcoinTestFramework):
@@ -251,7 +244,7 @@ class SegWitTest(BitcoinTestFramework):
|
|
|
|
|
assert_equal(msg_tx(tx).serialize(), msg_witness_tx(tx).serialize()) |
|
|
|
|
|
|
|
|
|
self.test_node.send_message(msg_witness_tx(tx)) |
|
|
|
|
self.test_node.sync_with_ping() # make sure the tx was processed |
|
|
|
|
self.test_node.sync_with_ping(60) # make sure the tx was processed |
|
|
|
|
assert(tx.hash in self.nodes[0].getrawmempool()) |
|
|
|
|
# Save this transaction for later |
|
|
|
|
self.utxo.append(UTXO(tx.sha256, 0, 49*100000000)) |
|
|
|
@ -291,7 +284,7 @@ class SegWitTest(BitcoinTestFramework):
@@ -291,7 +284,7 @@ class SegWitTest(BitcoinTestFramework):
|
|
|
|
|
# But it should not be permanently marked bad... |
|
|
|
|
# Resend without witness information. |
|
|
|
|
self.test_node.send_message(msg_block(block)) |
|
|
|
|
self.test_node.sync_with_ping() |
|
|
|
|
self.test_node.sync_with_ping(60) |
|
|
|
|
assert_equal(self.nodes[0].getbestblockhash(), block.hash) |
|
|
|
|
|
|
|
|
|
sync_blocks(self.nodes) |
|
|
|
@ -1257,7 +1250,7 @@ class SegWitTest(BitcoinTestFramework):
@@ -1257,7 +1250,7 @@ class SegWitTest(BitcoinTestFramework):
|
|
|
|
|
# Spending a higher version witness output is not allowed by policy, |
|
|
|
|
# even with fRequireStandard=false. |
|
|
|
|
self.test_node.test_transaction_acceptance(tx3, with_witness=True, accepted=False) |
|
|
|
|
self.test_node.sync_with_ping() |
|
|
|
|
self.test_node.sync_with_ping(60) |
|
|
|
|
with mininode_lock: |
|
|
|
|
assert(b"reserved for soft-fork upgrades" in self.test_node.last_reject.reason) |
|
|
|
|
|
|
|
|
@ -1387,7 +1380,7 @@ class SegWitTest(BitcoinTestFramework):
@@ -1387,7 +1380,7 @@ class SegWitTest(BitcoinTestFramework):
|
|
|
|
|
for i in range(NUM_TESTS): |
|
|
|
|
# Ping regularly to keep the connection alive |
|
|
|
|
if (not i % 100): |
|
|
|
|
self.test_node.sync_with_ping() |
|
|
|
|
self.test_node.sync_with_ping(60) |
|
|
|
|
# Choose random number of inputs to use. |
|
|
|
|
num_inputs = random.randint(1, 10) |
|
|
|
|
# Create a slight bias for producing more utxos |
|
|
|
|