
If it's determined that a MySQL test should be skipped during setUp(), but after the parent setUp() has been called, having created and started a timer, then tearDown() is never called and the timer never cancelled, but left to expire during some future, unrelated test. Move call to parent setUp() to end of child setUp() to insure that the timer is only created and started after it's been determined that the test shouldn't be skipped (ie create_db()).
The tests are intended to be run using Nose. http://somethingaboutorange.com/mrl/projects/nose/ To run tests, simply install nose, and then, in the eventlet tree, do: $ nosetests That's it! Its output is the same as unittest's output. It tends to emit a lot of tracebacks from various poorly-behaving tests, but they still (generally) pass.