[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