[Twisted-Python] Load testing twistd + twisted.soap

Matthew Glubb matt at zgroupplc.com
Fri Apr 27 06:51:05 EDT 2007

Hash: SHA1

Hi All,

I am attempting to write a simple load test for my soap web services.  
I am running the application under twistd and using trial for unit  
tests. I understand that for a real load test, I would use a tool  
like ab or http_load in a more scientific environment but I want to  
get a quick feel for how well a twisted application stands up against  
low levels of load on my dev box and I feel that there is merit in  
setting a baseline level of performance in a unit test.

I am running into problems with the following:

class SOAPTestCase(BaseTestCase):

     url = 'http://localhost:8080/'

     def setUp(self):
         self.proxy = Proxy(self.url)

     def testMutipleAPCs(self):
         """Assert that multiple APCs succeed"""
         deferred = defer.Deferred()
         for i in range(100):
             d = self.testAPCTimeout()
         return deferred

     def testAPCTimeout(self):
         deferred = self.proxy.callRemote('processApc', 0,  
         return deferred

     def APCTimeout(self, result):
         requestIdForApc, requestDataForApc, errorFlag, result = result

         self.assertEqual(result, res)
         self.assertTrue(isinstance(requestIdForApc, str))
         self.assertEqual(id, requestIdForApc)
         self.assertTrue(isinstance(requestDataForApc, str))
         self.assertEqual(data, requestDataForApc)

         self.assertTrue(isinstance(errorFlag, str))
err), errorFlag)

For a start, I get a lot of 'reactor left in unclean state' warnings.  
This number of twisted.internet.tcp.Client instances that this  
reports on is never usually all of them:

twisted.trial.util.DirtyReactorError: THIS WILL BECOME AN ERROR SOON!  
reactor left in unclean state, the following Selectables were left  
over:  <<class 'twisted.internet.tcp.Client'> to ('localhost', 8080)  
at 1782390> <<class 'twisted.internet.tcp.Client'> to ('localhost',  
8080) at 1782150> ...

In addition I get pending time calls still pending:

twisted.trial.util.PendingTimedCallsError: pendingTimedCalls still  
pending (consider setting twisted.internet.base.DelayedCall.debug =  
True): <DelayedCall 24636392 [24.8269200325s] called=0 cancelled=0  
Client.failIfNotConnected(TimeoutError('',))> ...

Does any twisted genius have any idea what I am doing wrong?



m a t t h e w   g l u b b

Z Group PLC

Tel: +44 (0) 8700 111 173
Fax: +44 (0) 8707 051 393
Txt: +44 (0) 7800 140 877
Web: <http://www.zgroupplc.com/>

This  email  and  any  files  transmitted  with it are  confidential and
intended solely for the use of the individual or entity to whom they are
addressed.  The opinions  expressed in this mail are those of the author
and do not necessarily  represent the views of the company.  If you have
received this email in error please notify <service at zgroupplc.com>

Version: GnuPG v1.4.1 (Darwin)


More information about the Twisted-Python mailing list