zombienet_configuration/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
//! This crate is used to create type safe configuration for Zombienet SDK using nested builders.
//!
//!
//! The main entry point of this crate is the [`NetworkConfigBuilder`] which is used to build a full network configuration
//! but all inner builders are also exposed to allow more granular control over the configuration.
//!
//! **Note**: Not all options can be checked at compile time and some will be checked at runtime when spawning a
//! network (e.g.: supported args for a specific node version).
//!
//! # Example
//! ```
//! use zombienet_configuration::NetworkConfigBuilder;
//!
//! let simple_configuration = NetworkConfigBuilder::new()
//! .with_relaychain(|relaychain| {
//! relaychain
//! .with_chain("polkadot")
//! .with_random_nominators_count(10)
//! .with_default_resources(|resources| {
//! resources
//! .with_limit_cpu("1000m")
//! .with_request_memory("1Gi")
//! .with_request_cpu(100_000)
//! })
//! .with_node(|node| {
//! node.with_name("node")
//! .with_command("command")
//! .validator(true)
//! })
//! })
//! .with_parachain(|parachain| {
//! parachain
//! .with_id(1000)
//! .with_chain("myparachain1")
//! .with_initial_balance(100_000)
//! .with_default_image("myimage:version")
//! .with_collator(|collator| {
//! collator
//! .with_name("collator1")
//! .with_command("command1")
//! .validator(true)
//! })
//! })
//! .with_parachain(|parachain| {
//! parachain
//! .with_id(2000)
//! .with_chain("myparachain2")
//! .with_initial_balance(50_0000)
//! .with_collator(|collator| {
//! collator
//! .with_name("collator2")
//! .with_command("command2")
//! .validator(true)
//! })
//! })
//! .with_hrmp_channel(|hrmp_channel1| {
//! hrmp_channel1
//! .with_sender(1)
//! .with_recipient(2)
//! .with_max_capacity(200)
//! .with_max_message_size(500)
//! })
//! .with_hrmp_channel(|hrmp_channel2| {
//! hrmp_channel2
//! .with_sender(2)
//! .with_recipient(1)
//! .with_max_capacity(100)
//! .with_max_message_size(250)
//! })
//! .with_global_settings(|global_settings| {
//! global_settings
//! .with_network_spawn_timeout(1200)
//! .with_node_spawn_timeout(240)
//! })
//! .build();
//!
//! assert!(simple_configuration.is_ok())
//! ```
#![allow(clippy::expect_fun_call)]
mod global_settings;
mod hrmp_channel;
mod network;
mod parachain;
mod relaychain;
pub mod shared;
mod utils;
pub use global_settings::{GlobalSettings, GlobalSettingsBuilder};
pub use hrmp_channel::{HrmpChannelConfig, HrmpChannelConfigBuilder};
pub use network::{NetworkConfig, NetworkConfigBuilder};
pub use parachain::{
states as para_states, ParachainConfig, ParachainConfigBuilder, RegistrationStrategy,
};
pub use relaychain::{RelaychainConfig, RelaychainConfigBuilder};
// re-export shared
pub use shared::{node::NodeConfig, types};