Comparison-based file server verification
Yuen-Lin Tan, Terrence L. Wong, John D. Strunk, Gregory R. Ganger · USENIX Annual Technical Conference · 2005
Comparison-based verification involves testing a by comparing its responses to those of a reference server. An intermediary, called a server Tee, interposes between clients and the reference server, synchronizes the system-under-test (SUT) to match the reference server's state, duplicates each request for the SUT, and compares each pair of responses to identify any discrepancies. The result is a detailed view into any differences in how the SUT satisfies the client-server protocol specification, which can be invaluable in debugging servers, achieving bug compatibility, and isolating performance differences. This paper introduces, develops, and illustrates the use of comparison-based verification. As a concrete example, it describes a NFSv3 Tee and reports on its use in identifying interesting differences in several production NFS servers and in debugging a prototype NFS server. These experiences confirm that comparison-based verification can be a useful tool for implementors.