Arjen Markus (5 january 2005) I was inspired by a white paper from Electric Cloud, Inc. to consider a solution for a particular problem me and my colleagues are facing: the automatic tests for part of our software are taking hours and hours to complete.

Now these are all independent tasks: a single case consists of one or more programs that are run and results that are checked. There are a lot of cases. So, using several machines seems a nice way to reduce the time needed to run them all.

The scripts below illustrate how this can be done:

The server is started first. It reads a file with the description of the various jobs that need to be done

One or more clients (just start the client script multiple times) connect to the server and receive the information about the job at hand.

Once the client is finished with that job, it asks for the next one (by sending a message to the server)

Okay, nothing fancy, but the principle works: there is one process in charge, all others cooperate smoothly.