Declarative Testing and Deployment of Distributed Systems

Sander van der Burg, Eelco Dolstra. Declarative Testing and Deployment of Distributed Systems. Technical Report TUD-SERG-2010-020, Delft University of Technology, Delft, The Netherlands, July 2010.


System administrators and developers who deploy distributed systems have to deal with a deployment process that is largely manual and hard to reproduce. This paper describes how networks of computer systems can be reproducibly and automatically deployed from declarative specifications. Reproducibility also ensures that users can easily instantiate a test environment, before deploying the specification to the production environment. Furthermore, from the same specifications we can instantiate virtual networks of virtual machines for both interactive and automated testing. This makes it easy to write automated regression tests that require external machines, need special privileges, or depend on the network topology. We instantiate machines from the specifications using NixOS, a Linux distribution built from a purely functional specification. We have applied our approach to a number of representative problems, including automatic regression testing of a Linux distribution and deployment of a continuous integration environment.