This is a giant hack to make the windows client not lose the list of
tests it has to run whenever it needs rebooted, or a daemon there needs
restarted, or whatever (which happens pretty often). Instead of using
rabbitmq directly from windows (which has been a source of much pain),
we use a queue listener on the master to get windows things from
rabbitmq and put them into an sqlite database. Then, there's a web
service (still running on the master) that serves those up one at a
time. Finally, on windows, instead of running the worker as a daemon
that does its thing, we'll run it as a cron job (every 30 seconds or so,
just so we don't get too far behind) that calls out to the web service,
runs one test, and then shuts down. This should keep us from screwing
things up TOO badly.
Since using wait() without read()ing the output from a subprocess.Popen
instance can deadlock, just use communciate() everywhere to avoid said
deadlocks. It's for the best.