Make unhappy test continuously timeout

This commit is contained in:
danielsanchezq 2023-04-11 18:55:29 +02:00
parent 409ae77349
commit b9c13d3a94

View File

@ -153,44 +153,49 @@ class TestCarnotHappyPath(TestCase):
proposed_block = leader.latest_event
self.assertIsNotNone(proposed_block)
node: MockCarnot
timeouts = []
for node in (nodes[int_to_id(_id)] for _id in range(3)):
node.local_timeout()
timeouts.append(node.latest_event)
for view in range(1, 4):
node: MockCarnot
timeouts = []
for node in (nodes[int_to_id(_id)] for _id in range(3)):
node.local_timeout()
timeouts.append(node.latest_event)
leader.timeout_detected(timeouts)
timeout_qc = leader.latest_event
leader.timeout_detected(timeouts)
timeout_qc = leader.latest_event
for node in nodes.values():
node.received_timeout_qc(timeout_qc)
# new view votes from leafs
for node in (nodes[int_to_id(_id)] for _id in (2, 3, 4)):
node.approve_new_view(timeout_qc, set())
new_views_leafs_3_4 = [nodes[int_to_id(_id)].latest_event for _id in (3, 4)]
new_view_leaf_2 = nodes[int_to_id(2)].latest_event
# new view votes from committee 1 ()
node_1: MockCarnot = nodes[int_to_id(1)]
node_1.approve_new_view(timeout_qc, new_views_leafs_3_4)
new_view_1 = node_1.latest_event
# committee 1 and committee 2 new view votes
new_views = [new_view_1, new_view_leaf_2]
# forward root childs votes to root committee (compound of just the leader in this case)
leader.approve_new_view(timeout_qc, new_views)
root_new_view = leader.latest_event
leader.propose_block(view+1, [root_new_view, new_view_1, new_view_leaf_2])
# Add final assertions on nodes
proposed_block = leader.latest_event
self.assertEqual(proposed_block.view, view + 1)
self.assertEqual(proposed_block.qc.view, view)
self.assertEqual(proposed_block.qc.high_qc().view, 0)
self.assertEqual(leader.last_timeout_view_qc.view, view)
self.assertEqual(leader.local_high_qc.view, 0)
self.assertEqual(leader.highest_voted_view, view)
for node in nodes.values():
node.receive_block(proposed_block)
for node in nodes.values():
node.received_timeout_qc(timeout_qc)
# new view votes from leafs
for node in (nodes[int_to_id(_id)] for _id in (2, 3, 4)):
node.approve_new_view(timeout_qc, set())
new_views_leafs_3_4 = [nodes[int_to_id(_id)].latest_event for _id in (3, 4)]
new_view_leaf_2 = nodes[int_to_id(2)].latest_event
# new view votes from committee 1 ()
node_1: MockCarnot = nodes[int_to_id(1)]
node_1.approve_new_view(timeout_qc, new_views_leafs_3_4)
new_view_1 = node_1.latest_event
# committee 1 and committee 2 new view votes
new_views = [new_view_1, new_view_leaf_2]
# forward root childs votes to root committee (compound of just the leader in this case)
leader.approve_new_view(timeout_qc, new_views)
root_new_view = leader.latest_event
leader.propose_block(2, [root_new_view, new_view_1, new_view_leaf_2])
# Add final assertions on nodes
new_block_1 = leader.latest_event
self.assertEqual(new_block_1.view, 2)
self.assertEqual(new_block_1.qc.view, 1)
self.assertEqual(new_block_1.qc.high_qc().view, 0)
self.assertEqual(leader.last_timeout_view_qc.view, 1)
self.assertEqual(leader.local_high_qc.view, 0)
self.assertEqual(leader.highest_voted_view, 1)
self.assertEqual(node.latest_committed_view, 0)