program-test: Add large bootstrap stake for realistic warmups (#16739)

This commit is contained in:
Jon Cinque 2021-04-22 16:44:54 +02:00 committed by GitHub
parent 517a30e83d
commit f4214637a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 3 deletions

1
Cargo.lock generated
View File

@ -4941,6 +4941,7 @@ dependencies = [
name = "solana-program-test"
version = "1.7.0"
dependencies = [
"assert_matches",
"async-trait",
"base64 0.12.3",
"bincode",

View File

@ -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" }

View File

@ -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();

View File

@ -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)
);
}