diff --git a/book/src/dev/rfcs/drafts/xxxx-basic-integration-testing.md b/book/src/dev/rfcs/drafts/xxxx-basic-integration-testing.md new file mode 100644 index 00000000..7f9c0594 --- /dev/null +++ b/book/src/dev/rfcs/drafts/xxxx-basic-integration-testing.md @@ -0,0 +1,140 @@ +- Feature Name: basic_integration_testing +- Start Date: 2020-09-04 +- Design PR: [ZcashFoundation/zebra#0000](https://github.com/ZcashFoundation/zebra/pull/0000) +- Zebra Issue: [ZcashFoundation/zebra#1004](https://github.com/ZcashFoundation/zebra/issues/1004) + +# Summary +[summary]: #summary + +Zebra's basic integration tests make sure that it works when deployed on mainnet and testnet. + +Basic acceptance tests: +* genesis tests for basic network integration +* restart with existing state +* quick tests for a few thousand blocks + * can be unstable on the current testnet +* `checkpoint_sync = true` + * not yet implemented + +On `main` branch merge: +* slow tests past the canopy mandatory checkpoint, for full block verification +* slow tests to the tip of the chain + +For an up-to-date list, see: +* https://github.com/ZcashFoundation/zebra/blob/main/zebrad/tests/acceptance.rs +* https://github.com/ZcashFoundation/zebra/tree/main/.github/workflows + +Design strategies: +* we write Rust-based acceptance tests, not shell scripts +* use #[ignored] to disable long-running integration tests by default +* use a feature to disable integration tests that need pre-cached state + +Logging plans: +* limit bundled logs to the first N lines, and the last N lines ? +* write logs to a file ? +* work out how to avoid filling up the child stdout and stderr pipes +* keep warning and error logs +* only keep initial and final info/debug/trace logs + +# Motivation +[motivation]: #motivation + +To develop and deploy Zebra, we need to make sure that its sync, verify, and state functionality works. + +These tests help us be confident that PRs and main branch merges don't break Zebra's basic functionality. + +# Definitions +[definitions]: #definitions + + + +# Guide-level explanation +[guide-level-explanation]: #guide-level-explanation + + + +# Reference-level explanation +[reference-level-explanation]: #reference-level-explanation + + + +# Drawbacks +[drawbacks]: #drawbacks + + + +# Rationale and alternatives +[rationale-and-alternatives]: #rationale-and-alternatives + + + +# Prior art +[prior-art]: #prior-art + + + +# Unresolved questions +[unresolved-questions]: #unresolved-questions + + + +# Future possibilities +[future-possibilities]: #future-possibilities + +