Mysteries of DropBox: Property-Based Testing of a Distributed Synchronization Service

File synchronization services such as Dropbox are used by hundreds ofmillions of people to replicate vital data. Yet rigorous models of theirbehavior are lacking. We present the first formal -- and testable -- model ofthe core behavior of a modern file synchronizer, and we use it to discoversurprising behavior in two widely deployed synchronizers. Our model isbased on a technique for testing nondeterministic systems that avoidsrequiring that the system's internal choices be made visible to the testing framework.

[1]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[2]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[3]  Clarence A. Ellis,et al.  Concurrency control in groupware systems , 1989, SIGMOD '89.

[4]  Marvin Theimer,et al.  Managing update conflicts in Bayou, a weakly connected replicated storage system , 1995, SOSP.

[5]  Jan Tretmans,et al.  Test Generation with Inputs, Outputs and Repetitive Quiescence , 1996, Softw. Concepts Tools.

[6]  Sarita V. Adve,et al.  Shared Memory Consistency Models: A Tutorial , 1996, Computer.

[7]  Jalal Kawash,et al.  DEFINING AND COMPARING MEMORY CONSISTENCY MODELS , 1997 .

[8]  Benjamin C. Pierce,et al.  What is a file synchronizer? , 1998, MobiCom '98.

[9]  Hartmut König,et al.  Architectures for Testing Distributed Systems , 1999, IWTCS.

[10]  Norman Ramsey,et al.  An algebraic approach to file synchronization , 2001, ESEC/FSE-9.

[11]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[12]  Benjamin C. Pierce,et al.  What's in Unison? A Formal Specification and Reference Implementation of a File Synchronizer , 2004 .

[13]  Nick Benton,et al.  Implementation and Application of Functional Languages , 2005 .

[14]  Yasushi Saito,et al.  Optimistic replication , 2005, CSUR.

[15]  John Hughes,et al.  Testing telecoms software with quviq QuickCheck , 2006, ERLANG '06.

[16]  John Hughes,et al.  QuickCheck Testing for Fun and Profit , 2007, PADL.

[17]  Gordon Fraser,et al.  Test-Case Generation and Coverage Analysis for Nondeterministic Systems Using Model-Checkers , 2007, International Conference on Software Engineering Advances (ICSEA 2007).

[18]  Jan Tretmans,et al.  Model Based Testing with Labelled Transition Systems , 2008, Formal Methods and Testing.

[19]  Jonas Boberg Early fault detection with model-based testing , 2008, ERLANG '08.

[20]  Koen Claessen,et al.  Finding race conditions in Erlang with QuickCheck and PULSE , 2009, ICFP.

[21]  John Hughes,et al.  Software Testing with QuickCheck , 2009, CEFP.

[22]  Simon J. Thompson,et al.  Quickchecking refactoring tools , 2010, Erlang '10.

[23]  Hanifa Boucheneb,et al.  Symbolic Model-Checking of Optimistic Replication Algorithms , 2010, IFM.

[24]  K. Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, SIGP.

[25]  John M. Hughes,et al.  Testing a database for race conditions with QuickCheck: none , 2011, Erlang '11.

[26]  Ulf Norell,et al.  Testing blocking operations with QuickCheck's component library , 2013, Erlang '13.

[27]  Paolo Arcaini,et al.  Combining Model-Based Testing and Runtime Monitoring for Program Testing in the Presence of Nondeterminism , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation Workshops.

[28]  Magnus Jonsson,et al.  Using Simulation, Fault Injection and Property-Based Testing to Evaluate Collision Avoidance of a Quadcopter System , 2015, 2015 IEEE International Conference on Dependable Systems and Networks Workshops.

[29]  Tom Ridge,et al.  SibylFS: formal specification and oracle-based testing for POSIX and real-world file systems , 2015, SOSP.

[30]  Ulf Norell,et al.  Testing AUTOSAR software with QuickCheck , 2015, 2015 IEEE Eighth International Conference on Software Testing, Verification and Validation Workshops (ICSTW).

[31]  J. Casper,et al.  Automated Testing of Distributed Systems , 2022 .