* Add compute budget program as a noop (#20992)
(cherry picked from commit 1e2bef76e3
)
# Conflicts:
# sdk/src/feature_set.rs
* resolve conflicts
Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
@ -14238,6 +14238,60 @@ pub(crate) mod tests {
|
||||
assert_eq!(rent_debits.0.len(), 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compute_budget_program_noop() {
|
||||
solana_logger::setup();
|
||||
let GenesisConfigInfo {
|
||||
mut genesis_config,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_config_with_leader(
|
||||
1_000_000_000_000_000,
|
||||
&Pubkey::new_unique(),
|
||||
bootstrap_validator_stake_lamports(),
|
||||
);
|
||||
|
||||
// activate all features except..
|
||||
activate_all_features(&mut genesis_config);
|
||||
genesis_config
|
||||
.accounts
|
||||
.remove(&feature_set::tx_wide_compute_cap::id());
|
||||
genesis_config
|
||||
.accounts
|
||||
.remove(&feature_set::requestable_heap_size::id());
|
||||
let mut bank = Bank::new(&genesis_config);
|
||||
|
||||
fn mock_ix_processor(
|
||||
_pubkey: &Pubkey,
|
||||
_data: &[u8],
|
||||
invoke_context: &mut dyn InvokeContext,
|
||||
) -> std::result::Result<(), InstructionError> {
|
||||
let compute_budget = invoke_context.get_bpf_compute_budget();
|
||||
assert_eq!(
|
||||
*compute_budget,
|
||||
BpfComputeBudget {
|
||||
max_units: 200_000,
|
||||
heap_size: None,
|
||||
..BpfComputeBudget::default()
|
||||
}
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
let program_id = solana_sdk::pubkey::new_rand();
|
||||
bank.add_builtin("mock_program", program_id, mock_ix_processor);
|
||||
|
||||
let message = Message::new(
|
||||
&[
|
||||
compute_budget::request_units(1),
|
||||
compute_budget::request_heap_frame(48 * 1024),
|
||||
Instruction::new_with_bincode(program_id, &0, vec![]),
|
||||
],
|
||||
Some(&mint_keypair.pubkey()),
|
||||
);
|
||||
let tx = Transaction::new(&[&mint_keypair], message, bank.last_blockhash());
|
||||
bank.process_transaction(&tx).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compute_request_instruction() {
|
||||
solana_logger::setup();
|
||||
|
@ -94,7 +94,7 @@ fn feature_builtins() -> Vec<(Builtin, Pubkey, ActivationType)> {
|
||||
solana_sdk::compute_budget::id(),
|
||||
solana_compute_budget_program::process_instruction,
|
||||
),
|
||||
feature_set::tx_wide_compute_cap::id(),
|
||||
feature_set::add_compute_budget_program::id(),
|
||||
ActivationType::NewProgram,
|
||||
),
|
||||
(
|
||||
|
@ -247,6 +247,10 @@ pub mod requestable_heap_size {
|
||||
solana_sdk::declare_id!("CCu4boMmfLuqcmfTLPHQiUo22ZdUsXjgzPAURYaWt1Bw");
|
||||
}
|
||||
|
||||
pub mod add_compute_budget_program {
|
||||
solana_sdk::declare_id!("4d5AKtxoh93Dwm1vHXUU3iRATuMndx1c431KgT2td52r");
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
/// Map of feature identifiers to user-visible description
|
||||
pub static ref FEATURE_NAMES: HashMap<Pubkey, &'static str> = [
|
||||
@ -309,6 +313,7 @@ lazy_static! {
|
||||
(sol_log_data_syscall_enabled::id(), "enable sol_log_data syscall"),
|
||||
(ed25519_program_enabled::id(), "enable builtin ed25519 signature verify program"),
|
||||
(requestable_heap_size::id(), "Requestable heap frame size"),
|
||||
(add_compute_budget_program::id(), "Add compute_budget_program"),
|
||||
/*************** ADD NEW FEATURES HERE ***************/
|
||||
]
|
||||
.iter()
|
||||
|
Reference in New Issue
Block a user