test_rent_collect_rent_from_accounts (#26204)
This commit is contained in:
parent
30d2b112e4
commit
cbefc581c0
|
@ -9765,6 +9765,47 @@ pub(crate) mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn new_from_parent_next_epoch(parent: &Arc<Bank>, epochs: Epoch) -> Bank {
|
||||||
|
let mut slot = parent.slot();
|
||||||
|
let mut epoch = parent.epoch();
|
||||||
|
for _ in 0..epochs {
|
||||||
|
slot += parent.epoch_schedule().get_slots_in_epoch(epoch);
|
||||||
|
epoch = parent.epoch_schedule().get_epoch(slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
Bank::new_from_parent(parent, &Pubkey::default(), slot)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
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 first_bank = Arc::new(new_from_parent(&genesis_bank));
|
||||||
|
let first_slot = 1;
|
||||||
|
assert_eq!(first_slot, first_bank.slot());
|
||||||
|
let epoch_delta = 4;
|
||||||
|
let later_bank = Arc::new(new_from_parent_next_epoch(&first_bank, epoch_delta)); // a bank a few epochs in the future
|
||||||
|
let later_slot = later_bank.slot();
|
||||||
|
assert!(later_bank.epoch() == genesis_bank.epoch() + epoch_delta);
|
||||||
|
|
||||||
|
let data_size = 0; // make sure we're rent exempt
|
||||||
|
let lamports = later_bank.get_minimum_balance_for_rent_exemption(data_size); // cannot be 0 or we zero out rent_epoch in rent collection and we need to be rent exempt
|
||||||
|
let mut account = AccountSharedData::new(lamports, data_size, &Pubkey::default());
|
||||||
|
account.set_rent_epoch(later_bank.epoch() - 1); // non-zero, but less than later_bank's epoch
|
||||||
|
|
||||||
|
let just_rewrites = true;
|
||||||
|
let result = later_bank.collect_rent_from_accounts(
|
||||||
|
vec![(zero_lamport_pubkey, account, later_slot)],
|
||||||
|
just_rewrites,
|
||||||
|
);
|
||||||
|
assert!(result.rewrites_skipped.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_rent_eager_collect_rent_zero_lamport_deterministic() {
|
fn test_rent_eager_collect_rent_zero_lamport_deterministic() {
|
||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
|
|
Loading…
Reference in New Issue