mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-02-17 11:43:12 +00:00
91 lines
2.7 KiB
Rust
91 lines
2.7 KiB
Rust
use std::time::Duration;
|
|
|
|
use anyhow::{Result, anyhow};
|
|
use lb_framework::{
|
|
CoreBuilderExt as _, DeploymentBuilder, LbcLocalDeployer, ScenarioBuilder, TopologyConfig,
|
|
};
|
|
use testing_framework_core::scenario::Deployer;
|
|
use tracing_subscriber::fmt::try_init;
|
|
|
|
#[tokio::test]
|
|
#[ignore = "requires local node binary and open ports"]
|
|
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_run_duration(Duration::from_secs(1))
|
|
.build()?;
|
|
|
|
let deployer = LbcLocalDeployer::default();
|
|
let runner = deployer.deploy(&scenario).await?;
|
|
let context = runner.context();
|
|
|
|
let control = context
|
|
.node_control()
|
|
.ok_or_else(|| anyhow!("node control not available"))?;
|
|
|
|
let node_name = "node-0";
|
|
let old_pid = control
|
|
.node_pid(node_name)
|
|
.ok_or_else(|| anyhow!("missing node pid"))?;
|
|
|
|
control
|
|
.restart_node(node_name)
|
|
.await
|
|
.map_err(|error| anyhow!("failed to restart {node_name}: {error}"))?;
|
|
|
|
let new_pid = control
|
|
.node_pid(node_name)
|
|
.ok_or_else(|| anyhow!("missing node pid"))?;
|
|
assert_ne!(old_pid, new_pid, "expected a new process after restart");
|
|
|
|
control
|
|
.stop_node(node_name)
|
|
.await
|
|
.map_err(|error| anyhow!("failed to stop {node_name}: {error}"))?;
|
|
assert!(
|
|
control.node_pid(node_name).is_none(),
|
|
"expected node pid to be absent after stop"
|
|
);
|
|
|
|
let _handle = runner.run(&mut scenario).await?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[tokio::test]
|
|
#[ignore = "requires local node binary and open ports"]
|
|
async fn manual_cluster_restart_node() -> Result<()> {
|
|
let _ = try_init();
|
|
let deployer = LbcLocalDeployer::default();
|
|
let descriptors = DeploymentBuilder::new(TopologyConfig::with_node_numbers(1)).build()?;
|
|
let cluster = deployer.manual_cluster_from_descriptors(descriptors);
|
|
|
|
let node_name = cluster.start_node("a").await?.name;
|
|
|
|
let old_pid = cluster
|
|
.node_pid(&node_name)
|
|
.ok_or_else(|| anyhow!("missing node pid"))?;
|
|
|
|
cluster
|
|
.restart_node(&node_name)
|
|
.await
|
|
.map_err(|error| anyhow!("failed to restart {node_name}: {error}"))?;
|
|
|
|
let new_pid = cluster
|
|
.node_pid(&node_name)
|
|
.ok_or_else(|| anyhow!("missing node pid"))?;
|
|
assert_ne!(old_pid, new_pid, "expected a new process after restart");
|
|
|
|
cluster
|
|
.stop_node(&node_name)
|
|
.await
|
|
.map_err(|error| anyhow!("failed to stop {node_name}: {error}"))?;
|
|
assert!(
|
|
cluster.node_pid(&node_name).is_none(),
|
|
"expected node pid to be absent after stop"
|
|
);
|
|
|
|
Ok(())
|
|
}
|