Fix - `test_add_builtin()` should use `LoadedProgram::new_builtin()` and `ProgramCache::extract()` (#772)
Refactors test_add_builtin() to use LoadedProgram::new_builtin() and ProgramCache::extract().
This commit is contained in:
parent
499d36e354
commit
81519fab2a
|
@ -985,10 +985,9 @@ impl<FG: ForkGraph> TransactionBatchProcessor<FG> {
|
||||||
mod tests {
|
mod tests {
|
||||||
use {
|
use {
|
||||||
super::*,
|
super::*,
|
||||||
solana_bpf_loader_program::syscalls::create_program_runtime_environment_v1,
|
|
||||||
solana_program_runtime::{
|
solana_program_runtime::{
|
||||||
loaded_programs::{BlockRelation, ProgramRuntimeEnvironments},
|
loaded_programs::{BlockRelation, ProgramRuntimeEnvironments},
|
||||||
solana_rbpf::{elf::Executable, program::BuiltinProgram},
|
solana_rbpf::program::BuiltinProgram,
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
account::{create_account_shared_data_for_test, WritableAccount},
|
account::{create_account_shared_data_for_test, WritableAccount},
|
||||||
|
@ -2373,27 +2372,16 @@ mod tests {
|
||||||
fn test_add_builtin() {
|
fn test_add_builtin() {
|
||||||
let mock_bank = MockBankCallback::default();
|
let mock_bank = MockBankCallback::default();
|
||||||
let batch_processor = TransactionBatchProcessor::<TestForkGraph>::default();
|
let batch_processor = TransactionBatchProcessor::<TestForkGraph>::default();
|
||||||
|
batch_processor.program_cache.write().unwrap().fork_graph =
|
||||||
|
Some(Arc::new(RwLock::new(TestForkGraph {})));
|
||||||
|
|
||||||
let key = Pubkey::new_unique();
|
let key = Pubkey::new_unique();
|
||||||
let name = "a_builtin_name";
|
let name = "a_builtin_name";
|
||||||
let program = LoadedProgram {
|
let program = LoadedProgram::new_builtin(
|
||||||
program: LoadedProgramType::LegacyV0(
|
0,
|
||||||
Executable::load(
|
name.len(),
|
||||||
load_test_program().as_slice(),
|
|_invoke_context, _param0, _param1, _param2, _param3, _param4| {},
|
||||||
Arc::new(
|
);
|
||||||
create_program_runtime_environment_v1(
|
|
||||||
&FeatureSet::default(),
|
|
||||||
&ComputeBudget::default(),
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
)
|
|
||||||
.unwrap(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.unwrap(),
|
|
||||||
),
|
|
||||||
..Default::default()
|
|
||||||
};
|
|
||||||
|
|
||||||
batch_processor.add_builtin(&mock_bank, key, name, program);
|
batch_processor.add_builtin(&mock_bank, key, name, program);
|
||||||
|
|
||||||
|
@ -2402,41 +2390,24 @@ mod tests {
|
||||||
name.as_bytes()
|
name.as_bytes()
|
||||||
);
|
);
|
||||||
|
|
||||||
assert!(batch_processor
|
let mut loaded_programs_for_tx_batch = LoadedProgramsForTxBatch::new_from_cache(
|
||||||
.builtin_program_ids
|
0,
|
||||||
.read()
|
0,
|
||||||
.unwrap()
|
&batch_processor.program_cache.read().unwrap(),
|
||||||
.contains(&key));
|
);
|
||||||
let fetched_program = batch_processor
|
batch_processor.program_cache.write().unwrap().extract(
|
||||||
.program_cache
|
&mut vec![(key, (LoadedProgramMatchCriteria::NoCriteria, 1))],
|
||||||
.read()
|
&mut loaded_programs_for_tx_batch,
|
||||||
.unwrap()
|
true,
|
||||||
.get_flattened_entries(true, true);
|
);
|
||||||
let entry = fetched_program
|
let entry = loaded_programs_for_tx_batch.find(&key).unwrap();
|
||||||
.iter()
|
|
||||||
.find(|(entry_key, _)| *entry_key == key)
|
|
||||||
.map(|(_, value)| value.clone())
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
// Repeating code because LoadedProgram does not implement clone.
|
// Repeating code because LoadedProgram does not implement clone.
|
||||||
let program = LoadedProgram {
|
let program = LoadedProgram::new_builtin(
|
||||||
program: LoadedProgramType::LegacyV0(
|
0,
|
||||||
Executable::load(
|
name.len(),
|
||||||
load_test_program().as_slice(),
|
|_invoke_context, _param0, _param1, _param2, _param3, _param4| {},
|
||||||
Arc::new(
|
);
|
||||||
create_program_runtime_environment_v1(
|
|
||||||
&FeatureSet::default(),
|
|
||||||
&ComputeBudget::default(),
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
)
|
|
||||||
.unwrap(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.unwrap(),
|
|
||||||
),
|
|
||||||
..Default::default()
|
|
||||||
};
|
|
||||||
assert_eq!(entry, Arc::new(program));
|
assert_eq!(entry, Arc::new(program));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue