diff --git a/logos/examples/doc-snippets/src/chaos_workloads_random_restart.rs b/logos/examples/doc-snippets/src/chaos_workloads_random_restart.rs index d351c20..78ff50a 100644 --- a/logos/examples/doc-snippets/src/chaos_workloads_random_restart.rs +++ b/logos/examples/doc-snippets/src/chaos_workloads_random_restart.rs @@ -7,7 +7,7 @@ use crate::SnippetResult; pub fn random_restart_plan() -> SnippetResult> { ScenarioBuilder::topology_with(|t| t.network_star().nodes(2)) - .enable_node_control() + .with_node_control() .with_workload(RandomRestartWorkload::new( Duration::from_secs(45), // min delay Duration::from_secs(75), // max delay diff --git a/logos/examples/doc-snippets/src/dsl_cheat_sheet_workload_chaos.rs b/logos/examples/doc-snippets/src/dsl_cheat_sheet_workload_chaos.rs index fa3d963..58b2172 100644 --- a/logos/examples/doc-snippets/src/dsl_cheat_sheet_workload_chaos.rs +++ b/logos/examples/doc-snippets/src/dsl_cheat_sheet_workload_chaos.rs @@ -8,7 +8,7 @@ use crate::SnippetResult; pub fn chaos_plan() -> SnippetResult> { ScenarioBuilder::topology_with(|t| t.network_star().nodes(3)) - .enable_node_control() // Enable node control capability + .with_node_control() // Enable node control capability .chaos_with(|c| { c.restart() // Random restart chaos .min_delay(Duration::from_secs(30)) // Min time between restarts diff --git a/logos/examples/doc-snippets/src/examples_advanced_aggressive_chaos_test.rs b/logos/examples/doc-snippets/src/examples_advanced_aggressive_chaos_test.rs index bb9e927..b3f18a3 100644 --- a/logos/examples/doc-snippets/src/examples_advanced_aggressive_chaos_test.rs +++ b/logos/examples/doc-snippets/src/examples_advanced_aggressive_chaos_test.rs @@ -7,7 +7,7 @@ use testing_framework_workflows::{ChaosBuilderExt, ScenarioBuilderExt}; pub async fn aggressive_chaos_test() -> Result<()> { let mut plan = ScenarioBuilder::topology_with(|t| t.network_star().nodes(4)) - .enable_node_control() + .with_node_control() .wallets(50) .transactions_with(|txs| txs.rate(10).users(20)) .chaos_with(|c| { diff --git a/logos/examples/doc-snippets/src/examples_chaos_resilience.rs b/logos/examples/doc-snippets/src/examples_chaos_resilience.rs index 7545260..ba8fc49 100644 --- a/logos/examples/doc-snippets/src/examples_chaos_resilience.rs +++ b/logos/examples/doc-snippets/src/examples_chaos_resilience.rs @@ -7,7 +7,7 @@ use testing_framework_workflows::{ChaosBuilderExt, ScenarioBuilderExt}; pub async fn chaos_resilience() -> Result<()> { let mut plan = ScenarioBuilder::topology_with(|t| t.network_star().nodes(4)) - .enable_node_control() + .with_node_control() .wallets(20) .transactions_with(|txs| txs.rate(3).users(10)) .chaos_with(|c| { diff --git a/logos/examples/doc-snippets/src/testing_philosophy_determinism_first.rs b/logos/examples/doc-snippets/src/testing_philosophy_determinism_first.rs index 160db8c..1053c08 100644 --- a/logos/examples/doc-snippets/src/testing_philosophy_determinism_first.rs +++ b/logos/examples/doc-snippets/src/testing_philosophy_determinism_first.rs @@ -16,7 +16,7 @@ pub fn determinism_first() -> SnippetResult<()> { // Separate: chaos test (introduces randomness) let _chaos_plan = ScenarioBuilder::topology_with(|t| t.network_star().nodes(3)) - .enable_node_control() + .with_node_control() .chaos_with(|c| { c.restart() .min_delay(Duration::from_secs(30)) diff --git a/logos/examples/src/bin/compose_runner.rs b/logos/examples/src/bin/compose_runner.rs index 25cecf5..2254ca8 100644 --- a/logos/examples/src/bin/compose_runner.rs +++ b/logos/examples/src/bin/compose_runner.rs @@ -41,7 +41,7 @@ async fn run_compose_case(nodes: usize, run_duration: Duration) -> Result<()> { t.with_network_layout(Libp2pNetworkLayout::Star) .with_node_count(nodes) }) - .enable_node_control() + .with_node_control() .with_run_duration(run_duration) .with_deployment_seed(seed) .initialize_wallet( diff --git a/logos/examples/src/bin/k8s_runner.rs b/logos/examples/src/bin/k8s_runner.rs index ff0e554..8e2dba6 100644 --- a/logos/examples/src/bin/k8s_runner.rs +++ b/logos/examples/src/bin/k8s_runner.rs @@ -37,7 +37,7 @@ async fn run_k8s_case(nodes: usize, run_duration: Duration) -> Result<()> { t.with_network_layout(Libp2pNetworkLayout::Star) .with_node_count(nodes) }) - .enable_observability() + .with_observability() .with_run_duration(run_duration) .with_deployment_seed(seed) .initialize_wallet( diff --git a/logos/examples/tests/dynamic_join.rs b/logos/examples/tests/dynamic_join.rs index ba88ee1..93a3f3c 100644 --- a/logos/examples/tests/dynamic_join.rs +++ b/logos/examples/tests/dynamic_join.rs @@ -115,7 +115,7 @@ async fn dynamic_join_reaches_consensus_liveness() -> Result<()> { t.with_network_layout(Libp2pNetworkLayout::Star) .with_node_count(2) }) - .enable_node_control() + .with_node_control() .with_workload(JoinNodeWorkload::new("joiner")) .with_expectation(lb_framework::workloads::ConsensusLiveness::::default()) .with_run_duration(Duration::from_secs(60)) @@ -135,7 +135,7 @@ async fn dynamic_join_with_peers_reaches_consensus_liveness() -> Result<()> { t.with_network_layout(Libp2pNetworkLayout::Star) .with_node_count(2) }) - .enable_node_control() + .with_node_control() .with_workload(JoinNodeWithPeersWorkload::new( "joiner", vec!["node-0".to_string()], diff --git a/logos/examples/tests/local_deployer_restart.rs b/logos/examples/tests/local_deployer_restart.rs index 10649f3..078a1c0 100644 --- a/logos/examples/tests/local_deployer_restart.rs +++ b/logos/examples/tests/local_deployer_restart.rs @@ -12,7 +12,7 @@ use tracing_subscriber::fmt::try_init; async fn local_restart_node() -> Result<()> { let _ = try_init(); let mut scenario = ScenarioBuilder::deployment_with(|t| t.with_node_count(1)) - .enable_node_control() + .with_node_control() .with_run_duration(Duration::from_secs(1)) .build()?; diff --git a/logos/runtime/ext/src/scenario/mod.rs b/logos/runtime/ext/src/scenario/mod.rs index a25297d..50c976d 100644 --- a/logos/runtime/ext/src/scenario/mod.rs +++ b/logos/runtime/ext/src/scenario/mod.rs @@ -63,7 +63,7 @@ impl CoreBuilderExt for ScenarioBuilder { impl CoreBuilderExt for NodeControlScenarioBuilder { fn deployment_with(f: impl FnOnce(DeploymentBuilder) -> DeploymentBuilder) -> Self { - ScenarioBuilder::deployment_with(f).enable_node_control() + ScenarioBuilder::deployment_with(f).with_node_control() } fn with_wallet_config(self, wallet: WalletConfig) -> Self { @@ -82,7 +82,7 @@ impl CoreBuilderExt for NodeControlScenarioBuilder { impl CoreBuilderExt for ObservabilityScenarioBuilder { fn deployment_with(f: impl FnOnce(DeploymentBuilder) -> DeploymentBuilder) -> Self { - ScenarioBuilder::deployment_with(f).enable_observability() + ScenarioBuilder::deployment_with(f).with_observability() } fn with_wallet_config(self, wallet: WalletConfig) -> Self { diff --git a/testing-framework/core/src/scenario/builder_ext.rs b/testing-framework/core/src/scenario/builder_ext.rs index 9ffca85..b771c2e 100644 --- a/testing-framework/core/src/scenario/builder_ext.rs +++ b/testing-framework/core/src/scenario/builder_ext.rs @@ -95,7 +95,7 @@ impl ObservabilityBuilderExt for ScenarioBuilder { type Env = E; fn with_metrics_query_url(self, url: Url) -> ObservabilityScenarioBuilder { - self.with_observability(single_url_observability(Some(url), None, None)) + self.with_observability_capability(single_url_observability(Some(url), None, None)) } fn with_metrics_query_url_str(self, url: &str) -> ObservabilityScenarioBuilder { @@ -112,7 +112,7 @@ impl ObservabilityBuilderExt for ScenarioBuilder { } fn with_metrics_otlp_ingest_url(self, url: Url) -> ObservabilityScenarioBuilder { - self.with_observability(single_url_observability(None, Some(url), None)) + self.with_observability_capability(single_url_observability(None, Some(url), None)) } fn with_metrics_otlp_ingest_url_str(self, url: &str) -> ObservabilityScenarioBuilder { @@ -129,7 +129,7 @@ impl ObservabilityBuilderExt for ScenarioBuilder { } fn with_grafana_url(self, url: Url) -> ObservabilityScenarioBuilder { - self.with_observability(single_url_observability(None, None, Some(url))) + self.with_observability_capability(single_url_observability(None, None, Some(url))) } fn with_grafana_url_str(self, url: &str) -> ObservabilityScenarioBuilder { diff --git a/testing-framework/core/src/scenario/definition.rs b/testing-framework/core/src/scenario/definition.rs index ff69ac5..0aa2350 100644 --- a/testing-framework/core/src/scenario/definition.rs +++ b/testing-framework/core/src/scenario/definition.rs @@ -405,14 +405,20 @@ impl ScenarioBuilder { } #[must_use] - pub fn enable_node_control(self) -> NodeControlScenarioBuilder { + pub fn with_node_control(self) -> NodeControlScenarioBuilder { NodeControlScenarioBuilder { inner: self.inner.with_capabilities(NodeControlCapability), } } #[must_use] - pub fn enable_observability(self) -> ObservabilityScenarioBuilder { + #[doc(hidden)] + pub fn enable_node_control(self) -> NodeControlScenarioBuilder { + self.with_node_control() + } + + #[must_use] + pub fn with_observability(self) -> ObservabilityScenarioBuilder { ObservabilityScenarioBuilder { inner: self .inner @@ -420,11 +426,17 @@ impl ScenarioBuilder { } } + #[must_use] + #[doc(hidden)] + pub fn enable_observability(self) -> ObservabilityScenarioBuilder { + self.with_observability() + } + pub fn build(self) -> Result, ScenarioBuildError> { self.inner.build() } - pub(crate) fn with_observability( + pub(crate) fn with_observability_capability( self, observability: ObservabilityCapability, ) -> ObservabilityScenarioBuilder { @@ -842,14 +854,26 @@ where impl Builder { #[must_use] - pub fn enable_node_control(self) -> Builder { + pub fn with_node_control(self) -> Builder { self.with_capabilities(NodeControlCapability) } #[must_use] - pub fn enable_observability(self) -> Builder { + #[doc(hidden)] + pub fn enable_node_control(self) -> Builder { + self.with_node_control() + } + + #[must_use] + pub fn with_observability(self) -> Builder { self.with_capabilities(ObservabilityCapability::default()) } + + #[must_use] + #[doc(hidden)] + pub fn enable_observability(self) -> Builder { + self.with_observability() + } } fn initialize_components(