Skip to content

Commit 9893c8b

Browse files
author
Bengt Lofgren
committed
refactor to execute order
1 parent a49a756 commit 9893c8b

File tree

3 files changed

+52
-66
lines changed

3 files changed

+52
-66
lines changed

solana/modules/matching-engine-testing/tests/shimful/shims_execute_order.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use anchor_spl::token::spl_token;
77
use common::wormhole_cctp_solana::cctp::{
88
MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID,
99
};
10+
use matching_engine::accounts::CctpDepositForBurn;
1011
use matching_engine::fallback::execute_order::{ExecuteOrderCctpShim, ExecuteOrderShimAccounts};
1112
use solana_program_test::ProgramTestContext;
1213
use solana_sdk::{pubkey::Pubkey, signer::Signer, sysvar::SysvarId, transaction::Transaction};
@@ -257,6 +258,23 @@ pub struct CctpAccounts {
257258
pub message_transmitter_program: Pubkey,
258259
}
259260

261+
impl Into<CctpDepositForBurn> for CctpAccounts {
262+
fn into(self) -> CctpDepositForBurn {
263+
CctpDepositForBurn {
264+
mint: self.mint,
265+
local_token: self.local_token,
266+
token_messenger_minter_sender_authority: self.token_messenger_minter_sender_authority,
267+
message_transmitter_config: self.message_transmitter_config,
268+
token_messenger: self.token_messenger,
269+
remote_token_messenger: self.remote_token_messenger,
270+
token_minter: self.token_minter,
271+
token_messenger_minter_event_authority: self.token_messenger_minter_event_authority,
272+
message_transmitter_program: self.message_transmitter_program,
273+
token_messenger_minter_program: self.token_messenger_minter_program,
274+
}
275+
}
276+
}
277+
260278
pub fn create_cctp_accounts(
261279
current_state: &TestingEngineState,
262280
testing_context: &TestingContext,

solana/modules/matching-engine-testing/tests/shimless/execute_order.rs

Lines changed: 33 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use std::rc::Rc;
22

3-
use crate::testing_engine::config::{ExecuteOrderInstructionConfig, ExpectedError};
4-
use crate::testing_engine::setup::{TestingContext, TransferDirection};
5-
use crate::utils::account_fixtures::FixtureAccounts;
3+
use crate::shimful::shims_execute_order::create_cctp_accounts;
4+
use crate::testing_engine::config::{ExecuteOrderInstructionConfig, InstructionConfig};
5+
use crate::testing_engine::setup::TestingContext;
6+
use crate::testing_engine::state::TestingEngineState;
67
use crate::utils::auction::{AuctionAccounts, AuctionState};
78
use anchor_lang::prelude::*;
89
use anchor_lang::{InstructionData, ToAccountMetas};
9-
use common::wormhole_cctp_solana::cctp::{
10-
MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID,
11-
};
10+
1211
use matching_engine::accounts::{CctpDepositForBurn, WormholePublishMessage};
1312
use matching_engine::accounts::{
1413
ExecuteFastOrderCctp as ExecuteOrderShimlessAccounts, LiquidityLayerVaa, LiveRouterEndpoint,
@@ -28,12 +27,23 @@ pub struct ExecuteOrderShimlessFixture {
2827

2928
pub fn create_execute_order_shimless_accounts(
3029
testing_context: &TestingContext,
31-
fixture_accounts: &FixtureAccounts,
3230
auction_accounts: &AuctionAccounts,
3331
payer_signer: &Rc<Keypair>,
3432
auction_state: &AuctionState,
35-
executor_token: Pubkey,
33+
config: &ExecuteOrderInstructionConfig,
34+
current_state: &TestingEngineState,
3635
) -> ExecuteOrderShimlessAccounts {
36+
let executor_token = config
37+
.actor_enum
38+
.get_actor(&testing_context.testing_actors)
39+
.token_account_address(&config.token_enum)
40+
.unwrap_or_else(|| {
41+
auction_state
42+
.get_active_auction()
43+
.unwrap()
44+
.best_offer
45+
.offer_token
46+
});
3747
let active_auction_state = auction_state.get_active_auction().unwrap();
3848
let active_auction_address = active_auction_state.auction_address;
3949
let active_auction_custody_token = active_auction_state.auction_custody_token_address;
@@ -91,46 +101,8 @@ pub fn create_execute_order_shimless_accounts(
91101
clock: Clock::id(),
92102
rent: Rent::id(),
93103
};
94-
let token_messenger_minter_event_authority =
95-
Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0;
96-
let local_token = Pubkey::find_program_address(
97-
&[
98-
b"local_token",
99-
&testing_context.get_usdc_mint_address().to_bytes(),
100-
],
101-
&TOKEN_MESSENGER_MINTER_PROGRAM_ID,
102-
)
103-
.0;
104-
let token_messenger_minter_sender_authority =
105-
Pubkey::find_program_address(&[b"sender_authority"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0;
106-
let message_transmitter_config =
107-
Pubkey::find_program_address(&[b"message_transmitter"], &MESSAGE_TRANSMITTER_PROGRAM_ID).0;
108-
let token_messenger =
109-
Pubkey::find_program_address(&[b"token_messenger"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0;
110-
let remote_token_messenger = match testing_context.transfer_direction {
111-
TransferDirection::FromEthereumToArbitrum => {
112-
fixture_accounts.arbitrum_remote_token_messenger
113-
}
114-
TransferDirection::FromArbitrumToEthereum => {
115-
fixture_accounts.ethereum_remote_token_messenger
116-
}
117-
_ => panic!("Unsupported transfer direction"),
118-
};
119-
let token_minter =
120-
Pubkey::find_program_address(&[b"token_minter"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0;
121-
let cctp = CctpDepositForBurn {
122-
mint: testing_context.get_usdc_mint_address(),
123-
local_token,
124-
token_messenger_minter_sender_authority,
125-
message_transmitter_config,
126-
token_messenger,
127-
remote_token_messenger,
128-
token_minter,
129-
token_messenger_minter_event_authority,
130-
message_transmitter_program: MESSAGE_TRANSMITTER_PROGRAM_ID,
131-
token_messenger_minter_program: TOKEN_MESSENGER_MINTER_PROGRAM_ID,
132-
};
133104

105+
let cctp = create_cctp_deposit_for_burn(current_state, testing_context);
134106
let event_authority = Pubkey::find_program_address(
135107
&[EVENT_AUTHORITY_SEED],
136108
&testing_context.get_matching_engine_program_id(),
@@ -156,42 +128,30 @@ pub fn create_execute_order_shimless_accounts(
156128
pub async fn execute_order_shimless_test(
157129
testing_context: &TestingContext,
158130
test_context: &mut ProgramTestContext,
131+
current_state: &TestingEngineState,
159132
config: &ExecuteOrderInstructionConfig,
160133
auction_accounts: &AuctionAccounts,
161-
auction_state: &AuctionState,
162-
expected_error: Option<&ExpectedError>,
163134
) -> Option<ExecuteOrderShimlessFixture> {
164135
let payer_signer = config
165136
.payer_signer
166137
.clone()
167138
.unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone());
139+
let auction_state = current_state.auction_state();
140+
let expected_error = config.expected_error();
168141
let slots_to_fast_forward = config.fast_forward_slots;
169142
if slots_to_fast_forward > 0 {
170143
crate::testing_engine::engine::fast_forward_slots(test_context, slots_to_fast_forward)
171144
.await;
172145
}
173-
let executor_token = config
174-
.actor_enum
175-
.get_actor(&testing_context.testing_actors)
176-
.token_account_address(&config.token_enum)
177-
.unwrap_or_else(|| {
178-
auction_state
179-
.get_active_auction()
180-
.unwrap()
181-
.best_offer
182-
.offer_token
183-
});
184-
let fixture_accounts = testing_context
185-
.get_fixture_accounts()
186-
.expect("Fixture accounts not found");
146+
187147
let execute_order_accounts: ExecuteOrderShimlessAccounts =
188148
create_execute_order_shimless_accounts(
189149
testing_context,
190-
&fixture_accounts,
191150
auction_accounts,
192151
&payer_signer,
193152
auction_state,
194-
executor_token,
153+
config,
154+
current_state,
195155
);
196156
let execute_order_instruction_data = ExecuteOrderShimlessInstruction {}.data();
197157
let execute_order_ix = Instruction {
@@ -219,3 +179,11 @@ pub async fn execute_order_shimless_test(
219179
None
220180
}
221181
}
182+
183+
pub fn create_cctp_deposit_for_burn(
184+
current_state: &TestingEngineState,
185+
testing_context: &TestingContext,
186+
) -> CctpDepositForBurn {
187+
let cctp_accounts = create_cctp_accounts(current_state, testing_context);
188+
cctp_accounts.into()
189+
}

solana/modules/matching-engine-testing/tests/utils/token_account.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ pub fn read_keypair_from_file(filename: &str) -> Keypair {
153153
}
154154

155155
/// Enum representing the different SPL token types
156-
#[derive(Clone)]
156+
#[derive(Clone, Debug)]
157157
pub enum SplTokenEnum {
158158
Usdc,
159159
Usdt,

0 commit comments

Comments
 (0)