# 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][impl-guide] - for an explanation of terminology: [the Glossary][glossary] ## Running basic tests Running `cargo test` in the `pvf/` directory will run unit and integration tests. **Note:** some tests run only under Linux, x86-64, and/or with the `ci-only-tests` feature enabled. See the general [Testing][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][testing] docs for full instructions. To run the PVF-specific zombienet test: ```sh 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 x86-64-only. If you touch anything security-related, make sure to test on Linux x86-64! 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][et] to connect to it.[^et] [^et]: Unlike ssh, ET preserves your session across disconnects, and unlike another popular persistent shell, mosh, it allows scrollback. [impl-guide]: https://paritytech.github.io/polkadot-sdk/book/pvf-prechecking.html#summary [glossary]: https://paritytech.github.io/polkadot-sdk/book/glossary.html [testing]: https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/doc/testing.md [et]: https://github.com/MisterTea/EternalTerminal