[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