[Dev] Mock Reactor for tests?

Brian Kirsch bkirsch at osafoundation.org
Mon Jun 6 16:23:22 PDT 2005


Ok sounds good. Especially if you wanna do the work of implementing the 
mock reactor :)

Phillip J. Eby wrote:

> At 02:33 PM 6/6/2005 -0700, Brian Kirsch wrote:
>
>> Phillip and Heikki you bring up some good points. In regards to the 
>> timeout issue any client and any server code used in testing should 
>> leverage the Twisted TimeoutMixin. This will force a timeout after a 
>> certain number of seconds specified. Phillip, you are correct that
>> there is no concept of a simulated duration. But it is easy to lower 
>> the actual duration value. For example, in test_pop3client to
>> lower the timeout value from 60 to 5 to force a shorter duration all 
>> I have to do is popClientInstance.timeout = 5.
>
>
> I understand that.  However, a single unit test that takes 5 whole 
> *seconds* to run is useless (as a unit test for development 
> purposes).  You should be able to run an entire subsystem worth of 
> unit tests in 5 seconds.  PEAK's roughly 900 unit tests run in 7 
> seconds on my PC, and that includes a variety of "simulated time" 
> scheduling tests that if run for real, would take minutes.  5 seconds 
> is totally off the scale for a unit test.
>
> So, while I'll agree that you certainly can do what you're saying, I'm 
> just pointing out that it's not going to improve on the availability 
> of TDD-quality unit tests in Chandler unless you can take the timeouts 
> down to zero, which still doesn't work for timing tests.
>
>
>>  I guess my point was we may not need to add the extra burden of 
>> maintaining our own mock reator. I think it is still worth looking in 
>> to just leveraging the code twisted provides.
>
>
> Sure.  But I doubt it'd be much burden - keep in mind that I've 
> written these things before, with several variations, and fairly tight 
> levels of integration with Twisted 1.0, as well as implementing 
> from-scratch reactors for specialized purposes.  I seem to recall my 
> first simulated-time reactor was only a dozen or so lines of added code.
>
> Anyway, if you feel that StringTransport is sufficient to do loopback 
> I/O, then the only other features that we would need are simulated 
> time and the ability to reset between tests.  Which means it would be 
> well worth proposing an ITestReactor interface to Twisted, with 
> methods like those proposed by Itamar in the thread I mentioned 
> earlier.  (Given that he proposed them, I imagine a patch would be 
> welcome.)
>
> I'll probably take a closer look at this tomorrow, to see what it 
> would take to integrate my old simulated-time approach into a patch 
> for Twisted 2.
>


-- 
Brian Kirsch - Email Framework Engineer
Open Source Applications Foundation
543 Howard St. 5th Floor
San Francisco, CA 94105
(415) 946-3056
http://www.osafoundation.org



More information about the Dev mailing list