Skip to content

Commit fa56789

Browse files
authored
give result its own crate (#121)
1 parent 22e66d9 commit fa56789

File tree

16 files changed

+940
-826
lines changed

16 files changed

+940
-826
lines changed

Cargo.lock

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ members = [
77
"harness",
88
"keys",
99
"programs/*",
10+
"result",
1011
"test-programs/*",
1112
]
1213
resolver = "2"
@@ -38,6 +39,7 @@ mollusk-svm-fuzz-fixture-firedancer = { path = "fuzz/fixture-fd", version = "0.1
3839
mollusk-svm-fuzz-fs = { path = "fuzz/fs", version = "0.1.5" }
3940
mollusk-svm-keys = { path = "keys", version = "0.1.5" }
4041
mollusk-svm-programs-memo = { path = "programs/memo", version = "0.1.5" }
42+
mollusk-svm-result = { path = "result", version = "0.1.5" }
4143
mollusk-svm-programs-token = { path = "programs/token", version = "0.1.5" }
4244
num-format = "0.4.4"
4345
openssl = "0.10.72"

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ publish:
4949
"mollusk-svm-fuzz-fs" \
5050
"mollusk-svm-fuzz-fixture" \
5151
"mollusk-svm-fuzz-fixture-firedancer" \
52+
"mollusk-svm-result" \
5253
"mollusk-svm" \
5354
"mollusk-svm-bencher" \
5455
"mollusk-svm-programs-memo" \

harness/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ all-builtins = [
1717
fuzz = [
1818
"dep:mollusk-svm-fuzz-fixture",
1919
"dep:mollusk-svm-fuzz-fs",
20+
"mollusk-svm-result/fuzz",
2021
]
2122
fuzz-fd = [
2223
"dep:mollusk-svm-fuzz-fixture-firedancer",
@@ -34,6 +35,7 @@ mollusk-svm-fuzz-fixture = { workspace = true, optional = true }
3435
mollusk-svm-fuzz-fixture-firedancer = { workspace = true, optional = true }
3536
mollusk-svm-fuzz-fs = { workspace = true, optional = true }
3637
mollusk-svm-keys = { workspace = true }
38+
mollusk-svm-result = { workspace = true }
3739
solana-account = { workspace = true }
3840
solana-bpf-loader-program = { workspace = true }
3941
solana-clock = { workspace = true }

harness/src/fuzz/firedancer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use {
88
crate::{
99
compile_accounts::{compile_accounts, CompiledAccounts},
10-
result::InstructionResult,
1110
Mollusk, DEFAULT_LOADER_KEY,
1211
},
1312
agave_feature_set::FeatureSet,
@@ -20,6 +19,7 @@ use {
2019
metadata::Metadata as FuzzMetadata,
2120
Fixture as FuzzFixture,
2221
},
22+
mollusk_svm_result::InstructionResult,
2323
solana_account::Account,
2424
solana_compute_budget::compute_budget::ComputeBudget,
2525
solana_instruction::{error::InstructionError, AccountMeta, Instruction},

harness/src/fuzz/mod.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@ pub mod firedancer;
44
pub mod mollusk;
55

66
use {
7-
crate::{result::InstructionResult, Mollusk},
8-
mollusk_svm_fuzz_fs::FsHandler,
9-
solana_account::Account,
10-
solana_instruction::Instruction,
11-
solana_pubkey::Pubkey,
7+
crate::Mollusk, mollusk_svm_fuzz_fs::FsHandler, mollusk_svm_result::InstructionResult,
8+
solana_account::Account, solana_instruction::Instruction, solana_pubkey::Pubkey,
129
};
1310

1411
pub fn generate_fixtures_from_mollusk_test(

harness/src/fuzz/mollusk.rs

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,16 @@
55
//! Only available when the `fuzz` feature is enabled.
66
77
use {
8-
crate::{
9-
result::{InstructionResult, ProgramResult},
10-
sysvar::Sysvars,
11-
Mollusk,
12-
},
8+
crate::{sysvar::Sysvars, Mollusk},
139
agave_feature_set::FeatureSet,
1410
mollusk_svm_fuzz_fixture::{
1511
context::Context as FuzzContext, effects::Effects as FuzzEffects,
1612
sysvars::Sysvars as FuzzSysvars, Fixture as FuzzFixture,
1713
},
14+
mollusk_svm_result::InstructionResult,
1815
solana_account::Account,
1916
solana_compute_budget::compute_budget::ComputeBudget,
20-
solana_instruction::{error::InstructionError, Instruction},
17+
solana_instruction::Instruction,
2118
solana_pubkey::Pubkey,
2219
solana_slot_hashes::SlotHashes,
2320
solana_sysvar::last_restart_slot::LastRestartSlot,
@@ -52,57 +49,6 @@ impl From<&FuzzSysvars> for Sysvars {
5249
}
5350
}
5451

55-
impl From<&InstructionResult> for FuzzEffects {
56-
fn from(input: &InstructionResult) -> Self {
57-
let compute_units_consumed = input.compute_units_consumed;
58-
let execution_time = input.execution_time;
59-
let return_data = input.return_data.clone();
60-
61-
let program_result = match &input.program_result {
62-
ProgramResult::Success => 0,
63-
ProgramResult::Failure(e) => u64::from(e.clone()),
64-
ProgramResult::UnknownError(_) => u64::MAX, //TODO
65-
};
66-
67-
let resulting_accounts = input.resulting_accounts.clone();
68-
69-
Self {
70-
compute_units_consumed,
71-
execution_time,
72-
program_result,
73-
return_data,
74-
resulting_accounts,
75-
}
76-
}
77-
}
78-
79-
impl From<&FuzzEffects> for InstructionResult {
80-
fn from(input: &FuzzEffects) -> Self {
81-
let compute_units_consumed = input.compute_units_consumed;
82-
let execution_time = input.execution_time;
83-
let return_data = input.return_data.clone();
84-
85-
let raw_result = if input.program_result == 0 {
86-
Ok(())
87-
} else {
88-
Err(InstructionError::from(input.program_result))
89-
};
90-
91-
let program_result = raw_result.clone().into();
92-
93-
let resulting_accounts = input.resulting_accounts.clone();
94-
95-
Self {
96-
compute_units_consumed,
97-
execution_time,
98-
program_result,
99-
raw_result,
100-
return_data,
101-
resulting_accounts,
102-
}
103-
}
104-
}
105-
10652
pub struct ParsedFixtureContext {
10753
pub accounts: Vec<(Pubkey, Account)>,
10854
pub compute_budget: ComputeBudget,

harness/src/lib.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -445,22 +445,21 @@ pub mod file;
445445
#[cfg(any(feature = "fuzz", feature = "fuzz-fd"))]
446446
pub mod fuzz;
447447
pub mod program;
448-
pub mod result;
449448
pub mod sysvar;
450449

450+
// Re-export result module from mollusk-svm-result crate
451+
pub use mollusk_svm_result as result;
451452
#[cfg(any(feature = "fuzz", feature = "fuzz-fd"))]
452-
use result::Compare;
453+
use mollusk_svm_result::Compare;
453454
use {
454455
crate::{
455-
account_store::AccountStore,
456-
compile_accounts::CompiledAccounts,
457-
program::ProgramCache,
458-
result::{Check, CheckContext, Config, ContextResult, InstructionResult},
456+
account_store::AccountStore, compile_accounts::CompiledAccounts, program::ProgramCache,
459457
sysvar::Sysvars,
460458
},
461459
agave_feature_set::FeatureSet,
462460
agave_precompiles::get_precompile,
463461
mollusk_svm_error::error::{MolluskError, MolluskPanic},
462+
mollusk_svm_result::{Check, CheckContext, Config, ContextResult, InstructionResult},
464463
solana_account::Account,
465464
solana_compute_budget::compute_budget::ComputeBudget,
466465
solana_fee_structure::FeeStructure,

0 commit comments

Comments
 (0)