Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jstarry committed Jun 19, 2024
1 parent ada9f85 commit 7b5803d
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 18 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions accounts-db/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ rand_chacha = { workspace = true }
serde_bytes = { workspace = true }
# See order-crates-for-publishing.py for using this unusual `path = "."`
solana-accounts-db = { path = ".", features = ["dev-context-only-utils"] }
solana-compute-budget = { workspace = true }
solana-logger = { workspace = true }
solana-sdk = { workspace = true, features = ["dev-context-only-utils"] }
static_assertions = { workspace = true }
Expand Down
5 changes: 5 additions & 0 deletions accounts-db/src/accounts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -833,6 +833,7 @@ mod tests {
use {
super::*,
assert_matches::assert_matches,
solana_compute_budget::compute_budget_processor::ComputeBudgetLimits,
solana_sdk::{
account::{AccountSharedData, WritableAccount},
address_lookup_table::state::LookupTableMeta,
Expand Down Expand Up @@ -1578,6 +1579,7 @@ mod tests {
program_indices: vec![],
nonce: None,
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand All @@ -1588,6 +1590,7 @@ mod tests {
program_indices: vec![],
nonce: None,
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1864,6 +1867,7 @@ mod tests {
program_indices: vec![],
nonce: nonce.clone(),
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1970,6 +1974,7 @@ mod tests {
program_indices: vec![],
nonce: nonce.clone(),
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down
25 changes: 11 additions & 14 deletions svm/src/account_loader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1157,10 +1157,9 @@ mod tests {
&mock_bank,
sanitized_transaction.message(),
ValidatedTransactionDetails {
nonce: None,
fee_details,
fee_payer_account: fee_payer_account_data,
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
},
&mut error_metrics,
None,
Expand All @@ -1185,6 +1184,7 @@ mod tests {
program_indices: vec![vec![]],
nonce: None,
fee_details,
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1369,10 +1369,9 @@ mod tests {
&mock_bank,
sanitized_transaction.message(),
ValidatedTransactionDetails {
nonce: None,
fee_details,
fee_payer_account: fee_payer_account_data,
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
},
&mut error_metrics,
None,
Expand All @@ -1396,6 +1395,7 @@ mod tests {
],
nonce: None,
fee_details,
compute_budget_limits: ComputeBudgetLimits::default(),
program_indices: vec![vec![1]],
rent: 0,
rent_debits: RentDebits::default(),
Expand Down Expand Up @@ -1555,10 +1555,9 @@ mod tests {
&mock_bank,
sanitized_transaction.message(),
ValidatedTransactionDetails {
nonce: None,
fee_details,
fee_payer_account: fee_payer_account_data,
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
},
&mut error_metrics,
None,
Expand Down Expand Up @@ -1587,6 +1586,7 @@ mod tests {
program_indices: vec![vec![2, 1]],
nonce: None,
fee_details,
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1650,10 +1650,9 @@ mod tests {
&mock_bank,
sanitized_transaction.message(),
ValidatedTransactionDetails {
nonce: None,
fee_details,
fee_payer_account: fee_payer_account_data,
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
},
&mut error_metrics,
None,
Expand Down Expand Up @@ -1685,6 +1684,7 @@ mod tests {
program_indices: vec![vec![3, 1], vec![3, 1]],
nonce: None,
fee_details,
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1805,10 +1805,8 @@ mod tests {
false,
);
let validation_result = Ok(ValidatedTransactionDetails {
nonce: None,
fee_details: FeeDetails::default(),
fee_payer_account: fee_payer_account_data,
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
});

let results = load_accounts(
Expand Down Expand Up @@ -1848,6 +1846,7 @@ mod tests {
program_indices: vec![vec![3, 1], vec![3, 1]],
nonce: None,
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand Down Expand Up @@ -1881,9 +1880,7 @@ mod tests {

let validation_result = Ok(ValidatedTransactionDetails {
nonce: Some(NonceFull::default()),
fee_details: FeeDetails::default(),
fee_payer_account: AccountSharedData::default(),
fee_payer_rent_debit: 0,
..ValidatedTransactionDetails::default()
});

let result = load_accounts(
Expand Down
43 changes: 39 additions & 4 deletions svm/src/transaction_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1149,6 +1149,7 @@ mod tests {
program_indices: vec![vec![0]],
nonce: None,
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 32,
Expand All @@ -1162,7 +1163,6 @@ mod tests {
let result = batch_processor.execute_loaded_transaction(
&sanitized_transaction,
&mut loaded_transaction,
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&mut TransactionErrorMetrics::default(),
&mut program_cache_for_tx_batch,
Expand All @@ -1184,7 +1184,6 @@ mod tests {
let result = batch_processor.execute_loaded_transaction(
&sanitized_transaction,
&mut loaded_transaction,
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&mut TransactionErrorMetrics::default(),
&mut program_cache_for_tx_batch,
Expand Down Expand Up @@ -1214,7 +1213,6 @@ mod tests {
let result = batch_processor.execute_loaded_transaction(
&sanitized_transaction,
&mut loaded_transaction,
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&mut TransactionErrorMetrics::default(),
&mut program_cache_for_tx_batch,
Expand Down Expand Up @@ -1276,6 +1274,7 @@ mod tests {
program_indices: vec![vec![0]],
nonce: None,
fee_details: FeeDetails::default(),
compute_budget_limits: ComputeBudgetLimits::default(),
rent: 0,
rent_debits: RentDebits::default(),
loaded_accounts_data_size: 0,
Expand All @@ -1290,7 +1289,6 @@ mod tests {
let _ = batch_processor.execute_loaded_transaction(
&sanitized_transaction,
&mut loaded_transaction,
ComputeBudget::default(),
&mut ExecuteTimings::default(),
&mut error_metrics,
&mut program_cache_for_tx_batch,
Expand Down Expand Up @@ -1954,6 +1952,8 @@ mod tests {
Some(&Pubkey::new_unique()),
&Hash::new_unique(),
));
let compute_budget_limits =
process_compute_budget_instructions(message.program_instructions_iter()).unwrap();
let fee_payer_address = message.fee_payer();
let rent_collector = RentCollector::default();
let min_balance = rent_collector.rent.minimum_balance(nonce::State::size());
Expand Down Expand Up @@ -1995,6 +1995,7 @@ mod tests {
assert_eq!(
result,
Ok((
compute_budget_limits,
FeeDetails::new_for_tests(transaction_fee, priority_fee, false),
post_validation_fee_payer_account,
0 // rent due
Expand All @@ -2010,6 +2011,8 @@ mod tests {
Some(&Pubkey::new_unique()),
&Hash::new_unique(),
));
let compute_budget_limits =
process_compute_budget_instructions(message.program_instructions_iter()).unwrap();
let fee_payer_address = message.fee_payer();
let mut rent_collector = RentCollector::default();
rent_collector.rent.lamports_per_byte_year = 1_000_000;
Expand Down Expand Up @@ -2054,6 +2057,7 @@ mod tests {
assert_eq!(
result,
Ok((
compute_budget_limits,
FeeDetails::new_for_tests(transaction_fee, 0, false),
post_validation_fee_payer_account,
rent_due,
Expand Down Expand Up @@ -2177,6 +2181,34 @@ mod tests {
assert_eq!(result, Err(TransactionError::InvalidAccountForFee));
}

#[test]
fn test_validate_transaction_fee_payer_invalid_compute_budget() {
let lamports_per_signature = 5000;
let message = new_unchecked_sanitized_message(Message::new(
&[
ComputeBudgetInstruction::set_compute_unit_limit(2000u32),
ComputeBudgetInstruction::set_compute_unit_limit(42u32),
],
Some(&Pubkey::new_unique()),
));

let mock_bank = MockBankCallback::default();
let mut error_counters = TransactionErrorMetrics::default();
let batch_processor = TransactionBatchProcessor::<TestForkGraph>::default();
let result = batch_processor.validate_transaction_fee_payer(
&mock_bank,
&message,
&FeatureSet::default(),
&FeeStructure::default(),
lamports_per_signature,
&RentCollector::default(),
&mut error_counters,
);

assert_eq!(error_counters.invalid_compute_budget, 1);
assert_eq!(result, Err(TransactionError::DuplicateInstruction(1u8)));
}

#[test]
fn test_validate_transaction_fee_payer_is_nonce() {
let feature_set = FeatureSet::default();
Expand All @@ -2191,6 +2223,8 @@ mod tests {
Some(&Pubkey::new_unique()),
&Hash::new_unique(),
));
let compute_budget_limits =
process_compute_budget_instructions(message.program_instructions_iter()).unwrap();
let fee_payer_address = message.fee_payer();
let min_balance = Rent::default().minimum_balance(nonce::State::size());
let transaction_fee = lamports_per_signature;
Expand Down Expand Up @@ -2235,6 +2269,7 @@ mod tests {
assert_eq!(
result,
Ok((
compute_budget_limits,
FeeDetails::new_for_tests(transaction_fee, priority_fee, false),
post_validation_fee_payer_account,
0 // rent due
Expand Down

0 comments on commit 7b5803d

Please sign in to comment.