# gVisor FUSE Test Suite This is an integration test suite for fuse(4) filesystem. It runs under both gVisor and Linux, and ensures compatibility between the two. This test suite is based on system calls test. This document describes the framework of fuse integration test and the guidelines that should be followed when adding new fuse tests. ## Integration Test Framework Please refer to the figure below. `>` is entering the function, `<` is leaving the function, and `=` indicates sequentially entering and leaving. ``` | Client (Test Main Process) | Server (FUSE Daemon) | | | >TEST_F() | | >SetUp() | | =MountFuse() | | >SetUpFuseServer() | | [create communication pipes] | | =fork() | =fork() | >WaitCompleted() | | [wait for MarkDone()] | | | =ConsumeFuseInit() | | =MarkDone() | SetExpected() | | [construct expected reaction] | | | >FuseLoop() | | >ReceiveExpected() | | [wait data from pipe] | [write data to pipe] | | [wait for MarkDone()] | | | [save data to memory] | | =MarkDone() | read() | | [wait for fs operation] | >[Do fs operation] | | [wait for fs response] | | | TearDown() | | =UnmountFuse() | |