1.9 KiB
1.9 KiB
Test Strategy
This repository uses four host-side test pillars to preserve compatibility and deterministic behavior.
1) Byte-exact protocol compatibility
- Crate:
dd3_protocol - Scope:
- CRC16-CCITT vectors
- Frame encode/decode byte identity
- ACK payload byte identity
- Chunk reassembly deterministic reset semantics
- Payload schema v3 decode/re-encode golden vectors
- Fixtures:
fixtures/protocol/frames/*.binfixtures/protocol/chunks/*.binfixtures/protocol/payload_v3/*.bin
2) Contract stability
- Crate:
dd3_contracts - Scope:
- Home Assistant discovery JSON contract
- MQTT state JSON key/semantic stability
- CSV header and line format stability
- sanitize/html/url behavior including adversarial inputs
- manufacturer drift guard
- Fixtures:
fixtures/contracts/ha_discovery/*.jsonfixtures/contracts/mqtt_state/*.jsonfixtures/contracts/sd_csv/*.csv
3) Deterministic state machine behavior
- Crates:
dd3_core,dd3_sim - Scope:
- unsynced sender sync-request cadence
- time bootstrap unlock via valid ACK
- stop-and-wait retry behavior under loss/backpressure
- ACK mismatch handling
- duplicate-batch suppression on receiver publish/log paths
4) Robustness fuzz/property checks
fuzz/targets:frame_decodechunk_stream_ingestpayload_decode_v3sanitize_device_idurl_encode_component
Running Tests (host only)
Prerequisite: install Rust toolchain (rustup, cargo, rustfmt, clippy).
- Workspace tests:
make test- or
cargo test --workspace
- Lint:
make lint
- Fuzz smoke (optional, skipped when
cargo-fuzzmissing):make fuzz-smoke
Fixture Refresh
- Ensure baseline subtree exists at
vendor/dd3-cpppinned to baseline commit. - Run:
cargo run -p xtask -- sync-fixturescargo run -p xtask -- verify-fixture-sources