Skip to content

Commit a4eac1f

Browse files
committed
Adjust tests with AccountFetcher and async new()
1 parent fa82f6f commit a4eac1f

File tree

5 files changed

+101
-72
lines changed

5 files changed

+101
-72
lines changed

magicblock-committor-service/src/tasks/account_fetcher.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ use solana_pubkey::Pubkey;
55
use solana_rpc_client::nonblocking::rpc_client::RpcClient;
66
use solana_sdk::commitment_config::CommitmentConfig;
77

8+
//
9+
// AccountFetcher is used by CommitTask
10+
//
811
pub struct AccountFetcher {
912
rpc_client: RpcClient,
1013
}

magicblock-committor-service/src/tasks/mod.rs

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use thiserror::Error;
2424

2525
use crate::tasks::visitor::Visitor;
2626

27-
use self::account_fetcher::AccountFetcher;
27+
use account_fetcher::*;
2828

2929
pub mod args_task;
3030
pub mod buffer_task;
@@ -34,7 +34,7 @@ pub(crate) mod task_visitors;
3434
pub mod utils;
3535
pub mod visitor;
3636

37-
mod account_fetcher;
37+
pub mod account_fetcher;
3838

3939
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4040
pub enum TaskType {
@@ -470,51 +470,57 @@ mod serialization_safety_test {
470470
}
471471

472472
// Test BufferTask variants
473-
#[test]
474-
fn test_buffer_task_instruction_serialization() {
473+
#[tokio::test]
474+
async fn test_buffer_task_instruction_serialization() {
475475
let validator = Pubkey::new_unique();
476476

477-
let buffer_task = BufferTask::new_preparation_required(
478-
BufferTaskType::Commit(CommitTask::new(
479-
456,
480-
false,
481-
CommittedAccount {
482-
pubkey: Pubkey::new_unique(),
483-
account: Account {
484-
lamports: 2000,
485-
data: vec![7, 8, 9],
486-
owner: Pubkey::new_unique(),
487-
executable: false,
488-
rent_epoch: 0,
477+
let buffer_task =
478+
BufferTask::new_preparation_required(BufferTaskType::Commit(
479+
CommitTask::new(
480+
456,
481+
false,
482+
CommittedAccount {
483+
pubkey: Pubkey::new_unique(),
484+
account: Account {
485+
lamports: 2000,
486+
data: vec![7, 8, 9],
487+
owner: Pubkey::new_unique(),
488+
executable: false,
489+
rent_epoch: 0,
490+
},
489491
},
490-
},
491-
)),
492-
);
492+
AccountFetcher::new(),
493+
)
494+
.await,
495+
));
493496
assert_serializable(&buffer_task.instruction(&validator));
494497
}
495498

496499
// Test preparation instructions
497-
#[test]
498-
fn test_preparation_instructions_serialization() {
500+
#[tokio::test]
501+
async fn test_preparation_instructions_serialization() {
499502
let authority = Pubkey::new_unique();
500503

501504
// Test BufferTask preparation
502-
let buffer_task = BufferTask::new_preparation_required(
503-
BufferTaskType::Commit(CommitTask::new(
504-
789,
505-
true,
506-
CommittedAccount {
507-
pubkey: Pubkey::new_unique(),
508-
account: Account {
509-
lamports: 3000,
510-
data: vec![0; 1024], // Larger data to test chunking
511-
owner: Pubkey::new_unique(),
512-
executable: false,
513-
rent_epoch: 0,
505+
let buffer_task =
506+
BufferTask::new_preparation_required(BufferTaskType::Commit(
507+
CommitTask::new(
508+
789,
509+
true,
510+
CommittedAccount {
511+
pubkey: Pubkey::new_unique(),
512+
account: Account {
513+
lamports: 3000,
514+
data: vec![0; 1024], // Larger data to test chunking
515+
owner: Pubkey::new_unique(),
516+
executable: false,
517+
rent_epoch: 0,
518+
},
514519
},
515-
},
516-
)),
517-
);
520+
AccountFetcher::new(),
521+
)
522+
.await,
523+
));
518524

519525
let PreparationState::Required(preparation_task) =
520526
buffer_task.preparation_state()

test-integration/test-committor-service/tests/common.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use magicblock_committor_service::{
1414
},
1515
IntentExecutorImpl,
1616
},
17-
tasks::CommitTask,
17+
tasks::{account_fetcher::AccountFetcher, CommitTask},
1818
transaction_preparator::{
1919
delivery_preparator::DeliveryPreparator, TransactionPreparatorImpl,
2020
},
@@ -147,7 +147,7 @@ pub fn generate_random_bytes(length: usize) -> Vec<u8> {
147147
}
148148

149149
#[allow(dead_code)]
150-
pub fn create_commit_task(data: &[u8]) -> CommitTask {
150+
pub async fn create_commit_task(data: &[u8]) -> CommitTask {
151151
static COMMIT_ID: AtomicU64 = AtomicU64::new(0);
152152
CommitTask::new(
153153
COMMIT_ID.fetch_add(1, Ordering::Relaxed),
@@ -162,7 +162,9 @@ pub fn create_commit_task(data: &[u8]) -> CommitTask {
162162
rent_epoch: 0,
163163
},
164164
},
165+
AccountFetcher::new(),
165166
)
167+
.await
166168
}
167169

168170
#[allow(dead_code)]

test-integration/test-committor-service/tests/test_delivery_preparator.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use borsh::BorshDeserialize;
2+
use futures::future::join_all;
23
use magicblock_committor_program::Chunks;
34
use magicblock_committor_service::{
45
persist::IntentPersisterImpl,
@@ -23,7 +24,7 @@ async fn test_prepare_10kb_buffer() {
2324
let preparator = fixture.create_delivery_preparator();
2425

2526
let data = generate_random_bytes(10 * 1024);
26-
let buffer_task = BufferTaskType::Commit(create_commit_task(&data));
27+
let buffer_task = BufferTaskType::Commit(create_commit_task(&data).await);
2728
let mut strategy = TransactionStrategy {
2829
optimized_tasks: vec![Box::new(BufferTask::new_preparation_required(
2930
buffer_task,
@@ -90,15 +91,13 @@ async fn test_prepare_multiple_buffers() {
9091
generate_random_bytes(10),
9192
generate_random_bytes(500 * 1024),
9293
];
93-
let buffer_tasks = datas
94-
.iter()
95-
.map(|data| {
96-
let task =
97-
BufferTaskType::Commit(create_commit_task(data.as_slice()));
98-
Box::new(BufferTask::new_preparation_required(task))
99-
as Box<dyn BaseTask>
100-
})
101-
.collect();
94+
let buffer_tasks = join_all(datas.iter().map(|data| async {
95+
let task =
96+
BufferTaskType::Commit(create_commit_task(data.as_slice()).await);
97+
Box::new(BufferTask::new_preparation_required(task))
98+
as Box<dyn BaseTask>
99+
}))
100+
.await;
102101
let mut strategy = TransactionStrategy {
103102
optimized_tasks: buffer_tasks,
104103
lookup_tables_keys: vec![],
@@ -169,14 +168,12 @@ async fn test_lookup_tables() {
169168
generate_random_bytes(20),
170169
generate_random_bytes(30),
171170
];
172-
let tasks = datas
173-
.iter()
174-
.map(|data| {
175-
let task =
176-
ArgsTaskType::Commit(create_commit_task(data.as_slice()));
177-
Box::<ArgsTask>::new(task.into()) as Box<dyn BaseTask>
178-
})
179-
.collect::<Vec<_>>();
171+
let tasks = join_all(datas.iter().map(|data| async {
172+
let task =
173+
ArgsTaskType::Commit(create_commit_task(data.as_slice()).await);
174+
Box::<ArgsTask>::new(task.into()) as Box<dyn BaseTask>
175+
}))
176+
.await;
180177

181178
let lookup_tables_keys = TaskStrategist::collect_lookup_table_keys(
182179
&fixture.authority.pubkey(),
@@ -218,7 +215,7 @@ async fn test_already_initialized_error_handled() {
218215
let preparator = fixture.create_delivery_preparator();
219216

220217
let data = generate_random_bytes(10 * 1024);
221-
let mut task = create_commit_task(&data);
218+
let mut task = create_commit_task(&data).await;
222219
let buffer_task = BufferTaskType::Commit(task.clone());
223220
let mut strategy = TransactionStrategy {
224221
optimized_tasks: vec![Box::new(BufferTask::new_preparation_required(
@@ -309,9 +306,9 @@ async fn test_prepare_cleanup_and_reprepare_mixed_tasks() {
309306
let buf_b_data = generate_random_bytes(64 * 1024 + 3);
310307

311308
// Keep these around to modify data later (same commit IDs, different data)
312-
let mut commit_args = create_commit_task(&args_data);
313-
let mut commit_a = create_commit_task(&buf_a_data);
314-
let mut commit_b = create_commit_task(&buf_b_data);
309+
let mut commit_args = create_commit_task(&args_data).await;
310+
let mut commit_a = create_commit_task(&buf_a_data).await;
311+
let mut commit_b = create_commit_task(&buf_b_data).await;
315312

316313
let mut strategy = TransactionStrategy {
317314
optimized_tasks: vec![

test-integration/test-committor-service/tests/test_transaction_preparator.rs

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use magicblock_committor_program::Chunks;
33
use magicblock_committor_service::{
44
persist::IntentPersisterImpl,
55
tasks::{
6+
account_fetcher::AccountFetcher,
67
args_task::{ArgsTask, ArgsTaskType},
78
buffer_task::{BufferTask, BufferTaskType},
89
task_strategist::{TaskStrategist, TransactionStrategy},
@@ -35,11 +36,15 @@ async fn test_prepare_commit_tx_with_single_account() {
3536
let committed_account = create_committed_account(&account_data);
3637

3738
let tasks = vec![
38-
Box::new(ArgsTask::new(ArgsTaskType::Commit(CommitTask::new(
39-
1,
40-
true,
41-
committed_account.clone(),
42-
)))) as Box<dyn BaseTask>,
39+
Box::new(ArgsTask::new(ArgsTaskType::Commit(
40+
CommitTask::new(
41+
1,
42+
true,
43+
committed_account.clone(),
44+
AccountFetcher::new(),
45+
)
46+
.await,
47+
))) as Box<dyn BaseTask>,
4348
Box::new(ArgsTask::new(ArgsTaskType::Finalize(FinalizeTask {
4449
delegated_account: committed_account.pubkey,
4550
}))),
@@ -91,16 +96,26 @@ async fn test_prepare_commit_tx_with_multiple_accounts() {
9196

9297
let buffer_commit_task =
9398
BufferTask::new_preparation_required(BufferTaskType::Commit(
94-
CommitTask::new(1, true, committed_account2.clone()),
99+
CommitTask::new(
100+
1,
101+
true,
102+
committed_account2.clone(),
103+
AccountFetcher::new(),
104+
)
105+
.await,
95106
));
96107
// Create test data
97108
let tasks = vec![
98109
// account 1
99-
Box::new(ArgsTask::new(ArgsTaskType::Commit(CommitTask::new(
100-
1,
101-
true,
102-
committed_account1.clone(),
103-
)))) as Box<dyn BaseTask>,
110+
Box::new(ArgsTask::new(ArgsTaskType::Commit(
111+
CommitTask::new(
112+
1,
113+
true,
114+
committed_account1.clone(),
115+
AccountFetcher::new(),
116+
)
117+
.await,
118+
))) as Box<dyn BaseTask>,
104119
// account 2
105120
Box::new(buffer_commit_task),
106121
// finalize account 1
@@ -185,7 +200,13 @@ async fn test_prepare_commit_tx_with_base_actions() {
185200

186201
let buffer_commit_task =
187202
BufferTask::new_preparation_required(BufferTaskType::Commit(
188-
CommitTask::new(1, true, committed_account.clone()),
203+
CommitTask::new(
204+
1,
205+
true,
206+
committed_account.clone(),
207+
AccountFetcher::new(),
208+
)
209+
.await,
189210
));
190211
let tasks = vec![
191212
// commit account

0 commit comments

Comments
 (0)