fuels_test_helpers/
node_types.rs

1use std::{
2    net::{Ipv4Addr, SocketAddr},
3    path::PathBuf,
4    time::Duration,
5};
6
7pub use fuel_core_chain_config::{ChainConfig, StateConfig};
8
9#[derive(Clone, Debug)]
10pub enum Trigger {
11    Instant,
12    Never,
13    Interval { block_time: Duration },
14    Open { period: Duration },
15}
16
17#[cfg(feature = "fuel-core-lib")]
18impl From<Trigger> for fuel_core_poa::Trigger {
19    fn from(value: Trigger) -> Self {
20        match value {
21            Trigger::Instant => fuel_core_poa::Trigger::Instant,
22            Trigger::Never => fuel_core_poa::Trigger::Never,
23            Trigger::Interval { block_time } => fuel_core_poa::Trigger::Interval { block_time },
24            Trigger::Open { period } => fuel_core_poa::Trigger::Open { period },
25        }
26    }
27}
28
29#[derive(Clone, Debug)]
30pub enum DbType {
31    InMemory,
32    RocksDb(Option<PathBuf>),
33}
34
35#[cfg(feature = "fuel-core-lib")]
36impl From<DbType> for fuel_core::service::DbType {
37    fn from(value: DbType) -> Self {
38        match value {
39            DbType::InMemory => fuel_core::service::DbType::InMemory,
40            DbType::RocksDb(..) => fuel_core::service::DbType::RocksDb,
41        }
42    }
43}
44
45#[derive(Clone, Debug)]
46pub struct NodeConfig {
47    pub addr: SocketAddr,
48    pub max_database_cache_size: Option<usize>,
49    pub database_type: DbType,
50    pub utxo_validation: bool,
51    pub historical_execution: bool,
52    pub debug: bool,
53    pub block_production: Trigger,
54    pub vm_backtrace: bool,
55    pub silent: bool,
56    pub starting_gas_price: u64,
57    pub graphql_request_body_bytes_limit: u64,
58}
59
60impl Default for NodeConfig {
61    fn default() -> Self {
62        Self {
63            addr: SocketAddr::new(Ipv4Addr::new(127, 0, 0, 1).into(), 0),
64            max_database_cache_size: None,
65            database_type: DbType::InMemory,
66            utxo_validation: true,
67            historical_execution: false,
68            debug: true,
69            block_production: Trigger::Instant,
70            vm_backtrace: false,
71            silent: true,
72            starting_gas_price: 1,
73            graphql_request_body_bytes_limit: u64::MAX,
74        }
75    }
76}