
On Thu, 31 Jul 2003 00:26:07 +0530 Jeethu Rao <jeethur@sancharnet.in> wrote:
What is the right way of unit testing protocols in twisted ? Currently, I'm just subclassing my protocol with unittest.TestCase And directly calling the dataRecieved with a string and am checking If the overridden callbacks (like dataRecieved) are called.
That is indeed a good way to test.
The tests pass, but back when I was writing threaded servers, I would actually setup a server on localhost and would connect to The server from another thread, for unit testing. That gives me a lot more confidence.
And doing this sort of testing in addition is also a good idea.
I know that I can setup two reactors, for the client and the server and then try to make them talk, But I'm sure there's a shortcut. I just could'nt figure out the test suites from the Twisted sources.
You only need one reactor. (And twisted doesn't support multiple reactors at the moment anyway.) So don't look for that in the code. Just look at how the tests are done. In general you'd just do some variant on: reactor.listenTCP(1234, myServerFactory) reactor.connectTCP("127.0.0.1", 1234, myClientFactory): while someConditionIsn'tSet: reactor.iterate() # at this point some exchange should have finished successfully -- Itamar Shtull-Trauring http://itamarst.org/ http://www.zoteca.com -- Python & Twisted consulting