DeeTest is a Distributed Environment Testing framework designed to integrate with conventional JVM testing tools (ie. JUnit & Specs2) and to remain independent of specific interaction mechinisms by offloading to tools such as selenium and sukuli. In a distributed evironment, common problems include connectivity, timing, deployment and syncronization.
DeeTest attempts to solve the syncronization problem by establishing acceptable conventions around sequencing. By default all instructions are blocking on the master/coordination node. This means that by default the test will execute a block on node X and then spin until node X acknowleges completion or a time out occurs resulting in test failure.
Timing is handled by a predicate function over which the client will spin awaiting a specific state before responding to the master node.
Deployment of the application is assumed to be handled independently, or as a component of test setup. The test specifically is deployed in a hotswap manner. Durring the master initializaiton the test project jar and dependencies are transmitted across the wire and dynamically loaded into the DeeTest client for the durration to the test suite execution.
Where connectivity is concerned there are two major concerns: detection, and recovery. We must detect when the connection is severed and determine if the cause was related to system failure or external input, Once connectivity is lost we must recover the devices stable state. this primarily involves restoring the device by means of the conventional ‘teardown’ method.