[Twisted-Python] What deferred can I use to detect when a server or client is "running"

Brian Granger ellisonbg.net at gmail.com
Sun Dec 17 17:45:39 EST 2006

Great, this is very helpful.  It turns out the hack I was doing is not
that different from what ClientCreator.connectTCP does - passing a
deferred to my factory that gets fired at the right time.
I think I might just have a bug floating around.

I will have a look at the loopback stuff though.


On 12/17/06, Jean-Paul Calderone <exarkun at divmod.com> wrote:
> On Sun, 17 Dec 2006 15:10:34 -0700, Brian Granger <ellisonbg.net at gmail.com> wrote:
> >Hi,
> >
> >i am writing some tests using trial and in my setUp methods I start
> >various servers and clients using listenTCP/connectTCP.  The problem I
> >am having is finding a deferred that will fire when:
> >
> >1.  A server is actually listening.  I want to use this deferred to
> >trigger clients to connect...
> listenTCP complete synchronously, so you don't need to wait before
> connecting to a server started this way.
> >
> >2.  A client has connected.  I want to return this deferred from my
> >setUp method so my tests won't actually run until the client has
> >connected to the server.
> twisted.internet.protocol.ClientCreator.connectTCP will return a Deferred
> which fires with a protocol instance after it is connected.  You can use
> that, or look at its implementation to see how to do something similar
> yourself.
> >
> >I have some hackish ways that I have been getting around this, but
> >they seem a little fickle.  What is the "standard" way of doing this
> >in tests?
> You might also consider /not/ using real sockets in your unit tests.  It
> is often easier to use a simulated transport.
> twisted.protocols.loopback.loopback is going to be deprecated in Twisted
> 2.5, but it will be replaced with something much the same, loopbackAsync.
> You can also just create twisted.test.proto_helpers.StringTransport objects
> and attach them to protocols directly.  This gives you very precise control
> over what you are testing.
> Jean-Paul
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

More information about the Twisted-Python mailing list