The fuchsia.io conformance tests are designed to exercise the fuchsia.io interface. There is a common suite of conformance tests, written in Rust (in
tests/), which are run against the various conformance test harnesses. These harnesses (in the
conformance_harness directory) indicate which functionality should be tested, and proxy requests from the test driver to the underlying client library.
This contrasts with the tests in
fs_test, which are designed to exercise the FDIO/POSIX interface (and typically assume the underlying filesystem is mutable).
These tests ensure that fuchsia.io servers behave as expected under various conditions. It does this by setting up specific node and directory layouts using fuchsia.io server libraries. Then server handling of various protocol invariants are validated using FIDL.
In order to set up servers in different languages, we create a test driver for each filesystem server. A test driver will be a component that could be launched by the conformance test suite on demand, and serve a number of directories via the
fuchsia.io.test FIDL protocol, using a specific filesystem library.
The conformance tests exist in
tests/tests.rs being the root. Each file exercises a targeted subset of FIDL methods on each of the Node, File, and Directory protocols. Files in
tests/ test general Node methods, files in
tests/directory/ test methods specific to Directory, and files in
tests/file/ test methods specific to File.
Common utilities are provided by the library in
src/, which is compiled as the
io_conformance_util crate. This includes utilities to create the structures the harnesses will use as direction to create directory trees for testing, functions to open concrete types, and some common asserts.