Skip to content

Commit

Permalink
✅ udpate fuzz_example3 structure
Browse files Browse the repository at this point in the history
  • Loading branch information
lukacan authored and lukacan committed Jan 15, 2024
1 parent a9b1d94 commit 35e314a
Show file tree
Hide file tree
Showing 13 changed files with 109 additions and 74 deletions.
2 changes: 1 addition & 1 deletion examples/fuzz_example3/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ target
node_modules
test-ledger
.yarn
trdelnik-tests/hfuzz_target
trdelnik-tests/fuzz_tests/fuzzing/hfuzz_target
95 changes: 45 additions & 50 deletions examples/fuzz_example3/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/fuzz_example3/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = ["programs/*", "trdelnik-tests"]
members = ["programs/*", "trdelnik-tests/poc_tests", "trdelnik-tests/fuzz_tests"]
[profile.release]
overflow-checks = true
lto = "fat"
Expand Down
25 changes: 25 additions & 0 deletions examples/fuzz_example3/trdelnik-tests/fuzz_tests/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[[bin]]
name = "fuzz_0"
path = "fuzz_0/test_fuzz.rs"

[package]
name = "fuzz_tests"
version = "0.1.0"
description = "Created with Trdelnik"
edition = "2021"

[dependencies]
honggfuzz = "0.5.55"
arbitrary = "1.3.0"
assert_matches = "1.4.0"
anchor-spl = "0.28.0"

[dependencies.trdelnik-client]
path = "../../../../crates/client"
features = ["fuzzing"]

[dependencies.program_client]
path = "../../.program_client"

[dependencies.fuzz_example3]
path = "../../programs/fuzz_example3"
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use anchor_spl::token::{Mint, Token, TokenAccount};
use anchor_spl::token::{TokenAccount, Token, Mint};
use fuzz_example3::state::Escrow;

use trdelnik_client::anchor_lang::solana_program::instruction::AccountMeta;
use trdelnik_client::anchor_lang::{self, prelude::*};
use trdelnik_client::fuzzing::{get_account_infos_option, FuzzingError};
Expand Down Expand Up @@ -36,45 +35,45 @@ impl<'info> InitVestingSnapshot<'info> {
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::signer::Signer::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let sender_token_account: Option<anchor_lang::accounts::account::Account<TokenAccount>> =
accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let escrow: Option<anchor_lang::accounts::account::Account<Escrow>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let escrow_token_account: Option<anchor_lang::accounts::account::Account<TokenAccount>> =
accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let mint: Option<anchor_lang::accounts::account::Account<Mint>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let token_program: Option<anchor_lang::accounts::program::Program<Token>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::program::Program::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let system_program: Option<anchor_lang::accounts::program::Program<System>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::program::Program::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
Ok(Self {
sender,
sender_token_account,
Expand All @@ -99,27 +98,27 @@ impl<'info> WithdrawUnlockedSnapshot<'info> {
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::signer::Signer::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let recipient_token_account: Option<anchor_lang::accounts::account::Account<TokenAccount>> =
accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let escrow: Option<anchor_lang::accounts::account::Account<Escrow>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let escrow_token_account: Option<anchor_lang::accounts::account::Account<TokenAccount>> =
accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let escrow_pda_authority = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?;
Expand All @@ -128,19 +127,19 @@ impl<'info> WithdrawUnlockedSnapshot<'info> {
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::account::Account::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let token_program: Option<anchor_lang::accounts::program::Program<Token>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::program::Program::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
let system_program: Option<anchor_lang::accounts::program::Program<System>> = accounts_iter
.next()
.ok_or(FuzzingError::NotEnoughAccounts)?
.map(|acc| anchor_lang::accounts::program::Program::try_from(&acc))
.transpose()
.map_err(|_| FuzzingError::CannotDeserializeAccount)?;
.unwrap_or(None);
Ok(Self {
recipient,
recipient_token_account,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
use fuzz_example3::entry;
use fuzz_instructions::fuzz_example3_fuzz_instructions::{FuzzInstruction, InitVesting};
use program_client::fuzz_example3_instruction::*;
use trdelnik_client::{fuzz_trd, fuzzing::*};
use trdelnik_tests::fuzz_instructions::fuzz_example3_fuzz_instructions::{
FuzzInstruction, InitVesting,
};
mod accounts_snapshots;
mod fuzz_instructions;

const PROGRAM_NAME: &str = "fuzz_example3";

struct MyFuzzData;

// impl FuzzDataBuilder<FuzzInstruction> for MyFuzzData {}
impl FuzzDataBuilder<FuzzInstruction> for MyFuzzData {
fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result<Vec<FuzzInstruction>> {
let init_ix = FuzzInstruction::InitVesting(InitVesting::arbitrary(u)?);
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
19 changes: 19 additions & 0 deletions examples/fuzz_example3/trdelnik-tests/poc_tests/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[package]
name = "poc_tests"
version = "0.1.0"
description = "Created with Trdelnik"
edition = "2021"
[dev-dependencies.trdelnik-client]
path = "../../../../crates/client"


[dev-dependencies.program_client]
path = "../../.program_client"

[dependencies]
assert_matches = "1.4.0"
fehler = "1.0.0"
rstest = "0.12.0"

[dependencies.fuzz_example3]
path = "../../programs/fuzz_example3"
2 changes: 0 additions & 2 deletions examples/fuzz_example3/trdelnik-tests/src/lib.rs

This file was deleted.

0 comments on commit 35e314a

Please sign in to comment.