Skip to content

Commit 2d4b884

Browse files
committed
Adjusts tests.
1 parent b8bf290 commit 2d4b884

File tree

12 files changed

+532
-904
lines changed

12 files changed

+532
-904
lines changed

cli/tests/program.rs

Lines changed: 137 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use {
1313
solana_cli_output::{parse_sign_only_reply_string, OutputFormat},
1414
solana_client::rpc_config::RpcSendTransactionConfig,
1515
solana_faucet::faucet::run_local_faucet,
16-
solana_feature_set::enable_alt_bn128_syscall,
16+
solana_feature_set::{enable_alt_bn128_syscall, enable_loader_v4},
1717
solana_rpc::rpc::JsonRpcConfig,
1818
solana_rpc_client::rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClient},
1919
solana_rpc_client_api::config::RpcTransactionConfig,
@@ -33,7 +33,7 @@ use {
3333
transaction::Transaction,
3434
},
3535
solana_streamer::socket::SocketAddrSpace,
36-
solana_test_validator::{TestValidator, TestValidatorGenesis},
36+
solana_test_validator::TestValidatorGenesis,
3737
solana_transaction_status::UiTransactionEncoding,
3838
std::{
3939
env,
@@ -82,8 +82,17 @@ fn test_cli_program_deploy_non_upgradeable() {
8282
let mint_keypair = Keypair::new();
8383
let mint_pubkey = mint_keypair.pubkey();
8484
let faucet_addr = run_local_faucet(mint_keypair, None);
85-
let test_validator =
86-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
85+
let test_validator = TestValidatorGenesis::default()
86+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
87+
.rent(Rent {
88+
lamports_per_byte_year: 1,
89+
exemption_threshold: 1.0,
90+
..Rent::default()
91+
})
92+
.faucet_addr(Some(faucet_addr))
93+
.deactivate_features(&[enable_loader_v4::id()])
94+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
95+
.expect("validator start failed");
8796

8897
let rpc_client =
8998
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -287,8 +296,17 @@ fn test_cli_program_deploy_no_authority() {
287296
let mint_keypair = Keypair::new();
288297
let mint_pubkey = mint_keypair.pubkey();
289298
let faucet_addr = run_local_faucet(mint_keypair, None);
290-
let test_validator =
291-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
299+
let test_validator = TestValidatorGenesis::default()
300+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
301+
.rent(Rent {
302+
lamports_per_byte_year: 1,
303+
exemption_threshold: 1.0,
304+
..Rent::default()
305+
})
306+
.faucet_addr(Some(faucet_addr))
307+
.deactivate_features(&[enable_loader_v4::id()])
308+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
309+
.expect("validator start failed");
292310

293311
let rpc_client =
294312
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -406,6 +424,7 @@ fn test_cli_program_deploy_feature(enable_feature: bool, skip_preflight: bool) {
406424
test_validator_builder.deactivate_features(&[enable_alt_bn128_syscall::id()]);
407425
}
408426

427+
test_validator_builder = test_validator_builder.deactivate_features(&[enable_loader_v4::id()]);
409428
let test_validator = test_validator_builder
410429
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
411430
.expect("validator start failed");
@@ -542,6 +561,7 @@ fn test_cli_program_upgrade_with_feature(enable_feature: bool) {
542561
test_validator_builder.deactivate_features(&[enable_alt_bn128_syscall::id()]);
543562
}
544563

564+
test_validator_builder = test_validator_builder.deactivate_features(&[enable_loader_v4::id()]);
545565
let test_validator = test_validator_builder
546566
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
547567
.expect("validator start failed");
@@ -691,8 +711,17 @@ fn test_cli_program_deploy_with_authority() {
691711
let mint_keypair = Keypair::new();
692712
let mint_pubkey = mint_keypair.pubkey();
693713
let faucet_addr = run_local_faucet(mint_keypair, None);
694-
let test_validator =
695-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
714+
let test_validator = TestValidatorGenesis::default()
715+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
716+
.rent(Rent {
717+
lamports_per_byte_year: 1,
718+
exemption_threshold: 1.0,
719+
..Rent::default()
720+
})
721+
.faucet_addr(Some(faucet_addr))
722+
.deactivate_features(&[enable_loader_v4::id()])
723+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
724+
.expect("validator start failed");
696725

697726
let rpc_client =
698727
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -1093,8 +1122,17 @@ fn test_cli_program_upgrade_auto_extend(skip_preflight: bool) {
10931122
let mint_keypair = Keypair::new();
10941123
let mint_pubkey = mint_keypair.pubkey();
10951124
let faucet_addr = run_local_faucet(mint_keypair, None);
1096-
let test_validator =
1097-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
1125+
let test_validator = TestValidatorGenesis::default()
1126+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
1127+
.rent(Rent {
1128+
lamports_per_byte_year: 1,
1129+
exemption_threshold: 1.0,
1130+
..Rent::default()
1131+
})
1132+
.faucet_addr(Some(faucet_addr))
1133+
.deactivate_features(&[enable_loader_v4::id()])
1134+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
1135+
.expect("validator start failed");
10981136

10991137
let rpc_client =
11001138
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -1255,8 +1293,17 @@ fn test_cli_program_close_program() {
12551293
let mint_keypair = Keypair::new();
12561294
let mint_pubkey = mint_keypair.pubkey();
12571295
let faucet_addr = run_local_faucet(mint_keypair, None);
1258-
let test_validator =
1259-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
1296+
let test_validator = TestValidatorGenesis::default()
1297+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
1298+
.rent(Rent {
1299+
lamports_per_byte_year: 1,
1300+
exemption_threshold: 1.0,
1301+
..Rent::default()
1302+
})
1303+
.faucet_addr(Some(faucet_addr))
1304+
.deactivate_features(&[enable_loader_v4::id()])
1305+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
1306+
.expect("validator start failed");
12601307

12611308
let rpc_client =
12621309
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -1374,8 +1421,17 @@ fn test_cli_program_extend_program() {
13741421
let mint_keypair = Keypair::new();
13751422
let mint_pubkey = mint_keypair.pubkey();
13761423
let faucet_addr = run_local_faucet(mint_keypair, None);
1377-
let test_validator =
1378-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
1424+
let test_validator = TestValidatorGenesis::default()
1425+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
1426+
.rent(Rent {
1427+
lamports_per_byte_year: 1,
1428+
exemption_threshold: 1.0,
1429+
..Rent::default()
1430+
})
1431+
.faucet_addr(Some(faucet_addr))
1432+
.deactivate_features(&[enable_loader_v4::id()])
1433+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
1434+
.expect("validator start failed");
13791435

13801436
let rpc_client =
13811437
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -1550,8 +1606,17 @@ fn test_cli_program_write_buffer() {
15501606
let mint_keypair = Keypair::new();
15511607
let mint_pubkey = mint_keypair.pubkey();
15521608
let faucet_addr = run_local_faucet(mint_keypair, None);
1553-
let test_validator =
1554-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
1609+
let test_validator = TestValidatorGenesis::default()
1610+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
1611+
.rent(Rent {
1612+
lamports_per_byte_year: 1,
1613+
exemption_threshold: 1.0,
1614+
..Rent::default()
1615+
})
1616+
.faucet_addr(Some(faucet_addr))
1617+
.deactivate_features(&[enable_loader_v4::id()])
1618+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
1619+
.expect("validator start failed");
15551620

15561621
let rpc_client =
15571622
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2037,8 +2102,17 @@ fn test_cli_program_set_buffer_authority() {
20372102
let mint_keypair = Keypair::new();
20382103
let mint_pubkey = mint_keypair.pubkey();
20392104
let faucet_addr = run_local_faucet(mint_keypair, None);
2040-
let test_validator =
2041-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
2105+
let test_validator = TestValidatorGenesis::default()
2106+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
2107+
.rent(Rent {
2108+
lamports_per_byte_year: 1,
2109+
exemption_threshold: 1.0,
2110+
..Rent::default()
2111+
})
2112+
.faucet_addr(Some(faucet_addr))
2113+
.deactivate_features(&[enable_loader_v4::id()])
2114+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
2115+
.expect("validator start failed");
20422116

20432117
let rpc_client =
20442118
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2209,8 +2283,17 @@ fn test_cli_program_mismatch_buffer_authority() {
22092283
let mint_keypair = Keypair::new();
22102284
let mint_pubkey = mint_keypair.pubkey();
22112285
let faucet_addr = run_local_faucet(mint_keypair, None);
2212-
let test_validator =
2213-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
2286+
let test_validator = TestValidatorGenesis::default()
2287+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
2288+
.rent(Rent {
2289+
lamports_per_byte_year: 1,
2290+
exemption_threshold: 1.0,
2291+
..Rent::default()
2292+
})
2293+
.faucet_addr(Some(faucet_addr))
2294+
.deactivate_features(&[enable_loader_v4::id()])
2295+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
2296+
.expect("validator start failed");
22142297

22152298
let rpc_client =
22162299
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2335,8 +2418,17 @@ fn test_cli_program_deploy_with_offline_signing(use_offline_signer_as_fee_payer:
23352418
let mint_keypair = Keypair::new();
23362419
let mint_pubkey = mint_keypair.pubkey();
23372420
let faucet_addr = run_local_faucet(mint_keypair, None);
2338-
let test_validator =
2339-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
2421+
let test_validator = TestValidatorGenesis::default()
2422+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
2423+
.rent(Rent {
2424+
lamports_per_byte_year: 1,
2425+
exemption_threshold: 1.0,
2426+
..Rent::default()
2427+
})
2428+
.faucet_addr(Some(faucet_addr))
2429+
.deactivate_features(&[enable_loader_v4::id()])
2430+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
2431+
.expect("validator start failed");
23402432

23412433
let rpc_client =
23422434
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2528,8 +2620,17 @@ fn test_cli_program_show() {
25282620
let mint_keypair = Keypair::new();
25292621
let mint_pubkey = mint_keypair.pubkey();
25302622
let faucet_addr = run_local_faucet(mint_keypair, None);
2531-
let test_validator =
2532-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
2623+
let test_validator = TestValidatorGenesis::default()
2624+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
2625+
.rent(Rent {
2626+
lamports_per_byte_year: 1,
2627+
exemption_threshold: 1.0,
2628+
..Rent::default()
2629+
})
2630+
.faucet_addr(Some(faucet_addr))
2631+
.deactivate_features(&[enable_loader_v4::id()])
2632+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
2633+
.expect("validator start failed");
25332634

25342635
let rpc_client =
25352636
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2725,8 +2826,17 @@ fn test_cli_program_dump() {
27252826
let mint_keypair = Keypair::new();
27262827
let mint_pubkey = mint_keypair.pubkey();
27272828
let faucet_addr = run_local_faucet(mint_keypair, None);
2728-
let test_validator =
2729-
TestValidator::with_no_fees(mint_pubkey, Some(faucet_addr), SocketAddrSpace::Unspecified);
2829+
let test_validator = TestValidatorGenesis::default()
2830+
.fee_rate_governor(FeeRateGovernor::new(0, 0))
2831+
.rent(Rent {
2832+
lamports_per_byte_year: 1,
2833+
exemption_threshold: 1.0,
2834+
..Rent::default()
2835+
})
2836+
.faucet_addr(Some(faucet_addr))
2837+
.deactivate_features(&[enable_loader_v4::id()])
2838+
.start_with_mint_address(mint_pubkey, SocketAddrSpace::Unspecified)
2839+
.expect("validator start failed");
27302840

27312841
let rpc_client =
27322842
RpcClient::new_with_commitment(test_validator.rpc_url(), CommitmentConfig::processed());
@@ -2864,6 +2974,7 @@ fn test_cli_program_deploy_with_args(compute_unit_price: Option<u64>, use_rpc: b
28642974
exemption_threshold: 1.0,
28652975
..Rent::default()
28662976
})
2977+
.deactivate_features(&[enable_loader_v4::id()])
28672978
.rpc_config(JsonRpcConfig {
28682979
enable_rpc_transaction_history: true,
28692980
faucet_addr: Some(faucet_addr),

programs/bpf_loader/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,9 @@ mod tests {
16701670
expected_result,
16711671
Entrypoint::vm,
16721672
|invoke_context| {
1673+
let mut feature_set = invoke_context.get_feature_set().clone();
1674+
feature_set.deactivate(&enable_loader_v4::id());
1675+
invoke_context.mock_set_feature_set(Arc::new(feature_set));
16731676
test_utils::load_all_invoked_programs(invoke_context);
16741677
},
16751678
|_invoke_context| {},

programs/sbf/benches/bpf_loader.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use {
3232
bank::Bank,
3333
bank_client::BankClient,
3434
genesis_utils::{create_genesis_config, GenesisConfigInfo},
35-
loader_utils::{load_program_from_file, load_upgradeable_program_and_advance_slot},
35+
loader_utils::{load_program_from_file, load_program_of_loader_v4},
3636
},
3737
solana_sdk::{
3838
account::AccountSharedData,
@@ -201,9 +201,9 @@ fn bench_program_execute_noop(bencher: &mut Bencher) {
201201
let authority_keypair = Keypair::new();
202202
let mint_pubkey = mint_keypair.pubkey();
203203

204-
let (_, invoke_program_id) = load_upgradeable_program_and_advance_slot(
204+
let (_bank, invoke_program_id) = load_program_of_loader_v4(
205205
&mut bank_client,
206-
bank_forks.as_ref(),
206+
&bank_forks,
207207
&mint_keypair,
208208
&authority_keypair,
209209
"noop",

programs/sbf/c/src/invoked/invoked.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@ extern uint64_t entrypoint(const uint8_t *input) {
3131
static const int INVOKED_PROGRAM_DUP_INDEX = 3;
3232
sol_assert(sol_deserialize(input, &params, 4));
3333

34-
SolPubkey sbf_loader_upgradeable_id =
35-
(SolPubkey){.x = {
36-
2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62,
37-
247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192,
38-
83, 122, 16, 4, 128, 0, 0}};
34+
SolPubkey loader_v4_id =
35+
(SolPubkey){.x = {
36+
5, 18, 180, 17, 81, 81, 227, 122, 173, 10, 139, 197, 211, 136, 46, 123, 127, 218, 76, 243, 210, 192, 40, 200, 207, 131, 54, 24, 0, 0, 0, 0
37+
}};
3938

4039
for (int i = 0; i < params.data_len; i++) {
4140
sol_assert(params.data[i] == i);
@@ -64,7 +63,7 @@ extern uint64_t entrypoint(const uint8_t *input) {
6463
sol_assert(
6564
SolPubkey_same(accounts[INVOKED_PROGRAM_INDEX].key, params.program_id))
6665
sol_assert(SolPubkey_same(accounts[INVOKED_PROGRAM_INDEX].owner,
67-
&sbf_loader_upgradeable_id));
66+
&loader_v4_id));
6867
sol_assert(!accounts[INVOKED_PROGRAM_INDEX].is_signer);
6968
sol_assert(!accounts[INVOKED_PROGRAM_INDEX].is_writable);
7069
sol_assert(accounts[INVOKED_PROGRAM_INDEX].rent_epoch == UINT64_MAX);

programs/sbf/c/src/read_program/read_program.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ extern uint64_t entrypoint(const uint8_t *input) {
1010
return ERROR_INVALID_ARGUMENT;
1111
}
1212

13-
char ka_data[] = {0x02, 0x00, 0x00, 0x00};
14-
1513
sol_assert(params.ka_num == 1);
16-
sol_assert(!sol_memcmp(params.ka[0].data, ka_data, 4));
14+
sol_assert(!sol_memcmp(params.ka[0].data, params.data, params.data_len));
1715
sol_assert(params.ka[0].is_signer == false);
1816
sol_assert(params.ka[0].is_writable == false);
1917
sol_assert(params.ka[0].executable == true);

programs/sbf/rust/invoked/src/lib.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
use {
66
solana_program::{
77
account_info::AccountInfo,
8-
bpf_loader_upgradeable,
98
entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
9+
loader_v4,
1010
log::sol_log_64,
1111
msg,
1212
program::{get_return_data, invoke, invoke_signed, set_return_data},
@@ -69,10 +69,7 @@ fn process_instruction(
6969
assert!(!accounts[INVOKED_ARGUMENT_INDEX].executable);
7070

7171
assert_eq!(accounts[INVOKED_PROGRAM_INDEX].key, program_id);
72-
assert_eq!(
73-
accounts[INVOKED_PROGRAM_INDEX].owner,
74-
&bpf_loader_upgradeable::id()
75-
);
72+
assert_eq!(accounts[INVOKED_PROGRAM_INDEX].owner, &loader_v4::id());
7673
assert!(!accounts[INVOKED_PROGRAM_INDEX].is_signer);
7774
assert!(!accounts[INVOKED_PROGRAM_INDEX].is_writable);
7875
assert_eq!(accounts[INVOKED_PROGRAM_INDEX].rent_epoch, u64::MAX);

0 commit comments

Comments
 (0)