Fix flaky test test_fork_choice_refresh_old_votes (#19278)

* Fix flaky test test_fork_choice_refresh_old_votes

* Wait for latest voted block to arrive in blockstore

* Wait for block to be full
This commit is contained in:
Ashwin Sekar 2021-08-20 14:15:11 -07:00 committed by GitHub
parent 17978c2ff4
commit 05e7d1027b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 4 deletions

View File

@ -1042,9 +1042,9 @@ fn test_kill_partition_switch_threshold_progress() {
\-------- 4 (38%, heavier fork)
*/
// where the 2% that voted on slot 1 don't see their votes land in a block
// and thus without integrating votes from gossip into fork choice, will
// deem slot 4 the heavier fork and try to switch to slot 4, which doesn't pass the
// switch threshold. This stalls the network.
// due to blockhash expiration, and thus without resigning their votes with
// a newer blockhash, will deem slot 4 the heavier fork and try to switch to
// slot 4, which doesn't pass the switch threshold. This stalls the network.
// We do this by:
// 1) Creating a partition so all three nodes don't see each other
@ -1137,7 +1137,9 @@ fn test_fork_choice_refresh_old_votes() {
info!("Opened blockstores");
// Get latest votes
// Get latest votes. We additionally check to make sure the vote has landed in
// blockstore. This is important because if we were the leader for the block there
// is a possibility of voting before broadcast has inserted in blockstore.
let (lighter_fork_latest_vote, _) = last_vote_in_tower(
&lighter_fork_ledger_path,
&context.lighter_fork_validator_key,
@ -1145,6 +1147,11 @@ fn test_fork_choice_refresh_old_votes() {
.unwrap();
let (heaviest_fork_latest_vote, _) =
last_vote_in_tower(&heaviest_ledger_path, &context.heaviest_validator_key).unwrap();
while !lighter_fork_blockstore.is_full(lighter_fork_latest_vote)
|| !heaviest_blockstore.is_full(heaviest_fork_latest_vote)
{
sleep(Duration::from_millis(100));
}
// Find the first slot on the smaller fork
let lighter_ancestors: BTreeSet<Slot> = std::iter::once(lighter_fork_latest_vote)