34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# Development and testing
|
|
|
|
Use Rust 1.92 or newer on Linux and the [native dependencies](getting-started.md).
|
|
Tests additionally need Python 3, Python `cryptography`, and OpenSSL's CLI.
|
|
|
|
```bash
|
|
cargo fmt --all --check
|
|
cargo check --locked --no-default-features
|
|
cargo test --locked
|
|
cargo clippy --locked --all-targets -- -D warnings
|
|
cargo build --locked --release
|
|
bash tests/synthetic_docker_e2e.sh
|
|
```
|
|
|
|
Synthetic tests generate fresh keys, TALs, certificates and an HTTPS RRDP
|
|
repository. They cover snapshot, actual delta, persistence, daemon restart and
|
|
outputs without public RIR requests. Docker tests require Linux host networking.
|
|
Generated keys and outputs are temporary and unsuitable as production inputs.
|
|
|
|
## Code organization
|
|
|
|
- `src/cli/` parses arguments; `src/runtime/` coordinates validation.
|
|
- `src/repository/` handles transport, RRDP and persistence.
|
|
- `src/scheduler/` coordinates bounded workers.
|
|
- `src/model/` and `src/validation/` parse and validate RPKI objects.
|
|
- `src/ccr/` exports canonical state; `src/ta_constraints/` evaluates constraints.
|
|
- `src/daemon/` schedules runs; logging/output modules provide diagnostics.
|
|
- `tests/` contains integration tests and generated fixtures.
|
|
- `docker/` contains container and Compose deployment files.
|
|
|
|
Internal Rust modules are not a stable library API. The supported interface is
|
|
the CLI and documented output files. Add behavior tests and update documentation
|
|
when changing these interfaces.
|