
On Mon, 25 Jun 2007 12:28:23 -0400, Christian Simms <christian.simms@gmail.com> wrote:
[snip]
I think you have a race condition because (I assume) self.p.lineReceivedindirectly did a database insert, and then the self.check did a database select. If that's true, you should make your test use Deferred's like this:
d = defer.succeed(None) d.addCallback(lambda out: self.p.lineReceived('{%s:"PG"}\0' % sserverson.base10toN(104)) d.addCallback(lambda out: self.check("test\0")) return d
You could also write this code using the new defer.inlineCallbacks (needs python 2.5) or the older defer.deferredGenerator, but you might as well get used to using callbacks/errbacks and Deferred's.
Note that the above requires lineReceived to return a Deferred which only fires after the insert has completed and check to return a Deferred which represents the result of the select (if those are indeed the underlying operations). Jean-Paul