|
5 | 5 | """Tests governance checks can be skipped for blocks covered by the best chainlock.""" |
6 | 6 |
|
7 | 7 | import json |
8 | | -import time |
9 | 8 |
|
10 | 9 | from test_framework.governance import have_trigger_for_height |
11 | 10 | from test_framework.messages import uint256_to_string |
@@ -144,13 +143,21 @@ def run_test(self): |
144 | 143 | assert not have_trigger_for_height(self.nodes[0:5], sb_block_height + sb_cycle) |
145 | 144 | self.bump_mocktime(156) |
146 | 145 | self.generate(self.nodes[0], 1, sync_fun=lambda: self.sync_blocks(self.nodes[0:5])) |
147 | | - # Trigger scheduler to mark old triggers for deletion |
148 | | - self.bump_mocktime(5 * 60) |
149 | | - # Let it do the job |
150 | | - time.sleep(1) |
151 | | - # Move forward to satisfy GOVERNANCE_DELETION_DELAY, should actually remove old triggers now |
152 | | - self.bump_mocktime(10 * 60) |
153 | | - self.wait_until(lambda: len(self.nodes[0].gobject("list", "valid", "triggers")) == 0, timeout=5) |
| 146 | + |
| 147 | + self.log.info("Bump mocktime to trigger governance cleanup") |
| 148 | + for delta, expected in ( |
| 149 | + (5 * 60, ['UpdateCachesAndClean -- Governance Objects:']), # mark old triggers for deletion |
| 150 | + (10 * 60, ['UpdateCachesAndClean -- Governance Objects: 0']), # deletion after delay |
| 151 | + ): |
| 152 | + self.mocktime += delta |
| 153 | + for node in self.nodes: |
| 154 | + with node.assert_debug_log(expected_msgs=expected): |
| 155 | + node.setmocktime(self.mocktime) |
| 156 | + node.mockscheduler(delta) |
| 157 | + |
| 158 | + # Confirm in RPC |
| 159 | + for node in self.nodes: |
| 160 | + assert_equal(len(node.gobject("list", "valid", "triggers")), 0) |
154 | 161 |
|
155 | 162 | self.log.info("Reconnect isolated node and confirm the next ChainLock will let it sync") |
156 | 163 | self.reconnect_isolated_node(5, 0) |
|
0 commit comments