  New ideas in distributed systems (algorithms or protocols) are commonly
tested by simulation, because experimenting with a prototype deployed on a
realistic platform is cumbersome. However, a prototype not only measures
performance but also verifies assumptions about the underlying system. We
developed dfuntest - a testing framework for distributed applications that
defines abstractions and test structure, and automates experiments on
distributed platforms. Dfuntest aims to be jUnit's analogue for distributed
applications; a framework that enables the programmer to write robust and
flexible scenarios of experiments. Dfuntest requires minimal bindings that
specify how to deploy and interact with the application. Dfuntest's
abstractions allow execution of a scenario on a single machine, a cluster, a
cloud, or any other distributed infrastructure, e.g. on PlanetLab. A scenario
is a procedure; thus, our framework can be used both for functional tests and
for performance measurements. We show how to use dfuntest to deploy our DHT
prototype on 60 PlanetLab nodes and verify whether the prototype maintains a
correct topology.
