Skip to content

Commit dcdf1f3

Browse files
authored
Some refactoring for spork related functionality in tests (#3137)
* Use `wait_until` in sporks.py * Drop unused spork functions in `dip3-deterministicmns.py` * Use `wait_until` in multikeysporks.py * 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-
1 parent 4112414 commit dcdf1f3

File tree

3 files changed

+17
-65
lines changed

3 files changed

+17
-65
lines changed

test/functional/dip3-deterministicmns.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -289,22 +289,6 @@ def assert_mnlist(self, node, mns):
289289
self.log.error('expected: ' + str(expected))
290290
raise AssertionError("mnlists does not match provided mns")
291291

292-
def wait_for_sporks(self, timeout=30):
293-
st = time.time()
294-
while time.time() < st + timeout:
295-
if self.compare_sporks():
296-
return
297-
time.sleep(0.5)
298-
raise AssertionError("wait_for_sporks timed out")
299-
300-
def compare_sporks(self):
301-
sporks = self.nodes[0].spork('show')
302-
for node in self.nodes[1:]:
303-
sporks2 = node.spork('show')
304-
if sporks != sporks2:
305-
return False
306-
return True
307-
308292
def compare_mnlist(self, node, mns):
309293
mnlist = node.masternode('list', 'status')
310294
for mn in mns:

test/functional/multikeysporks.py

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
55
import time
66

7-
from test_framework.mininode import *
87
from test_framework.test_framework import BitcoinTestFramework
9-
from test_framework.util import *
8+
from test_framework.util import connect_nodes, set_node_times, wait_until
109

1110
'''
1211
multikeysporks.py
@@ -89,56 +88,45 @@ def setup_network(self):
8988
for j in range(i, 5):
9089
connect_nodes(self.nodes[i], j)
9190

92-
def get_test_spork_state(self, node):
91+
def get_test_spork_value(self, node):
9392
info = node.spork('show')
9493
# use InstantSend spork for tests
9594
return info['SPORK_2_INSTANTSEND_ENABLED']
9695

97-
def set_test_spork_state(self, node, value):
96+
def set_test_spork_value(self, node, value):
9897
# use InstantSend spork for tests
9998
node.spork('SPORK_2_INSTANTSEND_ENABLED', value)
10099

101-
def wait_for_test_spork_state(self, node, value):
102-
start = time.time()
103-
got_state = False
104-
while True:
105-
if self.get_test_spork_state(node) == value:
106-
got_state = True
107-
break
108-
if time.time() > start + 10:
109-
break
110-
time.sleep(0.1)
111-
return got_state
112-
113100
def run_test(self):
114101
# check test spork default state
115102
for node in self.nodes:
116-
assert(self.get_test_spork_state(node) == 4070908800)
103+
assert(self.get_test_spork_value(node) == 4070908800)
117104

118105
self.bump_mocktime(1)
119106
set_node_times(self.nodes, self.mocktime)
120107
# first and second signers set spork value
121-
self.set_test_spork_state(self.nodes[0], 1)
122-
self.set_test_spork_state(self.nodes[1], 1)
108+
self.set_test_spork_value(self.nodes[0], 1)
109+
self.set_test_spork_value(self.nodes[1], 1)
123110
# spork change requires at least 3 signers
111+
time.sleep(10)
124112
for node in self.nodes:
125-
assert(not self.wait_for_test_spork_state(node, 1))
113+
assert(self.get_test_spork_value(node) != 1)
126114

127115
# third signer set spork value
128-
self.set_test_spork_state(self.nodes[2], 1)
116+
self.set_test_spork_value(self.nodes[2], 1)
129117
# now spork state is changed
130118
for node in self.nodes:
131-
assert(self.wait_for_test_spork_state(node, 1))
119+
wait_until(lambda: self.get_test_spork_value(node) == 1, sleep=0.1, timeout=10)
132120

133121
self.bump_mocktime(1)
134122
set_node_times(self.nodes, self.mocktime)
135123
# now set the spork again with other signers to test
136124
# old and new spork messages interaction
137-
self.set_test_spork_state(self.nodes[2], 2)
138-
self.set_test_spork_state(self.nodes[3], 2)
139-
self.set_test_spork_state(self.nodes[4], 2)
125+
self.set_test_spork_value(self.nodes[2], 2)
126+
self.set_test_spork_value(self.nodes[3], 2)
127+
self.set_test_spork_value(self.nodes[4], 2)
140128
for node in self.nodes:
141-
assert(self.wait_for_test_spork_state(node, 2))
129+
wait_until(lambda: self.get_test_spork_value(node) == 2, sleep=0.1, timeout=10)
142130

143131

144132
if __name__ == '__main__':

test/functional/sporks.py

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22
# Copyright (c) 2018 The Dash Core developers
33
# Distributed under the MIT software license, see the accompanying
44
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
5-
import time
65

76
from test_framework.mininode import *
87
from test_framework.test_framework import BitcoinTestFramework
9-
from test_framework.util import *
8+
from test_framework.util import connect_nodes, wait_until
109

1110
'''
1211
'''
@@ -44,16 +43,7 @@ def run_test(self):
4443

4544
# check spork propagation for connected nodes
4645
self.set_test_spork_state(self.nodes[0], True)
47-
start = time.time()
48-
sent = False
49-
while True:
50-
if self.get_test_spork_state(self.nodes[1]):
51-
sent = True
52-
break
53-
if time.time() > start + 10:
54-
break
55-
time.sleep(0.1)
56-
assert(sent)
46+
wait_until(lambda: self.get_test_spork_state(self.nodes[1]), sleep=0.1, timeout=10)
5747

5848
# restart nodes to check spork persistence
5949
self.stop_node(0)
@@ -68,17 +58,7 @@ def run_test(self):
6858

6959
# connect new node and check spork propagation after restoring from cache
7060
connect_nodes(self.nodes[1], 2)
71-
start = time.time()
72-
sent = False
73-
while True:
74-
if self.get_test_spork_state(self.nodes[2]):
75-
sent = True
76-
break
77-
if time.time() > start + 10:
78-
break
79-
time.sleep(0.1)
80-
assert(sent)
81-
61+
wait_until(lambda: self.get_test_spork_state(self.nodes[2]), sleep=0.1, timeout=10)
8262

8363
if __name__ == '__main__':
8464
SporkTest().main()

0 commit comments

Comments
 (0)