Cleanup use (#16327)
This commit is contained in:
parent
9784bbb802
commit
dee655df35
|
@ -4985,7 +4985,6 @@ dependencies = [
|
||||||
"solana-banks-server",
|
"solana-banks-server",
|
||||||
"solana-bpf-loader-program",
|
"solana-bpf-loader-program",
|
||||||
"solana-logger 1.7.0",
|
"solana-logger 1.7.0",
|
||||||
"solana-program 1.7.0",
|
|
||||||
"solana-runtime",
|
"solana-runtime",
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
"solana-stake-program",
|
"solana-stake-program",
|
||||||
|
|
|
@ -18,7 +18,6 @@ solana-banks-client = { path = "../banks-client", version = "=1.7.0" }
|
||||||
solana-banks-server = { path = "../banks-server", version = "=1.7.0" }
|
solana-banks-server = { path = "../banks-server", version = "=1.7.0" }
|
||||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "=1.7.0" }
|
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "=1.7.0" }
|
||||||
solana-logger = { path = "../logger", version = "=1.7.0" }
|
solana-logger = { path = "../logger", version = "=1.7.0" }
|
||||||
solana-program = { path = "../sdk/program", version = "=1.7.0" }
|
|
||||||
solana-runtime = { path = "../runtime", version = "=1.7.0" }
|
solana-runtime = { path = "../runtime", version = "=1.7.0" }
|
||||||
solana-sdk = { path = "../sdk", version = "=1.7.0" }
|
solana-sdk = { path = "../sdk", version = "=1.7.0" }
|
||||||
solana-vote-program = { path = "../programs/vote", version = "=1.7.0" }
|
solana-vote-program = { path = "../programs/vote", version = "=1.7.0" }
|
||||||
|
|
|
@ -7,20 +7,6 @@ use {
|
||||||
log::*,
|
log::*,
|
||||||
solana_banks_client::start_client,
|
solana_banks_client::start_client,
|
||||||
solana_banks_server::banks_server::start_local_server,
|
solana_banks_server::banks_server::start_local_server,
|
||||||
solana_program::{
|
|
||||||
account_info::AccountInfo,
|
|
||||||
entrypoint::ProgramResult,
|
|
||||||
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
|
||||||
hash::Hash,
|
|
||||||
instruction::Instruction,
|
|
||||||
instruction::InstructionError,
|
|
||||||
message::Message,
|
|
||||||
native_token::sol_to_lamports,
|
|
||||||
program_error::ProgramError,
|
|
||||||
program_stubs,
|
|
||||||
pubkey::Pubkey,
|
|
||||||
rent::Rent,
|
|
||||||
},
|
|
||||||
solana_runtime::{
|
solana_runtime::{
|
||||||
bank::{Bank, Builtin, ExecuteTimings},
|
bank::{Bank, Builtin, ExecuteTimings},
|
||||||
bank_forks::BankForks,
|
bank_forks::BankForks,
|
||||||
|
@ -29,13 +15,24 @@ use {
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
account::{Account, AccountSharedData, ReadableAccount},
|
account::{Account, AccountSharedData, ReadableAccount},
|
||||||
|
account_info::AccountInfo,
|
||||||
clock::Slot,
|
clock::Slot,
|
||||||
|
entrypoint::ProgramResult,
|
||||||
feature_set::demote_sysvar_write_locks,
|
feature_set::demote_sysvar_write_locks,
|
||||||
|
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
||||||
genesis_config::{ClusterType, GenesisConfig},
|
genesis_config::{ClusterType, GenesisConfig},
|
||||||
|
hash::Hash,
|
||||||
|
instruction::Instruction,
|
||||||
|
instruction::InstructionError,
|
||||||
keyed_account::KeyedAccount,
|
keyed_account::KeyedAccount,
|
||||||
|
message::Message,
|
||||||
|
native_token::sol_to_lamports,
|
||||||
process_instruction::{
|
process_instruction::{
|
||||||
stable_log, BpfComputeBudget, InvokeContext, ProcessInstructionWithContext,
|
stable_log, BpfComputeBudget, InvokeContext, ProcessInstructionWithContext,
|
||||||
},
|
},
|
||||||
|
program_error::ProgramError,
|
||||||
|
pubkey::Pubkey,
|
||||||
|
rent::Rent,
|
||||||
signature::{Keypair, Signer},
|
signature::{Keypair, Signer},
|
||||||
},
|
},
|
||||||
solana_vote_program::vote_state::{VoteState, VoteStateVersions},
|
solana_vote_program::vote_state::{VoteState, VoteStateVersions},
|
||||||
|
@ -94,7 +91,7 @@ fn get_invoke_context<'a>() -> &'a mut dyn InvokeContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn builtin_process_instruction(
|
pub fn builtin_process_instruction(
|
||||||
process_instruction: solana_program::entrypoint::ProcessInstruction,
|
process_instruction: solana_sdk::entrypoint::ProcessInstruction,
|
||||||
program_id: &Pubkey,
|
program_id: &Pubkey,
|
||||||
keyed_accounts: &[KeyedAccount],
|
keyed_accounts: &[KeyedAccount],
|
||||||
input: &[u8],
|
input: &[u8],
|
||||||
|
@ -185,7 +182,7 @@ macro_rules! processor {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SyscallStubs {}
|
struct SyscallStubs {}
|
||||||
impl program_stubs::SyscallStubs for SyscallStubs {
|
impl solana_sdk::program_stubs::SyscallStubs for SyscallStubs {
|
||||||
fn sol_log(&self, message: &str) {
|
fn sol_log(&self, message: &str) {
|
||||||
let invoke_context = get_invoke_context();
|
let invoke_context = get_invoke_context();
|
||||||
let logger = invoke_context.get_logger();
|
let logger = invoke_context.get_logger();
|
||||||
|
@ -529,7 +526,7 @@ impl ProgramTest {
|
||||||
program_id: Pubkey,
|
program_id: Pubkey,
|
||||||
process_instruction: Option<ProcessInstructionWithContext>,
|
process_instruction: Option<ProcessInstructionWithContext>,
|
||||||
) {
|
) {
|
||||||
let loader = solana_program::bpf_loader::id();
|
let loader = solana_sdk::bpf_loader::id();
|
||||||
let program_file = find_file(&format!("{}.so", program_name));
|
let program_file = find_file(&format!("{}.so", program_name));
|
||||||
|
|
||||||
if process_instruction.is_none() && program_file.is_none() {
|
if process_instruction.is_none() && program_file.is_none() {
|
||||||
|
@ -604,7 +601,7 @@ impl ProgramTest {
|
||||||
static ONCE: Once = Once::new();
|
static ONCE: Once = Once::new();
|
||||||
|
|
||||||
ONCE.call_once(|| {
|
ONCE.call_once(|| {
|
||||||
program_stubs::set_syscall_stubs(Box::new(SyscallStubs {}));
|
solana_sdk::program_stubs::set_syscall_stubs(Box::new(SyscallStubs {}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ pub fn spl_programs(rent: &Rent) -> Vec<(Pubkey, AccountSharedData)> {
|
||||||
AccountSharedData::from(Account {
|
AccountSharedData::from(Account {
|
||||||
lamports: rent.minimum_balance(elf.len()).min(1),
|
lamports: rent.minimum_balance(elf.len()).min(1),
|
||||||
data: elf.to_vec(),
|
data: elf.to_vec(),
|
||||||
owner: solana_program::bpf_loader::id(),
|
owner: solana_sdk::bpf_loader::id(),
|
||||||
executable: true,
|
executable: true,
|
||||||
rent_epoch: 0,
|
rent_epoch: 0,
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
use {
|
use {
|
||||||
solana_program::{
|
solana_program_test::{processor, ProgramTest},
|
||||||
|
solana_sdk::{
|
||||||
account_info::{next_account_info, AccountInfo},
|
account_info::{next_account_info, AccountInfo},
|
||||||
entrypoint::ProgramResult,
|
entrypoint::ProgramResult,
|
||||||
instruction::{AccountMeta, Instruction},
|
instruction::{AccountMeta, Instruction},
|
||||||
msg,
|
msg,
|
||||||
program::invoke,
|
program::invoke,
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
|
signature::Signer,
|
||||||
|
transaction::Transaction,
|
||||||
},
|
},
|
||||||
solana_program_test::{processor, ProgramTest},
|
|
||||||
solana_sdk::{signature::Signer, transaction::Transaction},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Process instruction to invoke into another program
|
// Process instruction to invoke into another program
|
||||||
|
@ -44,20 +45,19 @@ fn invoked_process_instruction(
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn cpi() {
|
async fn cpi() {
|
||||||
let invoker_program_id = Pubkey::new_unique();
|
let invoker_program_id = Pubkey::new_unique();
|
||||||
// Initialize and start the test network
|
|
||||||
let mut program_test = ProgramTest::new(
|
let mut program_test = ProgramTest::new(
|
||||||
"program-test-fuzz-invoker",
|
"invoker",
|
||||||
invoker_program_id,
|
invoker_program_id,
|
||||||
processor!(invoker_process_instruction),
|
processor!(invoker_process_instruction),
|
||||||
);
|
);
|
||||||
let invoked_program_id = Pubkey::new_unique();
|
let invoked_program_id = Pubkey::new_unique();
|
||||||
program_test.add_program(
|
program_test.add_program(
|
||||||
"program-test-fuzz-invoked",
|
"invoked",
|
||||||
invoked_program_id,
|
invoked_program_id,
|
||||||
processor!(invoked_process_instruction),
|
processor!(invoked_process_instruction),
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut test_state = program_test.start_with_context().await;
|
let mut context = program_test.start_with_context().await;
|
||||||
let instructions = vec![Instruction::new_with_bincode(
|
let instructions = vec![Instruction::new_with_bincode(
|
||||||
invoker_program_id,
|
invoker_program_id,
|
||||||
&[0],
|
&[0],
|
||||||
|
@ -66,12 +66,12 @@ async fn cpi() {
|
||||||
|
|
||||||
let transaction = Transaction::new_signed_with_payer(
|
let transaction = Transaction::new_signed_with_payer(
|
||||||
&instructions,
|
&instructions,
|
||||||
Some(&test_state.payer.pubkey()),
|
Some(&context.payer.pubkey()),
|
||||||
&[&test_state.payer],
|
&[&context.payer],
|
||||||
test_state.last_blockhash,
|
context.last_blockhash,
|
||||||
);
|
);
|
||||||
|
|
||||||
test_state
|
context
|
||||||
.banks_client
|
.banks_client
|
||||||
.process_transaction(transaction)
|
.process_transaction(transaction)
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
use {
|
use {
|
||||||
solana_banks_client::BanksClient,
|
solana_banks_client::BanksClient,
|
||||||
solana_program::{
|
|
||||||
account_info::AccountInfo, entrypoint::ProgramResult, hash::Hash, instruction::Instruction,
|
|
||||||
msg, pubkey::Pubkey, rent::Rent, system_instruction,
|
|
||||||
},
|
|
||||||
solana_program_test::{processor, ProgramTest},
|
solana_program_test::{processor, ProgramTest},
|
||||||
solana_sdk::{signature::Keypair, signature::Signer, transaction::Transaction},
|
solana_sdk::{
|
||||||
|
account_info::AccountInfo, entrypoint::ProgramResult, hash::Hash, instruction::Instruction,
|
||||||
|
msg, pubkey::Pubkey, rent::Rent, signature::Keypair, signature::Signer, system_instruction,
|
||||||
|
transaction::Transaction,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[allow(clippy::unnecessary_wraps)]
|
#[allow(clippy::unnecessary_wraps)]
|
||||||
|
@ -57,16 +57,16 @@ fn simulate_fuzz_with_context() {
|
||||||
processor!(process_instruction),
|
processor!(process_instruction),
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut test_state = rt.block_on(async { program_test.start_with_context().await });
|
let mut context = rt.block_on(async { program_test.start_with_context().await });
|
||||||
|
|
||||||
// the honggfuzz `fuzz!` macro does not allow for async closures,
|
// the honggfuzz `fuzz!` macro does not allow for async closures,
|
||||||
// so we have to use the runtime directly to run async functions
|
// so we have to use the runtime directly to run async functions
|
||||||
rt.block_on(async {
|
rt.block_on(async {
|
||||||
run_fuzz_instructions(
|
run_fuzz_instructions(
|
||||||
&[1, 2, 3, 4, 5],
|
&[1, 2, 3, 4, 5],
|
||||||
&mut test_state.banks_client,
|
&mut context.banks_client,
|
||||||
&test_state.payer,
|
&context.payer,
|
||||||
test_state.last_blockhash,
|
context.last_blockhash,
|
||||||
&program_id,
|
&program_id,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#![allow(clippy::integer_arithmetic)]
|
#![allow(clippy::integer_arithmetic)]
|
||||||
use {
|
use {
|
||||||
solana_program::{
|
solana_program_test::{processor, ProgramTest, ProgramTestError},
|
||||||
|
solana_sdk::{
|
||||||
account_info::{next_account_info, AccountInfo},
|
account_info::{next_account_info, AccountInfo},
|
||||||
clock::Clock,
|
clock::Clock,
|
||||||
entrypoint::ProgramResult,
|
entrypoint::ProgramResult,
|
||||||
|
@ -8,12 +9,9 @@ use {
|
||||||
program_error::ProgramError,
|
program_error::ProgramError,
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
rent::Rent,
|
rent::Rent,
|
||||||
|
signature::{Keypair, Signer},
|
||||||
system_instruction, system_program,
|
system_instruction, system_program,
|
||||||
sysvar::{clock, Sysvar},
|
sysvar::{clock, Sysvar},
|
||||||
},
|
|
||||||
solana_program_test::{processor, ProgramTest, ProgramTestError},
|
|
||||||
solana_sdk::{
|
|
||||||
signature::{Keypair, Signer},
|
|
||||||
transaction::{Transaction, TransactionError},
|
transaction::{Transaction, TransactionError},
|
||||||
},
|
},
|
||||||
solana_stake_program::{
|
solana_stake_program::{
|
||||||
|
|
|
@ -878,11 +878,7 @@ impl Executor for BpfExecutor {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use solana_runtime::{
|
use solana_runtime::{bank::Bank, bank_client::BankClient};
|
||||||
bank::Bank,
|
|
||||||
bank_client::BankClient,
|
|
||||||
message_processor::{Executors, ThisInvokeContext},
|
|
||||||
};
|
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::{
|
account::{
|
||||||
create_account_shared_data_for_test as create_account_for_test, AccountSharedData,
|
create_account_shared_data_for_test as create_account_for_test, AccountSharedData,
|
||||||
|
@ -895,7 +891,7 @@ mod tests {
|
||||||
instruction::Instruction,
|
instruction::Instruction,
|
||||||
instruction::{AccountMeta, InstructionError},
|
instruction::{AccountMeta, InstructionError},
|
||||||
message::Message,
|
message::Message,
|
||||||
process_instruction::{BpfComputeBudget, MockInvokeContext},
|
process_instruction::{MockComputeMeter, MockInvokeContext},
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
rent::Rent,
|
rent::Rent,
|
||||||
signature::{Keypair, Signer},
|
signature::{Keypair, Signer},
|
||||||
|
@ -1128,33 +1124,11 @@ mod tests {
|
||||||
|
|
||||||
// Case: limited budget
|
// Case: limited budget
|
||||||
let program_id = Pubkey::default();
|
let program_id = Pubkey::default();
|
||||||
let mut invoke_context = ThisInvokeContext::new(
|
let mut invoke_context = MockInvokeContext {
|
||||||
&program_id,
|
key: program_id,
|
||||||
Rent::default(),
|
compute_meter: MockComputeMeter::default(),
|
||||||
vec![],
|
..MockInvokeContext::default()
|
||||||
&[],
|
};
|
||||||
&[],
|
|
||||||
&[],
|
|
||||||
None,
|
|
||||||
BpfComputeBudget {
|
|
||||||
max_units: 1,
|
|
||||||
log_units: 100,
|
|
||||||
log_64_units: 100,
|
|
||||||
create_program_address_units: 1500,
|
|
||||||
invoke_units: 1000,
|
|
||||||
max_invoke_depth: 2,
|
|
||||||
sha256_base_cost: 85,
|
|
||||||
sha256_byte_cost: 1,
|
|
||||||
max_call_depth: 20,
|
|
||||||
stack_frame_size: 4096,
|
|
||||||
log_pubkey_units: 100,
|
|
||||||
max_cpi_instruction_size: usize::MAX,
|
|
||||||
cpi_bytes_per_unit: 250,
|
|
||||||
},
|
|
||||||
Rc::new(RefCell::new(Executors::default())),
|
|
||||||
None,
|
|
||||||
Arc::new(FeatureSet::default()),
|
|
||||||
);
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Err(InstructionError::ProgramFailedToComplete),
|
Err(InstructionError::ProgramFailedToComplete),
|
||||||
process_instruction(&program_key, &keyed_accounts, &[], &mut invoke_context)
|
process_instruction(&program_key, &keyed_accounts, &[], &mut invoke_context)
|
||||||
|
|
Loading…
Reference in New Issue