[apt-proxy-devel] r676 - trunk/apt_proxy/test

Chris Halls halls at alioth.debian.org
Fri Aug 17 11:05:10 UTC 2007


Author: halls
Date: Fri Aug 17 11:05:09 2007
New Revision: 676

Log:
Remove calls to reactor.iterate() by using reactor.runUntilCurrent instead


Modified:
   trunk/apt_proxy/test/test_apt_proxy.py
   trunk/apt_proxy/test/test_requests.py

Modified: trunk/apt_proxy/test/test_apt_proxy.py
==============================================================================
--- trunk/apt_proxy/test/test_apt_proxy.py	(original)
+++ trunk/apt_proxy/test/test_apt_proxy.py	Fri Aug 17 11:05:09 2007
@@ -78,9 +78,9 @@
         self.config = self.default_config.replace('[DEFAULT]','[DEFAULT]\ncache_dir=' + self.cache_dir)
     def tearDown(self):
         # Allow connections to close down etc.
-        reactor.iterate(0.1)
-        reactor.iterate(0.1)
-        reactor.iterate(0.1)
+        #reactor.iterate(0.1)
+        #reactor.iterate(0.1)
+        #reactor.iterate(0.1)
         log.debug('Removing temporary directory: ' + self.cache_dir)
         shutil.rmtree(self.cache_dir)
         self.assertRaises(OSError, os.stat, self.cache_dir)

Modified: trunk/apt_proxy/test/test_requests.py
==============================================================================
--- trunk/apt_proxy/test/test_requests.py	(original)
+++ trunk/apt_proxy/test/test_requests.py	Fri Aug 17 11:05:09 2007
@@ -16,7 +16,7 @@
 
 """This module tests the client protocol itself"""
 
-import os, time, urllib
+import os, time, urllib, sys
 from twisted.trial import unittest
 from twisted.internet import protocol, reactor, defer, base
 from twisted.python import failure
@@ -136,8 +136,7 @@
         else:
             log.debug('final test passed', 'uriRequester')
             self.connection.disconnect()
-            log.debug("============ callback 127 [%s]" % (self.deferred))
-            self.deferred.callback(None)
+            self.allTestsDone()
             
     def handleStatus(self, version, code, message):
         log.debug('handleStatus: (%s) %s - %s, expected:%s' % 
@@ -157,9 +156,7 @@
         if self.nextTest.abortTransfer == True:
             log.debug("aborting transfer", 'uriRequester')
             self.disconnect()
-            log.debug("============ callback 150", 'uriRequester')
-            self.deferred.callback(None)
-            #self.passed() # Trigger disconnection of connection
+            self.allTestsDone()
 	elif self.nextTest.passOnDataRcvd == True:
             log.debug("returning early test passed", 'uriRequester')
 	    self.passed()
@@ -205,10 +202,16 @@
     def failed(self, data):
         log.debug('test failed', 'uriRequester')
         self.disconnect()
-        log.debug("============ errorback 193", 'uriRequester')
+        reactor.runUntilCurrent()
         self.deferred.errback(data)
     def disconnect(self):
         reactor.callLater(0, self.connection.disconnect)
+    def allTestsDone(self):
+        # All done, just need to clean up pending timed calls
+        log.debug("XXXXXXXXXXXXXXXXXX")
+        reactor.runUntilCurrent()
+        log.debug("XXXXXXXXXXXXXXXXXX")
+        self.deferred.callback(None)
 
 class TestRequestHelper(apTestHelper):
     def setUp(self, config):
@@ -340,9 +343,9 @@
         self.testfilesdir = os.path.normpath(os.getcwd()+"/../test_data")
     def tearDown(self):
         log.debug("tearDown", self.debugname)
-        reactor.iterate(0.1)
+        #reactor.iterate(0.1)
         self.server.stop()
-        reactor.iterate(0.1)
+        #reactor.iterate(0.1)
         TestRequestHelper.tearDown(self)
     def downloadFile(self, file=packagesTestFile):
         """
@@ -518,10 +521,6 @@
         d.addErrback(lambda x: self.autoclosedeferred.errback(failure.Failure()))
         return self.autoclosedeferred
     def AutoCloseFetcher2(self, x):
-        # File is downloaded, now check fetcher state
-        self.f = self.factory.getBackend(self.backendName).queue.queues.values()[0].fetcher
-        reactor.callLater(0.2, self.AutoCloseFetcher3)
-    def AutoCloseFetcher3(self):
         queues = self.factory.getBackend(self.backendName).queue.queues.values()
         self.assertEquals(len(queues), 0)
         self.autoclosedeferred.callback(None)
@@ -568,18 +567,20 @@
         # We're not testing here that limiting is applied, just that the code runs
         filename, sourcepath, destpath = self.getFilePaths('/packages/apt_0.0.1_test.deb')
         d = self.doRequest(uriData(filename, http.OK, filePath=sourcepath, abortTransfer=True))
+        #d.addCallback(lambda x: reactor.callLater(0.1, self.Abort2, None))
         d.addCallback(self.Abort2)
-        d.addErrback(lambda x: self.testResult.errback(failure.Failure(self.UnknownFailure)))
+        d.addErrback(lambda x: self.testResult.errback(failure.Failure(sys.exc_info())))
         return self.testResult
     def Abort2(self, x):
         "Connection was aborted, check that fetchers were closed"
         log.debug("testAbort2", self.debugname)
-        #backendQueues = self.factory.getBackend(self.backendName).queue.queues
-        #self.assertEquals(len(backendQueues), 0)
+        backendQueues = self.factory.getBackend(self.backendName).queue.queues
+        self.assertEquals(len(backendQueues), 0)
         log.debug("testAbort2a", self.debugname)
-        self.testResult.callback(None)
+        # Final result needs to be triggered after all callbacks have completed
+        reactor.callLater(0.1, self.testResult.callback, None)
     testAbort.timeout = 2
-    testAbort.todo = "Test not yet working"
+    #testAbort.todo = "Test not yet working"
     def testClientDisconnect(self):
 	"Test cleanup if client disconnects before data is sent"
         self.testResult = defer.Deferred()
@@ -616,7 +617,6 @@
 
     def testConnectionRefused(self):
         self.server.stop()
-        reactor.iterate(0.1)
         filename, sourcepath, destpath = self.getFilePaths('/packages/apt_0.0.1_test.deb')
         d = self.doRequest(uriData(filename, http.SERVICE_UNAVAILABLE))
         d.addBoth(lambda x: self.server.start())
@@ -655,9 +655,15 @@
         "Check path containing /../"
         #filename, sourcepath, destpath = self.getFilePaths('/packages/apt_0.0.1_test.deb')
         #return self.doRequest(uriData(filename, http.OK, filePath = os.path.normpath(destpath)))
+        self.testResult = defer.Deferred()
         filename, sourcepath, destpath = self.getFilePaths('/packages/apt_0.0.1_test.deb')
-        return self.doRequest(uriData(filename.replace('/','/foo/../'), http.OK, filePath=sourcepath, abortTransfer=True))
+        d=self.doRequest(uriData(filename.replace('/','/foo/../'), http.OK, filePath=sourcepath, abortTransfer=True))
+
+        # Final result needs to be triggered after all callbacks have completed
+        d.addCallback(lambda x:reactor.callLater(0.1, self.testResult.callback, None))
+        return self.testResult
     testDotDot.timeout = 2
+
         
     #def testTimeout(self):
         #pass



More information about the apt-proxy-devel mailing list