From 5058a2426b853ba3f1e3286ed18dbc6a73681f34 Mon Sep 17 00:00:00 2001 From: godmodegalactus Date: Wed, 16 Oct 2024 18:20:22 +0200 Subject: [PATCH] Fixing issue with exact out dumping --- bin/cli/src/main.rs | 5 +- lib/dex-infinity/Cargo.toml | 2 +- lib/router-lib/src/lib.rs | 4 +- .../src/test_tools/generate_dex_rpc_dump.rs | 52 +++++++------------ lib/router-test-lib/src/serialize.rs | 1 + programs/autobahn-executor/src/lib.rs | 3 +- .../tests/cases/test_swap_from_dump.rs | 15 +++--- 7 files changed, 37 insertions(+), 45 deletions(-) diff --git a/bin/cli/src/main.rs b/bin/cli/src/main.rs index 4195e0a..e059262 100644 --- a/bin/cli/src/main.rs +++ b/bin/cli/src/main.rs @@ -168,7 +168,10 @@ async fn main() -> Result<(), anyhow::Error> { } &CREATE_REFERRAL_LOG_DISCRIMINANT => { let event = bytemuck::from_bytes::(&decoded[8..]); - println!("CreateReferralLog - referer: {:?}, referee: {:?}, vault: {:?}, mint: {:?}", event.referer, event.referee, event.vault, event.mint); + println!( + "CreateReferralLog - referer: {:?}, referee: {:?}, vault: {:?}, mint: {:?}", + event.referer, event.referee, event.vault, event.mint + ); } _ => panic!("Unknown log discriminant"), } diff --git a/lib/dex-infinity/Cargo.toml b/lib/dex-infinity/Cargo.toml index c2f8afb..8440f33 100644 --- a/lib/dex-infinity/Cargo.toml +++ b/lib/dex-infinity/Cargo.toml @@ -24,7 +24,7 @@ async-trait = "0.1.79" chrono = "0.4.38" sha2 = "0.10.8" tracing = "0.1.40" -spl-associated-token-account = "1.0.5" +spl-associated-token-account = { version = "1.0.5", features = ["no-entrypoint"] } # infinity solana-readonly-account = { version = "1.1.0", features=["solana-sdk"] } diff --git a/lib/router-lib/src/lib.rs b/lib/router-lib/src/lib.rs index 03cc776..499a176 100644 --- a/lib/router-lib/src/lib.rs +++ b/lib/router-lib/src/lib.rs @@ -9,6 +9,6 @@ pub mod test_tools; pub mod utils; pub mod autobahn_executor { - use solana_sdk::declare_id; - declare_id!("AutobNFLMzX1rFCDgwWpwr3ztG5c1oDbSrGq7Jj2LgE"); + use solana_sdk::declare_id; + declare_id!("AutobNFLMzX1rFCDgwWpwr3ztG5c1oDbSrGq7Jj2LgE"); } diff --git a/lib/router-lib/src/test_tools/generate_dex_rpc_dump.rs b/lib/router-lib/src/test_tools/generate_dex_rpc_dump.rs index adc73a0..806622d 100644 --- a/lib/router-lib/src/test_tools/generate_dex_rpc_dump.rs +++ b/lib/router-lib/src/test_tools/generate_dex_rpc_dump.rs @@ -232,6 +232,25 @@ pub async fn run_dump_swap_ix_with_custom_amount( is_exact_out: false, }); + let chain_data_reader = chain_data.read().unwrap(); + for account in swap_ix.instruction.accounts { + if let Ok(acc) = chain_data_reader.account(&account.pubkey) { + dump.accounts.insert(account.pubkey, acc.account.clone()); + } else { + error!("Missing account (needed for swap) {}", account.pubkey); + } + } + let account = chain_data_reader + .account(&id.input_mint()) + .expect("missing mint"); + dump.accounts + .insert(id.input_mint(), account.account.clone()); + let account = chain_data_reader + .account(&id.input_mint()) + .expect("missing mint"); + dump.accounts + .insert(id.output_mint(), account.account.clone()); + // build exact out tests if dex.supports_exact_out(&id) { let Ok(mut quote_exact_out) = @@ -284,41 +303,8 @@ pub async fn run_dump_swap_ix_with_custom_amount( error!("Missing account (needed for swap) {}", account.pubkey); } } - - let account = chain_data_reader - .account(&id.input_mint()) - .expect("missing mint"); - dump.accounts - .insert(id.input_mint(), account.account.clone()); - - let account = chain_data_reader - .account(&id.input_mint()) - .expect("missing mint"); - dump.accounts - .insert(id.output_mint(), account.account.clone()); } } - - let chain_data_reader = chain_data.read().unwrap(); - for account in swap_ix.instruction.accounts { - if let Ok(acc) = chain_data_reader.account(&account.pubkey) { - dump.accounts.insert(account.pubkey, acc.account.clone()); - } else { - error!("Missing account (needed for swap) {}", account.pubkey); - } - } - - let account = chain_data_reader - .account(&id.input_mint()) - .expect("missing mint"); - dump.accounts - .insert(id.input_mint(), account.account.clone()); - - let account = chain_data_reader - .account(&id.input_mint()) - .expect("missing mint"); - dump.accounts - .insert(id.output_mint(), account.account.clone()); } println!("Error count: {}", errors); diff --git a/lib/router-test-lib/src/serialize.rs b/lib/router-test-lib/src/serialize.rs index d3fce08..0309151 100644 --- a/lib/router-test-lib/src/serialize.rs +++ b/lib/router-test-lib/src/serialize.rs @@ -12,6 +12,7 @@ where let mut writer = lz4::EncoderBuilder::new().build(file_writer).unwrap(); writer.write_all(serialized_data.as_slice()).unwrap(); writer.flush().unwrap(); + let _ = writer.finish(); } pub fn deserialize_from_file(path: &String) -> anyhow::Result diff --git a/programs/autobahn-executor/src/lib.rs b/programs/autobahn-executor/src/lib.rs index 20b9219..6b7fc0f 100644 --- a/programs/autobahn-executor/src/lib.rs +++ b/programs/autobahn-executor/src/lib.rs @@ -1,5 +1,5 @@ -mod instructions; pub mod create_pda; +mod instructions; pub mod logs; pub mod swap_ix; pub mod utils; @@ -14,7 +14,6 @@ use solana_program::program_error::ProgramError; use solana_program::program_pack::Pack; use solana_program::{account_info::AccountInfo, pubkey::Pubkey}; - #[cfg(not(feature = "no-entrypoint"))] use {default_env::default_env, solana_program::entrypoint, solana_security_txt::security_txt}; diff --git a/programs/simulator/tests/cases/test_swap_from_dump.rs b/programs/simulator/tests/cases/test_swap_from_dump.rs index 32c148e..5c3bfa2 100644 --- a/programs/simulator/tests/cases/test_swap_from_dump.rs +++ b/programs/simulator/tests/cases/test_swap_from_dump.rs @@ -370,15 +370,18 @@ async fn simulate_cu_usage( match sim { Ok(sim) => { log::debug!("{:?}", sim.result); - if sim.result.is_some() && sim.result.unwrap().is_ok() { - let simulation_details = sim.simulation_details.unwrap(); - let cus = simulation_details.units_consumed; + let simulation_details = sim.simulation_details.unwrap(); + let cus = simulation_details.units_consumed; + if sim.result.is_some() && sim.result.clone().unwrap().is_ok() { log::debug!("units consumed : {}", cus); - log::debug!("----logs"); + Some(cus) + } else if sim.result.is_some() && sim.result.clone().unwrap().is_err() { + println!("simluation failed : {:?}", sim.result.unwrap()); + println!("----logs"); for log in simulation_details.logs { - log::debug!("{log:?}"); + println!("{log:?}"); } - Some(cus) + None } else { None }