program-test: Add large bootstrap stake for realistic warmups (#16739)
This commit is contained in:
		
							
								
								
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -4941,6 +4941,7 @@ dependencies = [
 | 
			
		||||
name = "solana-program-test"
 | 
			
		||||
version = "1.7.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "assert_matches",
 | 
			
		||||
 "async-trait",
 | 
			
		||||
 "base64 0.12.3",
 | 
			
		||||
 "bincode",
 | 
			
		||||
 
 | 
			
		||||
@@ -28,4 +28,5 @@ thiserror = "1.0"
 | 
			
		||||
tokio = { version = "1", features = ["full"] }
 | 
			
		||||
 | 
			
		||||
[dev-dependencies]
 | 
			
		||||
assert_matches = "1.3.0"
 | 
			
		||||
solana-stake-program = { path = "../programs/stake", version = "=1.7.0" }
 | 
			
		||||
 
 | 
			
		||||
@@ -672,7 +672,8 @@ impl ProgramTest {
 | 
			
		||||
        let rent = Rent::default();
 | 
			
		||||
        let fee_rate_governor = FeeRateGovernor::default();
 | 
			
		||||
        let bootstrap_validator_pubkey = Pubkey::new_unique();
 | 
			
		||||
        let bootstrap_validator_stake_lamports = rent.minimum_balance(VoteState::size_of());
 | 
			
		||||
        let bootstrap_validator_stake_lamports =
 | 
			
		||||
            rent.minimum_balance(VoteState::size_of()) + sol_to_lamports(1_000_000.0);
 | 
			
		||||
 | 
			
		||||
        let mint_keypair = Keypair::new();
 | 
			
		||||
        let voting_keypair = Keypair::new();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
#![allow(clippy::integer_arithmetic)]
 | 
			
		||||
use {
 | 
			
		||||
    assert_matches::assert_matches,
 | 
			
		||||
    bincode::deserialize,
 | 
			
		||||
    solana_program_test::{processor, ProgramTest, ProgramTestError},
 | 
			
		||||
    solana_sdk::{
 | 
			
		||||
        account_info::{next_account_info, AccountInfo},
 | 
			
		||||
@@ -11,12 +13,16 @@ use {
 | 
			
		||||
        rent::Rent,
 | 
			
		||||
        signature::{Keypair, Signer},
 | 
			
		||||
        system_instruction, system_program,
 | 
			
		||||
        sysvar::{clock, Sysvar},
 | 
			
		||||
        sysvar::{
 | 
			
		||||
            clock,
 | 
			
		||||
            stake_history::{self, StakeHistory},
 | 
			
		||||
            Sysvar,
 | 
			
		||||
        },
 | 
			
		||||
        transaction::{Transaction, TransactionError},
 | 
			
		||||
    },
 | 
			
		||||
    solana_stake_program::{
 | 
			
		||||
        stake_instruction,
 | 
			
		||||
        stake_state::{Authorized, Lockup},
 | 
			
		||||
        stake_state::{Authorized, Lockup, StakeState},
 | 
			
		||||
    },
 | 
			
		||||
    solana_vote_program::{
 | 
			
		||||
        vote_instruction,
 | 
			
		||||
@@ -248,4 +254,30 @@ async fn stake_rewards_from_warp() {
 | 
			
		||||
        .expect("account exists")
 | 
			
		||||
        .unwrap();
 | 
			
		||||
    assert!(account.lamports > stake_lamports);
 | 
			
		||||
 | 
			
		||||
    // check that stake is fully active
 | 
			
		||||
    let stake_history_account = context
 | 
			
		||||
        .banks_client
 | 
			
		||||
        .get_account(stake_history::id())
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("account exists")
 | 
			
		||||
        .unwrap();
 | 
			
		||||
 | 
			
		||||
    let clock_account = context
 | 
			
		||||
        .banks_client
 | 
			
		||||
        .get_account(clock::id())
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("account exists")
 | 
			
		||||
        .unwrap();
 | 
			
		||||
 | 
			
		||||
    let stake_state: StakeState = deserialize(&account.data).unwrap();
 | 
			
		||||
    let stake_history: StakeHistory = deserialize(&stake_history_account.data).unwrap();
 | 
			
		||||
    let clock: Clock = deserialize(&clock_account.data).unwrap();
 | 
			
		||||
    let stake = stake_state.stake().unwrap();
 | 
			
		||||
    assert_matches!(
 | 
			
		||||
        stake
 | 
			
		||||
            .delegation
 | 
			
		||||
            .stake_activating_and_deactivating(clock.epoch, Some(&stake_history), true,),
 | 
			
		||||
        (_, 0, 0)
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user