@@ -7190,11 +7190,15 @@ fn test_bank_load_program() {
7190
7190
}
7191
7191
7192
7192
#[allow(deprecated)]
7193
- #[ test]
7194
- fn test_bpf_loader_upgradeable_deploy_with_max_len ( ) {
7193
+ #[test_case(false; "informal_loaded_size")]
7194
+ #[test_case(true; "simd186_loaded_size")]
7195
+ fn test_bpf_loader_upgradeable_deploy_with_max_len(formalize_loaded_transaction_data_size: bool) {
7195
7196
let (genesis_config, mint_keypair) = create_genesis_config_no_tx_fee(1_000_000_000);
7196
7197
let mut bank = Bank::new_for_tests(&genesis_config);
7197
7198
bank.feature_set = Arc::new(FeatureSet::all_enabled());
7199
+ if !formalize_loaded_transaction_data_size {
7200
+ bank.deactivate_feature(&feature_set::formalize_loaded_transaction_data_size::id());
7201
+ }
7198
7202
let (bank, bank_forks) = bank.wrap_with_bank_forks_for_tests();
7199
7203
let mut bank_client = BankClient::new_shared(bank.clone());
7200
7204
@@ -8389,10 +8393,15 @@ fn test_timestamp_fast() {
8389
8393
}
8390
8394
}
8391
8395
8392
- #[ test]
8393
- fn test_program_is_native_loader ( ) {
8396
+ #[test_case(false; "informal_loaded_size")]
8397
+ #[test_case(true; "simd186_loaded_size")]
8398
+ fn test_program_is_native_loader(formalize_loaded_transaction_data_size: bool) {
8394
8399
let (genesis_config, mint_keypair) = create_genesis_config(50000);
8395
- let ( bank, _bank_forks) = Bank :: new_with_bank_forks_for_tests ( & genesis_config) ;
8400
+ let mut bank = Bank::new_for_tests(&genesis_config);
8401
+ if formalize_loaded_transaction_data_size {
8402
+ bank.activate_feature(&feature_set::formalize_loaded_transaction_data_size::id());
8403
+ }
8404
+ let (bank, _bank_forks) = bank.wrap_with_bank_forks_for_tests();
8396
8405
8397
8406
let tx = Transaction::new_signed_with_payer(
8398
8407
&[Instruction::new_with_bincode(
@@ -8404,20 +8413,29 @@ fn test_program_is_native_loader() {
8404
8413
&[&mint_keypair],
8405
8414
bank.last_blockhash(),
8406
8415
);
8407
- assert_eq ! (
8408
- bank. process_transaction( & tx) ,
8409
- Err ( TransactionError :: InstructionError (
8410
- 0 ,
8411
- InstructionError :: UnsupportedProgramId
8412
- ) )
8413
- ) ;
8416
+
8417
+ let err = bank.process_transaction(&tx).unwrap_err();
8418
+ if formalize_loaded_transaction_data_size {
8419
+ assert_eq!(err, TransactionError::ProgramAccountNotFound);
8420
+ } else {
8421
+ assert_eq!(
8422
+ err,
8423
+ TransactionError::InstructionError(0, InstructionError::UnsupportedProgramId)
8424
+ );
8425
+ }
8414
8426
}
8415
8427
8416
- #[ test]
8417
- fn test_invoke_non_program_account_owned_by_a_builtin ( ) {
8428
+ #[test_case(false; "informal_loaded_size")]
8429
+ #[test_case(true; "simd186_loaded_size")]
8430
+ fn test_invoke_non_program_account_owned_by_a_builtin(
8431
+ formalize_loaded_transaction_data_size: bool,
8432
+ ) {
8418
8433
let (genesis_config, mint_keypair) = create_genesis_config(10000000);
8419
8434
let mut bank = Bank::new_for_tests(&genesis_config);
8420
8435
bank.activate_feature(&feature_set::remove_accounts_executable_flag_checks::id());
8436
+ if formalize_loaded_transaction_data_size {
8437
+ bank.activate_feature(&feature_set::formalize_loaded_transaction_data_size::id());
8438
+ }
8421
8439
let (bank, _bank_forks) = bank.wrap_with_bank_forks_for_tests();
8422
8440
8423
8441
let bogus_program = Pubkey::new_unique();
@@ -8444,13 +8462,12 @@ fn test_invoke_non_program_account_owned_by_a_builtin() {
8444
8462
&[&mint_keypair, &created_account_keypair],
8445
8463
bank.last_blockhash(),
8446
8464
);
8447
- assert_eq ! (
8448
- bank. process_transaction( & tx) ,
8449
- Err ( TransactionError :: InstructionError (
8450
- 0 ,
8451
- InstructionError :: UnsupportedProgramId
8452
- ) )
8453
- ) ;
8465
+ let expected_error = if formalize_loaded_transaction_data_size {
8466
+ TransactionError::InvalidProgramForExecution
8467
+ } else {
8468
+ TransactionError::InstructionError(0, InstructionError::UnsupportedProgramId)
8469
+ };
8470
+ assert_eq!(bank.process_transaction(&tx), Err(expected_error),);
8454
8471
}
8455
8472
8456
8473
#[test]
@@ -10591,20 +10608,31 @@ fn test_calculate_fee_secp256k1() {
10591
10608
assert_eq!(calculate_test_fee(&message, 1, &fee_structure,), 11);
10592
10609
}
10593
10610
10594
- #[ test]
10595
- fn test_an_empty_instruction_without_program ( ) {
10611
+ #[test_case(false; "informal_loaded_size")]
10612
+ #[test_case(true; "simd186_loaded_size")]
10613
+ fn test_an_empty_instruction_without_program(formalize_loaded_transaction_data_size: bool) {
10596
10614
let (genesis_config, mint_keypair) = create_genesis_config_no_tx_fee_no_rent(1);
10597
10615
let destination = solana_pubkey::new_rand();
10598
10616
let mut ix = system_instruction::transfer(&mint_keypair.pubkey(), &destination, 0);
10599
10617
ix.program_id = native_loader::id(); // Empty executable account chain
10600
10618
let message = Message::new(&[ix], Some(&mint_keypair.pubkey()));
10601
10619
let tx = Transaction::new(&[&mint_keypair], message, genesis_config.hash());
10602
10620
10603
- let ( bank, _bank_forks) = Bank :: new_with_bank_forks_for_tests ( & genesis_config) ;
10604
- assert_eq ! (
10605
- bank. process_transaction( & tx) . unwrap_err( ) ,
10606
- TransactionError :: InstructionError ( 0 , InstructionError :: UnsupportedProgramId ) ,
10607
- ) ;
10621
+ let mut bank = Bank::new_for_tests(&genesis_config);
10622
+ if !formalize_loaded_transaction_data_size {
10623
+ bank.deactivate_feature(&feature_set::formalize_loaded_transaction_data_size::id());
10624
+ }
10625
+ let (bank, _bank_forks) = bank.wrap_with_bank_forks_for_tests();
10626
+
10627
+ let err = bank.process_transaction(&tx).unwrap_err();
10628
+ if formalize_loaded_transaction_data_size {
10629
+ assert_eq!(err, TransactionError::ProgramAccountNotFound);
10630
+ } else {
10631
+ assert_eq!(
10632
+ err,
10633
+ TransactionError::InstructionError(0, InstructionError::UnsupportedProgramId)
10634
+ );
10635
+ }
10608
10636
}
10609
10637
10610
10638
#[test]
@@ -12150,8 +12178,11 @@ fn test_is_in_slot_hashes_history() {
12150
12178
assert!(!new_bank.is_in_slot_hashes_history(&0));
12151
12179
}
12152
12180
12153
- #[ test]
12154
- fn test_feature_activation_loaded_programs_cache_preparation_phase ( ) {
12181
+ #[test_case(false; "informal_loaded_size")]
12182
+ #[test_case(true; "simd186_loaded_size")]
12183
+ fn test_feature_activation_loaded_programs_cache_preparation_phase(
12184
+ formalize_loaded_transaction_data_size: bool,
12185
+ ) {
12155
12186
solana_logger::setup();
12156
12187
12157
12188
// Bank Setup
@@ -12160,6 +12191,9 @@ fn test_feature_activation_loaded_programs_cache_preparation_phase() {
12160
12191
let mut feature_set = FeatureSet::all_enabled();
12161
12192
feature_set.deactivate(&feature_set::disable_sbpf_v0_execution::id());
12162
12193
feature_set.deactivate(&feature_set::reenable_sbpf_v0_execution::id());
12194
+ if !formalize_loaded_transaction_data_size {
12195
+ feature_set.deactivate(&feature_set::formalize_loaded_transaction_data_size::id());
12196
+ }
12163
12197
bank.feature_set = Arc::new(feature_set);
12164
12198
let (root_bank, bank_forks) = bank.wrap_with_bank_forks_for_tests();
12165
12199
@@ -13316,8 +13350,9 @@ fn test_deploy_last_epoch_slot() {
13316
13350
assert_eq!(result_with_feature_enabled, Ok(()));
13317
13351
}
13318
13352
13319
- #[ test]
13320
- fn test_loader_v3_to_v4_migration ( ) {
13353
+ #[test_case(false; "informal_loaded_size")]
13354
+ #[test_case(true; "simd186_loaded_size")]
13355
+ fn test_loader_v3_to_v4_migration(formalize_loaded_transaction_data_size: bool) {
13321
13356
solana_logger::setup();
13322
13357
13323
13358
// Bank Setup
@@ -13328,6 +13363,9 @@ fn test_loader_v3_to_v4_migration() {
13328
13363
);
13329
13364
let mut bank = Bank::new_for_tests(&genesis_config);
13330
13365
bank.activate_feature(&feature_set::remove_accounts_executable_flag_checks::id());
13366
+ if formalize_loaded_transaction_data_size {
13367
+ bank.activate_feature(&feature_set::formalize_loaded_transaction_data_size::id());
13368
+ }
13331
13369
let (bank, bank_forks) = bank.wrap_with_bank_forks_for_tests();
13332
13370
let fee_calculator = genesis_config.fee_rate_governor.create_fee_calculator();
13333
13371
let mut next_slot = 1;
0 commit comments