[Twisted-web] NEWBIE: Unittest hangs by deferred

Bart Frackiewicz twisted-web@twistedmatrix.com
Fri, 09 Jan 2004 16:21:55 +0100


Hi,

i am a newbie to Twisted, so it would be fine if you can help me to 
understand, what i am doing wrong. I have a Package twisted_rpc3, which 
has a class City:

### file: twisted_rpc.py ###
  def getCityId(self, args):
      return dbpool.runInteraction(self._searchCityByString, args)

  def _searchCityByString(self, txn, args):
      .. search in database with some tricks
      return result # a string
### endfile: twisted_rpc.py ###

When i run this from bash, this works as excepted.

### file: city.py ###
import twisted_rpc3

def printResult(res):
    print res

c = twisted_rpc3.City()
c.getCityId(('berlin', 'de')).addCallback(printResult)

reactor.callLater(2, reactor.stop)
reactor.run()
### endfile: city.py ###

For the unittest, i create following:

## file test_twisted_rpc3.py ###
from twisted.trial import unittest

class TestCaseCity(unittest.TestCase):

    def testObject(self):
      c = twisted_rpc3.City()

    def testGetCityId(self):
      c = twisted_rpc3.City()
      d = c.getCityId(('Berlin', 'de'))
      self.assertEquals(unittest.deferredResult(d, 5), 'de_berlin')
## endfile test_twisted_rpc3.py ###

After starting test ([~/twisted]$ trial test_twisted_rpc3) , i get an 
timeout error, and if i add print statements, i see that getCityId() was 
called, but _searchCityByString() never. Where is my mistake?

TIA, Bart