panda-rpki-oss/docs/development.md
yuyr 591bed90a8
Some checks failed
ci / rust (push) Has been cancelled
ci / docker (push) Has been cancelled
ci / audit (push) Has been cancelled
Harden first-release validation and dependency hygiene
2026-09-10 09:53:45 +08:00

1.9 KiB

Development and testing

Use Rust 1.92 or newer on Linux and the native dependencies. Tests additionally need Python 3, Python cryptography, OpenSSL's CLI, and ripgrep (rg). Install them with sudo apt-get install python3-cryptography openssl ripgrep.

python3 tools/check_format.py
python3 -m unittest discover -s tools -p 'test_*.py'
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.

The format checker also checks files included through include!, which are not all traversed by cargo fmt. To format them, run rustfmt --edition 2024 on the reported files, then rerun the checker. Preserve upstream license texts.

For dependency and release checks see Releasing and Dependency maintenance.