[Twisted-Python] need help figuring out weird pb/trial interaction
teratorn pasted the following code for me one night and was complaining that there was no traceback in the error reporting of trial. I spent about an hour and a half stepping through this code with pdb, and afaict, this isn't a trial bug. However, I don't understand why this is happening. --------------------------------------------- from twisted.internet import reactor from twisted.trial import unittest from twisted.trial.assertions import * from twisted.trial import util from twisted.spread import pb from twisted.cred import portal, checkers, credentials, perspective from zope.interface import implements class MyRealm: implements(portal.IRealm) def requestAvatar(self, avatarId, mind, *interfaces): return (perspective.IPerspective, pb.Avatar(), lambda:None) class LiveServerTestCase(unittest.TestCase): def setUp(self): self.realm = MyRealm() portal = pb.Portal(self.realm) checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(good='user') portal.registerChecker(checker) f = pb.PBServerFactory(portal) self.port = reactor.listenTCP(0, f, interface="127.0.0.1") self.portno = self.port.getHost().port def tearDown(self): self.port.stopListening() def testExample(self): f = pb.PBClientFactory() d = f.login(credentials.UsernamePassword("bad", "password"), "BRAINS!") c = reactor.connectTCP("127.0.0.1", self.portno, f) #this should throw an Exception because we're using the wrong user/pass #result = util.wait(d) #commenting the previous line, and uncommenting the next two lines #results in no output for the testExample ERROR d.addCallback(self._cb).addErrback(self._eb) return d def _cb(self, value): raise FailTest, "expecting Failure, got result" def _eb(self, failure): print failure return failure ---------------------------------------------- saving this and running trial teratorn.py i get the following output: ###-------------------------------------------------------------------------### teratorn LiveServerTestCase testExample ... [Failure instance: Traceback from remote host -- Traceback unavailable ] [ERROR] cleanup errors [ERROR] /home/slyphon/Projects/Twisted/trunk/twisted/trial/reporter.py:258: twisted.trial.reporter.BrokenTestCaseWarning: REACTOR UNCLEAN! traceback(s) follow: =============================================================================== [ERROR]: testExample (teratorn.LiveServerTestCase) ------------------------------------------------------------------------------- Ran 1 tests in 0.027s FAILED (errors=1) ###-------------------------------------------------------------------------### any suggestions as to why this is happening, i'm totally stumped... -Jonathan
On Tue, 16 Nov 2004 17:06:10 -0500, Jonathan Simms <slyphon@twistedmatrix.com> wrote:
teratorn pasted the following code for me one night and was complaining that there was no traceback in the error reporting of trial. I spent about an hour and a half stepping through this code with pdb, and afaict, this isn't a trial bug. However, I don't understand why this is happening.
Did you ever figure this out, slyphon? AIUI, it's happening because PB isn't reconstructing a Failure that can sanely be .raiseException()ed on the receiving side. If I get a chance, I'll try to think about the problem more, but I can't think of any possible "fix" for it now. -- Twisted | Christopher Armstrong: International Man of Twistery Radix | Release Manager, Twisted Project ---------+ http://radix.twistedmatrix.com
participants (2)
-
Christopher Armstrong
-
Jonathan Simms