From 6af702bb53ef271641ad2279738300054202cc6f Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Thu, 3 Oct 2019 04:27:49 +0300 Subject: [PATCH 1/4] Use `wait_until` in sporks.py --- test/functional/sporks.py | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/test/functional/sporks.py b/test/functional/sporks.py index 3243daa0e946..bcb456d45c93 100755 --- a/test/functional/sporks.py +++ b/test/functional/sporks.py @@ -2,11 +2,10 @@ # Copyright (c) 2018 The Dash Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -import time from test_framework.mininode import * from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import * +from test_framework.util import connect_nodes, wait_until ''' ''' @@ -44,16 +43,7 @@ def run_test(self): # check spork propagation for connected nodes self.set_test_spork_state(self.nodes[0], True) - start = time.time() - sent = False - while True: - if self.get_test_spork_state(self.nodes[1]): - sent = True - break - if time.time() > start + 10: - break - time.sleep(0.1) - assert(sent) + wait_until(lambda: self.get_test_spork_state(self.nodes[1]), sleep=0.1, timeout=10) # restart nodes to check spork persistence self.stop_node(0) @@ -68,17 +58,7 @@ def run_test(self): # connect new node and check spork propagation after restoring from cache connect_nodes(self.nodes[1], 2) - start = time.time() - sent = False - while True: - if self.get_test_spork_state(self.nodes[2]): - sent = True - break - if time.time() > start + 10: - break - time.sleep(0.1) - assert(sent) - + wait_until(lambda: self.get_test_spork_state(self.nodes[2]), sleep=0.1, timeout=10) if __name__ == '__main__': SporkTest().main() From 6d16d8845fa39ad509f0494e514e9a4371700bae Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Thu, 3 Oct 2019 23:34:24 +0300 Subject: [PATCH 2/4] Use `wait_until` in multikeysporks.py --- test/functional/multikeysporks.py | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/test/functional/multikeysporks.py b/test/functional/multikeysporks.py index c3f748234a5a..d8966b0c6371 100755 --- a/test/functional/multikeysporks.py +++ b/test/functional/multikeysporks.py @@ -4,9 +4,8 @@ # file COPYING or http://www.opensource.org/licenses/mit-license.php. import time -from test_framework.mininode import * from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import * +from test_framework.util import connect_nodes, set_node_times, wait_until ''' multikeysporks.py @@ -98,18 +97,6 @@ def set_test_spork_state(self, node, value): # use InstantSend spork for tests node.spork('SPORK_2_INSTANTSEND_ENABLED', value) - def wait_for_test_spork_state(self, node, value): - start = time.time() - got_state = False - while True: - if self.get_test_spork_state(node) == value: - got_state = True - break - if time.time() > start + 10: - break - time.sleep(0.1) - return got_state - def run_test(self): # check test spork default state for node in self.nodes: @@ -121,14 +108,15 @@ def run_test(self): self.set_test_spork_state(self.nodes[0], 1) self.set_test_spork_state(self.nodes[1], 1) # spork change requires at least 3 signers + time.sleep(10) for node in self.nodes: - assert(not self.wait_for_test_spork_state(node, 1)) + assert(self.get_test_spork_state(node) != 1) # third signer set spork value self.set_test_spork_state(self.nodes[2], 1) # now spork state is changed for node in self.nodes: - assert(self.wait_for_test_spork_state(node, 1)) + wait_until(lambda: self.get_test_spork_state(node) == 1, sleep=0.1, timeout=10) self.bump_mocktime(1) set_node_times(self.nodes, self.mocktime) @@ -138,7 +126,7 @@ def run_test(self): self.set_test_spork_state(self.nodes[3], 2) self.set_test_spork_state(self.nodes[4], 2) for node in self.nodes: - assert(self.wait_for_test_spork_state(node, 2)) + wait_until(lambda: self.get_test_spork_state(node) == 2, sleep=0.1, timeout=10) if __name__ == '__main__': From 5959adf9ac0001985b455349e8b31f2c073d7be2 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Thu, 3 Oct 2019 22:58:37 +0300 Subject: [PATCH 3/4] Drop unused spork functions in `dip3-deterministicmns.py` --- test/functional/dip3-deterministicmns.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/test/functional/dip3-deterministicmns.py b/test/functional/dip3-deterministicmns.py index 79631d239570..94137ea7627b 100755 --- a/test/functional/dip3-deterministicmns.py +++ b/test/functional/dip3-deterministicmns.py @@ -289,22 +289,6 @@ def assert_mnlist(self, node, mns): self.log.error('expected: ' + str(expected)) raise AssertionError("mnlists does not match provided mns") - def wait_for_sporks(self, timeout=30): - st = time.time() - while time.time() < st + timeout: - if self.compare_sporks(): - return - time.sleep(0.5) - raise AssertionError("wait_for_sporks timed out") - - def compare_sporks(self): - sporks = self.nodes[0].spork('show') - for node in self.nodes[1:]: - sporks2 = node.spork('show') - if sporks != sporks2: - return False - return True - def compare_mnlist(self, node, mns): mnlist = node.masternode('list', 'status') for mn in mns: From eda571170658d3392062a920441513f322ad31e1 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Thu, 3 Oct 2019 23:35:26 +0300 Subject: [PATCH 4/4] scripted-diff: Rename `*_test_spork_state` to `*_test_spork_value` in multikeysporks.py to better match actual functionality -BEGIN VERIFY SCRIPT- sed -i 's/_test_spork_state/_test_spork_value/g' test/functional/multikeysporks.py -END VERIFY SCRIPT- --- test/functional/multikeysporks.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/functional/multikeysporks.py b/test/functional/multikeysporks.py index d8966b0c6371..6701bfebd4ef 100755 --- a/test/functional/multikeysporks.py +++ b/test/functional/multikeysporks.py @@ -88,45 +88,45 @@ def setup_network(self): for j in range(i, 5): connect_nodes(self.nodes[i], j) - def get_test_spork_state(self, node): + def get_test_spork_value(self, node): info = node.spork('show') # use InstantSend spork for tests return info['SPORK_2_INSTANTSEND_ENABLED'] - def set_test_spork_state(self, node, value): + def set_test_spork_value(self, node, value): # use InstantSend spork for tests node.spork('SPORK_2_INSTANTSEND_ENABLED', value) def run_test(self): # check test spork default state for node in self.nodes: - assert(self.get_test_spork_state(node) == 4070908800) + assert(self.get_test_spork_value(node) == 4070908800) self.bump_mocktime(1) set_node_times(self.nodes, self.mocktime) # first and second signers set spork value - self.set_test_spork_state(self.nodes[0], 1) - self.set_test_spork_state(self.nodes[1], 1) + self.set_test_spork_value(self.nodes[0], 1) + self.set_test_spork_value(self.nodes[1], 1) # spork change requires at least 3 signers time.sleep(10) for node in self.nodes: - assert(self.get_test_spork_state(node) != 1) + assert(self.get_test_spork_value(node) != 1) # third signer set spork value - self.set_test_spork_state(self.nodes[2], 1) + self.set_test_spork_value(self.nodes[2], 1) # now spork state is changed for node in self.nodes: - wait_until(lambda: self.get_test_spork_state(node) == 1, sleep=0.1, timeout=10) + wait_until(lambda: self.get_test_spork_value(node) == 1, sleep=0.1, timeout=10) self.bump_mocktime(1) set_node_times(self.nodes, self.mocktime) # now set the spork again with other signers to test # old and new spork messages interaction - self.set_test_spork_state(self.nodes[2], 2) - self.set_test_spork_state(self.nodes[3], 2) - self.set_test_spork_state(self.nodes[4], 2) + self.set_test_spork_value(self.nodes[2], 2) + self.set_test_spork_value(self.nodes[3], 2) + self.set_test_spork_value(self.nodes[4], 2) for node in self.nodes: - wait_until(lambda: self.get_test_spork_state(node) == 2, sleep=0.1, timeout=10) + wait_until(lambda: self.get_test_spork_value(node) == 2, sleep=0.1, timeout=10) if __name__ == '__main__':