make bank test creation standard (#26519)

This commit is contained in:
Jeff Washington (jwash) 2022-07-12 09:07:55 -05:00 committed by GitHub
parent d0d3ad7166
commit f54f528148
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 38 additions and 65 deletions

View File

@ -8085,10 +8085,18 @@ pub(crate) mod tests {
assert_eq!(rent.lamports_per_byte_year, 5);
}
fn create_simple_test_bank(lamports: u64) -> Bank {
let (genesis_config, _mint_keypair) = create_genesis_config(lamports);
Bank::new_for_tests(&genesis_config)
}
fn create_simple_test_arc_bank(lamports: u64) -> Arc<Bank> {
Arc::new(create_simple_test_bank(lamports))
}
#[test]
fn test_bank_block_height() {
let (genesis_config, _mint_keypair) = create_genesis_config(1);
let bank0 = Arc::new(Bank::new_for_tests(&genesis_config));
let bank0 = create_simple_test_arc_bank(1);
assert_eq!(bank0.block_height(), 0);
let bank1 = Arc::new(new_from_parent(&bank0));
assert_eq!(bank1.block_height(), 1);
@ -8110,8 +8118,7 @@ pub(crate) mod tests {
}
}
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(100_000);
let initial_epochs = bank.epoch_stake_keys();
assert_eq!(initial_epochs, vec![0, 1]);
@ -8447,8 +8454,7 @@ pub(crate) mod tests {
#[test]
fn test_store_account_and_update_capitalization_missing() {
let (genesis_config, _mint_keypair) = create_genesis_config(0);
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(0);
let pubkey = solana_sdk::pubkey::new_rand();
let some_lamports = 400;
@ -9074,9 +9080,7 @@ pub(crate) mod tests {
#[test]
fn test_rent_eager_across_epoch_without_gap() {
let (genesis_config, _mint_keypair) = create_genesis_config(1);
let mut bank = Arc::new(Bank::new_for_tests(&genesis_config));
let mut bank = create_simple_test_arc_bank(1);
assert_eq!(bank.rent_collection_partitions(), vec![(0, 0, 32)]);
bank = Arc::new(new_from_parent(&bank));
@ -9836,11 +9840,9 @@ pub(crate) mod tests {
fn test_collect_rent_from_accounts() {
solana_logger::setup();
let (genesis_config, _mint_keypair) = create_genesis_config(100000);
let zero_lamport_pubkey = Pubkey::new(&[0; 32]);
let genesis_bank = Arc::new(Bank::new_for_tests(&genesis_config));
let genesis_bank = create_simple_test_arc_bank(100000);
let first_bank = Arc::new(new_from_parent(&genesis_bank));
let first_slot = 1;
assert_eq!(first_slot, first_bank.slot());
@ -10466,8 +10468,7 @@ pub(crate) mod tests {
#[test]
fn test_bank_deposit() {
let (genesis_config, _mint_keypair) = create_genesis_config(100);
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(100);
// Test new account
let key = Keypair::new();
@ -10483,8 +10484,7 @@ pub(crate) mod tests {
#[test]
fn test_bank_withdraw() {
let (genesis_config, _mint_keypair) = create_genesis_config(100);
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(100);
// Test no account
let key = Keypair::new();
@ -11410,8 +11410,7 @@ pub(crate) mod tests {
#[test]
#[should_panic(expected = "assertion failed: self.is_frozen()")]
fn test_verify_hash_unfrozen() {
let (genesis_config, _mint_keypair) = create_genesis_config(2_000);
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(2_000);
assert!(bank.verify_hash());
}
@ -12437,8 +12436,7 @@ pub(crate) mod tests {
#[test]
fn test_status_cache_ancestors() {
solana_logger::setup();
let (genesis_config, _mint_keypair) = create_genesis_config(500);
let parent = Arc::new(Bank::new_for_tests(&genesis_config));
let parent = create_simple_test_arc_bank(500);
let bank1 = Arc::new(new_from_parent(&parent));
let mut bank = bank1;
for _ in 0..MAX_CACHE_ENTRIES * 2 {
@ -12566,8 +12564,7 @@ pub(crate) mod tests {
#[test]
fn test_add_instruction_processor_for_existing_unrelated_accounts() {
let (genesis_config, _mint_keypair) = create_genesis_config(500);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(500);
fn mock_ix_processor(
_first_instruction_account: usize,
@ -12641,8 +12638,7 @@ pub(crate) mod tests {
#[allow(deprecated)]
#[test]
fn test_recent_blockhashes_sysvar() {
let (genesis_config, _mint_keypair) = create_genesis_config(500);
let mut bank = Arc::new(Bank::new_for_tests(&genesis_config));
let mut bank = create_simple_test_arc_bank(500);
for i in 1..5 {
let bhq_account = bank.get_account(&sysvar::recent_blockhashes::id()).unwrap();
let recent_blockhashes =
@ -12661,8 +12657,7 @@ pub(crate) mod tests {
#[allow(deprecated)]
#[test]
fn test_blockhash_queue_sysvar_consistency() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let mut bank = Arc::new(Bank::new_for_tests(&genesis_config));
let mut bank = create_simple_test_arc_bank(100_000);
goto_end_of_slot(Arc::get_mut(&mut bank).unwrap());
let bhq_account = bank.get_account(&sysvar::recent_blockhashes::id()).unwrap();
@ -13015,8 +13010,7 @@ pub(crate) mod tests {
#[test]
fn test_assign_from_nonce_account_fail() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000_000);
let bank = Arc::new(Bank::new_for_tests(&genesis_config));
let bank = create_simple_test_arc_bank(100_000_000);
let nonce = Keypair::new();
let nonce_account = AccountSharedData::new_data(
42_424_242,
@ -13040,8 +13034,7 @@ pub(crate) mod tests {
#[test]
fn test_nonce_must_be_advanceable() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000_000);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(100_000_000);
bank.feature_set = Arc::new(FeatureSet::all_enabled());
let bank = Arc::new(bank);
let nonce_keypair = Keypair::new();
@ -13716,8 +13709,7 @@ pub(crate) mod tests {
#[test]
fn test_collect_balances() {
let (genesis_config, _mint_keypair) = create_genesis_config(500);
let parent = Arc::new(Bank::new_for_tests(&genesis_config));
let parent = create_simple_test_arc_bank(500);
let bank0 = Arc::new(new_from_parent(&parent));
let keypair = Keypair::new();
@ -14178,8 +14170,7 @@ pub(crate) mod tests {
fn test_fuzz_instructions() {
solana_logger::setup();
use rand::{thread_rng, Rng};
let (genesis_config, _mint_keypair) = create_genesis_config(1_000_000_000);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(1_000_000_000);
let max_programs = 5;
let program_keys: Vec<_> = (0..max_programs)
@ -14603,12 +14594,10 @@ pub(crate) mod tests {
#[test]
fn test_process_stale_slot_with_budget() {
solana_logger::setup();
let (genesis_config, _mint_keypair) = create_genesis_config(1_000_000_000);
let pubkey1 = solana_sdk::pubkey::new_rand();
let pubkey2 = solana_sdk::pubkey::new_rand();
let mut bank = Arc::new(Bank::new_for_tests(&genesis_config));
let mut bank = create_simple_test_arc_bank(1_000_000_000);
bank.restore_old_behavior_for_fragile_tests();
assert_eq!(bank.process_stale_slot_with_budget(0, 0), 0);
assert_eq!(bank.process_stale_slot_with_budget(133, 0), 133);
@ -14650,8 +14639,6 @@ pub(crate) mod tests {
#[test]
fn test_add_builtin_no_overwrite() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
#[allow(clippy::unnecessary_wraps)]
fn mock_ix_processor(
_first_instruction_account: usize,
@ -14664,7 +14651,7 @@ pub(crate) mod tests {
let program_id = solana_sdk::pubkey::new_rand();
let mut bank = Arc::new(Bank::new_from_parent(
&Arc::new(Bank::new_for_tests(&genesis_config)),
&create_simple_test_arc_bank(100_000),
&Pubkey::default(),
slot,
));
@ -14688,8 +14675,6 @@ pub(crate) mod tests {
#[test]
fn test_add_builtin_loader_no_overwrite() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
#[allow(clippy::unnecessary_wraps)]
fn mock_ix_processor(
_first_instruction_account: usize,
@ -14702,7 +14687,7 @@ pub(crate) mod tests {
let loader_id = solana_sdk::pubkey::new_rand();
let mut bank = Arc::new(Bank::new_from_parent(
&Arc::new(Bank::new_for_tests(&genesis_config)),
&create_simple_test_arc_bank(100_000),
&Pubkey::default(),
slot,
));
@ -14824,13 +14809,11 @@ pub(crate) mod tests {
Maybe, inconsistent program activation is detected on snapshot restore?"
)]
fn test_add_builtin_account_after_frozen() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let slot = 123;
let program_id = Pubkey::from_str("CiXgo2KHKSDmDnV1F6B69eWFgNAPiSBjjYvfB4cvRNre").unwrap();
let bank = Bank::new_from_parent(
&Arc::new(Bank::new_for_tests(&genesis_config)),
&create_simple_test_arc_bank(100_000),
&Pubkey::default(),
slot,
);
@ -14845,13 +14828,11 @@ pub(crate) mod tests {
CiXgo2KHKSDmDnV1F6B69eWFgNAPiSBjjYvfB4cvRNre)."
)]
fn test_add_builtin_account_replace_none() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let slot = 123;
let program_id = Pubkey::from_str("CiXgo2KHKSDmDnV1F6B69eWFgNAPiSBjjYvfB4cvRNre").unwrap();
let bank = Bank::new_from_parent(
&Arc::new(Bank::new_for_tests(&genesis_config)),
&create_simple_test_arc_bank(100_000),
&Pubkey::default(),
slot,
);
@ -14936,13 +14917,11 @@ pub(crate) mod tests {
Maybe, inconsistent program activation is detected on snapshot restore?"
)]
fn test_add_precompiled_account_after_frozen() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let slot = 123;
let program_id = Pubkey::from_str("CiXgo2KHKSDmDnV1F6B69eWFgNAPiSBjjYvfB4cvRNre").unwrap();
let bank = Bank::new_from_parent(
&Arc::new(Bank::new_for_tests(&genesis_config)),
&create_simple_test_arc_bank(100_000),
&Pubkey::default(),
slot,
);
@ -15453,8 +15432,7 @@ pub(crate) mod tests {
#[test]
fn test_compute_active_feature_set() {
let (genesis_config, _mint_keypair) = create_genesis_config(100_000);
let bank0 = Arc::new(Bank::new_for_tests(&genesis_config));
let bank0 = create_simple_test_arc_bank(100_000);
let mut bank = Bank::new_from_parent(&bank0, &Pubkey::default(), 1);
let test_feature = "TestFeature11111111111111111111111111111111"
@ -15508,8 +15486,7 @@ pub(crate) mod tests {
#[test]
fn test_program_replacement() {
let (genesis_config, _mint_keypair) = create_genesis_config(0);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(0);
// Setup original program account
let old_address = Pubkey::new_unique();
@ -15572,8 +15549,7 @@ pub(crate) mod tests {
#[test]
fn test_adjust_sysvar_balance_for_rent() {
let (genesis_config, _mint_keypair) = create_genesis_config(0);
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(0);
let mut smaller_sample_sysvar = AccountSharedData::new(1, 0, &Pubkey::default());
assert_eq!(smaller_sample_sysvar.lamports(), 1);
bank.adjust_sysvar_balance_for_rent(&mut smaller_sample_sysvar);
@ -17887,8 +17863,7 @@ pub(crate) mod tests {
#[test]
fn test_accounts_data_size_with_bad_transaction() {
const ACCOUNT_SIZE: u64 = MAX_PERMITTED_DATA_LENGTH;
let (genesis_config, _mint_keypair) = create_genesis_config(1_000_000_000_000);
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(1_000_000_000_000);
bank.activate_feature(&feature_set::cap_accounts_data_len::id());
let transaction = system_transaction::create_account(
&Keypair::new(),
@ -18628,11 +18603,9 @@ pub(crate) mod tests {
#[test]
fn test_update_accounts_data_size() {
let (genesis_config, _mint_keypair) = create_genesis_config(100);
// Test: Subtraction saturates at 0
{
let bank = Bank::new_for_tests(&genesis_config);
let bank = create_simple_test_bank(100);
let initial_data_size = bank.load_accounts_data_size() as i64;
let data_size = 567;
bank.accounts_data_size_delta_on_chain
@ -18645,7 +18618,7 @@ pub(crate) mod tests {
// Test: Addition saturates at u64::MAX
{
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(100);
let data_size_remaining = 567;
bank.accounts_data_size_initial = u64::MAX - data_size_remaining;
bank.accounts_data_size_delta_off_chain
@ -18657,7 +18630,7 @@ pub(crate) mod tests {
{
// Set the accounts data size to be in the middle, then perform a bunch of small
// updates, checking the results after each one.
let mut bank = Bank::new_for_tests(&genesis_config);
let mut bank = create_simple_test_bank(100);
bank.accounts_data_size_initial = u32::MAX as u64;
let mut rng = rand::thread_rng();
for _ in 0..100 {