Reduce repeated logic in BankForks unit tests (#32852)

* Move repeated BankForks logic into a loop
* Do away with redundant Vec<Arc<Bank>>
* Condense repeated logic into helper function
This commit is contained in:
steviez 2023-08-18 11:58:04 -05:00 committed by GitHub
parent 48e51134d7
commit 480851b865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 43 additions and 40 deletions

View File

@ -877,16 +877,25 @@ mod tests {
.collect()
}
fn extend_bank_forks(bank_forks: &mut BankForks, parent_child_pairs: &[(Slot, Slot)]) {
for (parent, child) in parent_child_pairs.iter() {
bank_forks.insert(Bank::new_from_parent(
&bank_forks[*parent],
&Pubkey::default(),
*child,
));
}
}
#[test]
fn test_bank_forks_with_set_root() {
let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
let mut banks = vec![Arc::new(Bank::new_for_tests(&genesis_config))];
assert_eq!(banks[0].slot(), 0);
let mut bank_forks = BankForks::new_from_banks(&banks, 0);
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[0], &Pubkey::default(), 1)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[1], &Pubkey::default(), 2)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[0], &Pubkey::default(), 3)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[3], &Pubkey::default(), 4)));
let bank = Bank::new_for_tests(&genesis_config);
let mut bank_forks = BankForks::new(bank);
let parent_child_pairs = vec![(0, 1), (1, 2), (0, 3), (3, 4)];
extend_bank_forks(&mut bank_forks, &parent_child_pairs);
assert_eq!(
bank_forks.ancestors(),
make_hash_map(vec![
@ -912,14 +921,15 @@ mod tests {
&AbsRequestSender::default(),
None, // highest confirmed root
);
banks[2].squash();
bank_forks[2].squash();
assert_eq!(bank_forks.ancestors(), make_hash_map(vec![(2, vec![]),]));
assert_eq!(
bank_forks.descendants(),
make_hash_map(vec![(0, vec![2]), (1, vec![2]), (2, vec![]),])
);
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[2], &Pubkey::default(), 5)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[5], &Pubkey::default(), 6)));
let parent_child_pairs = vec![(2, 5), (5, 6)];
extend_bank_forks(&mut bank_forks, &parent_child_pairs);
assert_eq!(
bank_forks.ancestors(),
make_hash_map(vec![(2, vec![]), (5, vec![2]), (6, vec![2, 5])])
@ -939,13 +949,13 @@ mod tests {
#[test]
fn test_bank_forks_with_highest_super_majority_root() {
let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
let mut banks = vec![Arc::new(Bank::new_for_tests(&genesis_config))];
assert_eq!(banks[0].slot(), 0);
let mut bank_forks = BankForks::new_from_banks(&banks, 0);
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[0], &Pubkey::default(), 1)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[1], &Pubkey::default(), 2)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[0], &Pubkey::default(), 3)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[3], &Pubkey::default(), 4)));
let bank = Bank::new_for_tests(&genesis_config);
assert_eq!(bank.slot(), 0);
let mut bank_forks = BankForks::new(bank);
let parent_child_pairs = vec![(0, 1), (1, 2), (0, 3), (3, 4)];
extend_bank_forks(&mut bank_forks, &parent_child_pairs);
assert_eq!(
bank_forks.ancestors(),
make_hash_map(vec![
@ -971,7 +981,7 @@ mod tests {
&AbsRequestSender::default(),
Some(1), // highest confirmed root
);
banks[2].squash();
bank_forks[2].squash();
assert_eq!(
bank_forks.ancestors(),
make_hash_map(vec![(1, vec![]), (2, vec![]),])
@ -980,8 +990,9 @@ mod tests {
bank_forks.descendants(),
make_hash_map(vec![(0, vec![1, 2]), (1, vec![2]), (2, vec![]),])
);
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[2], &Pubkey::default(), 5)));
banks.push(bank_forks.insert(Bank::new_from_parent(&banks[5], &Pubkey::default(), 6)));
let parent_child_pairs = vec![(2, 5), (5, 6)];
extend_bank_forks(&mut bank_forks, &parent_child_pairs);
assert_eq!(
bank_forks.ancestors(),
make_hash_map(vec![
@ -1009,26 +1020,18 @@ mod tests {
let bank = Bank::new_for_tests(&genesis_config);
let mut bank_forks = BankForks::new(bank);
let bank = Bank::new_from_parent(&bank_forks[0], &Pubkey::default(), 1);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[1], &Pubkey::default(), 3);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[3], &Pubkey::default(), 8);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[0], &Pubkey::default(), 2);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[2], &Pubkey::default(), 4);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[4], &Pubkey::default(), 5);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[5], &Pubkey::default(), 10);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[4], &Pubkey::default(), 6);
bank_forks.insert(bank);
let bank = Bank::new_from_parent(&bank_forks[6], &Pubkey::default(), 12);
bank_forks.insert(bank);
let parent_child_pairs = vec![
(0, 1),
(1, 3),
(3, 8),
(0, 2),
(2, 4),
(4, 5),
(5, 10),
(4, 6),
(6, 12),
];
extend_bank_forks(&mut bank_forks, &parent_child_pairs);
// Fork graph created for the test
// 0