Here's a hint: Twisted (in SVN trunk) now makes it much easier to write (and test) time-using code in a way that doesn't waste time waiting for real time to pass, and remains deterministic.
Anything which uses the reactor to schedule timed calls (with reactor.callLater) should parameterize it. Probably the only method you'll be calling on it is callLater (and then perhaps calling methods on the resultant DelayedCall), but maybe you'll also use the seconds method. The point is, you can pass an instance of twisted.internet.task.Clock instead of the real reactor, and then you have a super-easy way to test your scheduling code reliably. Just call clock.advance(numberOfSeconds) in your test to pass simulated time (thus calling any scheduled calls scheduled for that time), or you can also access the .calls attribute which has a list of all pending DelayedCalls.
Clock has been around for a while and has been in use in many tests, but the biggest new benefit is that you can now use this technique to simulate the passing of time for code which uses LoopingCall; just set your LoopingCall's .clock attribute to your Clock instance, and it'll use that for all scheduling.