|
1 | 1 | use dlp::{ |
2 | 2 | args::{CallHandlerArgs, CommitDiffArgs, CommitStateArgs}, |
3 | 3 | compute_diff, |
| 4 | + instruction_builder::{ |
| 5 | + commit_diff_from_buffer_size_budget, commit_diff_size_budget, |
| 6 | + commit_size_budget, finalize_size_budget, undelegate_size_budget, |
| 7 | + }, |
| 8 | + AccountSizeClass, |
4 | 9 | }; |
5 | 10 | use magicblock_metrics::metrics::LabelValue; |
| 11 | +use rand::seq::IndexedRandom; |
6 | 12 | use solana_account::ReadableAccount; |
7 | 13 | use solana_instruction::{AccountMeta, Instruction}; |
8 | 14 | use solana_pubkey::Pubkey; |
@@ -177,6 +183,28 @@ impl BaseTask for ArgsTask { |
177 | 183 | } |
178 | 184 | } |
179 | 185 |
|
| 186 | + fn accounts_size_budget(&self) -> u32 { |
| 187 | + match &self.task_type { |
| 188 | + ArgsTaskType::Commit(task) => { |
| 189 | + commit_size_budget(AccountSizeClass::Dynamic( |
| 190 | + task.committed_account.account.data.len() as u32, |
| 191 | + )) |
| 192 | + } |
| 193 | + ArgsTaskType::CommitDiff(task) => { |
| 194 | + commit_diff_size_budget(AccountSizeClass::Dynamic( |
| 195 | + task.committed_account.account.data.len() as u32, |
| 196 | + )) |
| 197 | + } |
| 198 | + ArgsTaskType::BaseAction(_) => 0, |
| 199 | + ArgsTaskType::Undelegate(_) => { |
| 200 | + undelegate_size_budget(AccountSizeClass::Huge) |
| 201 | + } |
| 202 | + ArgsTaskType::Finalize(_) => { |
| 203 | + finalize_size_budget(AccountSizeClass::Huge) |
| 204 | + } |
| 205 | + } |
| 206 | + } |
| 207 | + |
180 | 208 | #[cfg(test)] |
181 | 209 | fn strategy(&self) -> TaskStrategy { |
182 | 210 | TaskStrategy::Args |
|
0 commit comments