resolve #2157 - [x] fix broken doc links - [x] fix codec macro typo https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/node/core/pvf/common/src/error.rs#L81 (see the comment below) - [x] refactor `ValidationError`, `PrepareError` and related error types to use `thiserror` crate ## `codec` issue `codec` macro was mistakenly applied two times to `Kernel` error (so it was encoded with 10 instead of 11 and the same as `JobDied`). The PR changes it to 11 because - it was an initial goal of the code author - Kernel is less frequent than JobDied so in case of existing error encoding it is more probable to have 10 as JobDied than Kernel See https://github.com/paritytech/parity-scale-codec/issues/555 ---- polkadot address: 13zCyRG2a1W2ih5SioL8byqmQ6mc8vkgFwQgVzJSdRUUmp46 --------- Co-authored-by: s0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com>
PVF Host
This is the PVF host, responsible for responding to requests from Candidate Validation and spawning worker tasks to fulfill those requests.
See also:
- for more information: the Implementer's Guide
- for an explanation of terminology: the Glossary
Running basic tests
Running cargo test in the pvf/ directory will run unit and integration
tests.
Note: some tests run only under Linux, amd64, and/or with the
ci-only-tests feature enabled.
See the general Testing instructions for more information on running tests and observing logs.
Running a test-network with zombienet
Since this crate is consensus-critical, for major changes it is highly recommended to run a test-network. See the "Behavior tests" section of the Testing docs for full instructions.
To run the PVF-specific zombienet test:
RUST_LOG=parachain::pvf=trace zombienet --provider=native spawn zombienet_tests/functional/0001-parachains-pvf.toml
Testing on Linux
Some of the PVF functionality, especially related to security, is Linux-only, and some is amd64-only. If you touch anything security-related, make sure to test on Linux amd64! If you're on a Mac, you can either run a VM or you can hire a VPS and use the open-source tool EternalTerminal to connect to it.1
-
Unlike ssh, ET preserves your session across disconnects, and unlike another popular persistent shell, mosh, it allows scrollback. ↩︎