45 lines
1.5 KiB
Markdown
Raw Normal View History

# Introduction
The Logos Testing Framework is a purpose-built toolkit for exercising Logos in
realistic, multi-node environments. It solves the gap between small, isolated
tests and full-system validation by letting teams describe a cluster layout,
drive meaningful traffic, and assert the outcomes in one coherent plan.
It is for protocol engineers, infrastructure operators, and QA teams who need
2026-01-26 16:36:51 +01:00
repeatable confidence that node components work together under network and
timing constraints.
Multi-node integration testing is required because many Logos behaviors—block
2026-01-26 16:36:51 +01:00
progress and liveness under churn—only emerge when several nodes interact over
real networking and time. This framework makes those checks
declarative, observable, and portable across environments.
## A Scenario in 20 Lines
Here's the conceptual shape of every test you'll write:
```rust,ignore
// 1. Define the cluster
let scenario = ScenarioBuilder::topology_with(|t| {
t.network_star()
2026-01-26 16:36:51 +01:00
.nodes(3)
})
// 2. Add workloads (traffic)
.transactions_with(|tx| tx.rate(10).users(5))
// 3. Define success criteria
.expect_consensus_liveness()
// 4. Set experiment duration
.with_run_duration(Duration::from_secs(60))
.build();
// 5. Deploy and run
let runner = deployer.deploy(&scenario).await?;
runner.run(&mut scenario).await?;
```
This pattern—topology, workloads, expectations, duration—repeats across all scenarios in this book.
**Learn more:** For protocol-level documentation and node internals, see the [Logos Project Documentation](https://nomos-tech.notion.site/project).