light_program_test/program_test/
config.rs1use account_compression::{
2 AddressMerkleTreeConfig, AddressQueueConfig, NullifierQueueConfig, StateMerkleTreeConfig,
3};
4use light_batched_merkle_tree::{
5 initialize_address_tree::InitAddressTreeAccountsInstructionData,
6 initialize_state_tree::InitStateTreeAccountsInstructionData,
7};
8use light_prover_client::prover::ProverConfig;
9use light_registry::protocol_config::state::ProtocolConfig;
10use solana_sdk::pubkey::Pubkey;
11
12#[derive(Debug, Clone)]
13pub struct ProgramTestConfig {
14 pub additional_programs: Option<Vec<(&'static str, Pubkey)>>,
15 pub protocol_config: ProtocolConfig,
16 pub register_forester_and_advance_to_active_phase: bool,
17 pub with_prover: bool,
18 pub prover_config: Option<ProverConfig>,
19 pub skip_register_programs: bool,
20 pub skip_v1_trees: bool,
21 pub skip_second_v1_tree: bool,
22 pub v1_state_tree_config: StateMerkleTreeConfig,
23 pub v1_nullifier_queue_config: NullifierQueueConfig,
24 pub v1_address_tree_config: AddressMerkleTreeConfig,
25 pub v1_address_queue_config: AddressQueueConfig,
26 pub v2_state_tree_config: Option<InitStateTreeAccountsInstructionData>,
27 pub v2_address_tree_config: Option<InitAddressTreeAccountsInstructionData>,
28 pub skip_protocol_init: bool,
29 pub log_failed_tx: bool,
30 pub no_logs: bool,
31 pub skip_startup_logs: bool,
32}
33
34impl ProgramTestConfig {
35 pub fn new(
36 with_prover: bool,
37 additional_programs: Option<Vec<(&'static str, Pubkey)>>,
38 ) -> Self {
39 Self {
40 additional_programs,
41 with_prover,
42 ..Default::default()
43 }
44 }
45
46 #[cfg(feature = "v2")]
47 pub fn new_v2(
48 with_prover: bool,
49 additional_programs: Option<Vec<(&'static str, Pubkey)>>,
50 ) -> Self {
51 let mut res = Self::default_with_batched_trees(with_prover);
52 res.additional_programs = additional_programs;
53
54 res
55 }
56
57 #[cfg(feature = "v2")]
58 pub fn default_with_batched_trees(with_prover: bool) -> Self {
59 Self {
60 additional_programs: None,
61 prover_config: Some(ProverConfig::default()),
62 with_prover,
63 v2_state_tree_config: Some(InitStateTreeAccountsInstructionData::test_default()),
64 v2_address_tree_config: Some(InitAddressTreeAccountsInstructionData::test_default()),
65 ..Default::default()
66 }
67 }
68
69 #[cfg(feature = "devenv")]
70 pub fn default_test_forester(with_prover: bool) -> Self {
71 Self {
72 additional_programs: None,
73 with_prover,
74 v2_state_tree_config: Some(InitStateTreeAccountsInstructionData::test_default()),
75 v2_address_tree_config: Some(InitAddressTreeAccountsInstructionData::test_default()),
76 prover_config: Some(ProverConfig::default()),
77 ..Default::default()
78 }
79 }
80
81 }
95
96impl Default for ProgramTestConfig {
97 fn default() -> Self {
98 Self {
99 additional_programs: None,
100 protocol_config: ProtocolConfig {
101 active_phase_length: 1_000_000_000,
103 slot_length: 1_000_000_000 - 1,
104 genesis_slot: 0,
105 registration_phase_length: 2,
106 ..Default::default()
107 },
108 register_forester_and_advance_to_active_phase: true,
109 with_prover: true,
110 prover_config: None,
111 skip_second_v1_tree: false,
112 skip_register_programs: false,
113 v1_state_tree_config: StateMerkleTreeConfig::default(),
114 v1_address_tree_config: AddressMerkleTreeConfig::default(),
115 v1_address_queue_config: AddressQueueConfig::default(),
116 v1_nullifier_queue_config: NullifierQueueConfig::default(),
117 v2_state_tree_config: None,
118 v2_address_tree_config: None,
119 skip_protocol_init: false,
120 skip_v1_trees: false,
121 log_failed_tx: true,
122 no_logs: false,
123 skip_startup_logs: true,
124 }
125 }
126}