[apt-proxy-devel] r636 - in trunk: . apt_proxy apt_proxy/test
Chris Halls
halls at costa.debian.org
Thu Sep 28 19:16:20 UTC 2006
Author: halls
Date: Thu Sep 28 19:16:20 2006
New Revision: 636
Modified:
trunk/apt_proxy/cache.py
trunk/apt_proxy/clients.py
trunk/apt_proxy/test/test_cache.py
trunk/apt_proxy/test/test_requests.py
trunk/runtests
Log:
* Merge patches from Mark Sheppard:
* Generate an error if a client attempts to retrieve http://server:9999/ (Closes: #386546)
* When returning an error, generate an HTML page containing the error
* Add test for tilde in URLs
* Add tests for new min_refresh_delay behaviour
Modified: trunk/apt_proxy/cache.py
==============================================================================
--- trunk/apt_proxy/cache.py (original)
+++ trunk/apt_proxy/cache.py Thu Sep 28 19:16:20 2006
@@ -225,14 +225,15 @@
else:
last_access = self.file_mtime
-
+ refresh_delay = self.backend.config.min_refresh_delay
cur_time = time.time()
min_time = cur_time - self.factory.config.min_refresh_delay
+ #print 'del:%s mtime:%s time:%s' % (refresh_delay,self.file_mtime,time.time())
if not self.filetype.mutable:
log.debug("file is immutable: "+self.file_path, 'CacheEntry')
return True
- elif last_access < min_time:
+ elif refresh_delay and time.time() >= self.file_mtime + refresh_delay:
log.debug("file is too old: "+self.file_path, 'CacheEntry')
return False
else:
Modified: trunk/apt_proxy/clients.py
==============================================================================
--- trunk/apt_proxy/clients.py (original)
+++ trunk/apt_proxy/clients.py Thu Sep 28 19:16:20 2006
@@ -87,7 +87,13 @@
log.debug("backend: %s %s" % (self.backend.base, self.backend.uris), 'HttpRequestClient')
- backend_path = self.uri.split('/',2)[2]
+ elements = self.uri.split('/', 2)
+ if len(elements) < 3:
+ log.debug("abort - too few slashes in URI %s" % (self.uri), 'Request')
+ self.finishCode(http.FORBIDDEN, 'too few slashes in URI %s' % (self.uri))
+ return
+
+ backend_path = elements[2]
self.cacheEntry = self.backend.get_cache_entry(backend_path)
if not self.cacheEntry.filetype:
@@ -138,7 +144,8 @@
"Finish the request with a status code and no streamed data"
log.debug("finishCode: %s, %s" % (responseCode, message), 'HttpRequestClient')
self.setResponseCode(responseCode, message)
- self.write("")
+ self.setHeader("content-type", "text/html")
+ self.write("<html><head><title>ERROR %d</title></head><body>ERROR %d - %s</body></html>\n" % (responseCode, responseCode, message))
self.finish()
def finish(self):
Modified: trunk/apt_proxy/test/test_cache.py
==============================================================================
--- trunk/apt_proxy/test/test_cache.py (original)
+++ trunk/apt_proxy/test/test_cache.py Thu Sep 28 19:16:20 2006
@@ -166,7 +166,7 @@
return self.testResult
testVerifyFail.timeout = 2
def VerifyFail2(self, x):
- reactor.iterate(0.1) # Allow process to be reaped
+ #reactor.iterate(0.1) # Allow process to be reaped
self.testResult.callback(None)
def testCheckAgeImmutable(self):
@@ -177,17 +177,35 @@
self.entry.file_mtime = time.time()+1000
self.failUnless(self.entry.check_age())
- def testCheckAgeMutable(self):
+ def immutableEntry(self):
# pretend that testfile.deb is immutable, i.e.
# it will be updated like Packages, Release
self.entry.filetype = copy.deepcopy(self.entry.filetype) # Take a copy of the filetype object
self.entry.filetype.mutable = True
+
+ def testCheckAgeMutable(self):
+ self.immutableEntry()
self.entry.file_mtime = 0
self.failIf(self.entry.check_age())
self.entry.file_mtime = time.time()+1000
self.failUnless(self.entry.check_age())
+ def testMinRefresh(self):
+ self.immutableEntry()
+ min_refresh_delay = 60
+ self.backend.config.min_refresh_delay = min_refresh_delay
+
+ self.entry.file_mtime = 0
+ self.failIf(self.entry.check_age())
+
+ self.entry.file_mtime = time.time() - min_refresh_delay - 60
+ self.failIf(self.entry.check_age())
+
+ self.entry.file_mtime = time.time()
+ self.failUnless(self.entry.check_age())
+
+
def testCreateDirectory(self):
dirname = self.cache_dir+"/files/testdir"
self.assertRaises(OSError, os.stat, dirname) # Will return exception if directory does not exist
Modified: trunk/apt_proxy/test/test_requests.py
==============================================================================
--- trunk/apt_proxy/test/test_requests.py (original)
+++ trunk/apt_proxy/test/test_requests.py Thu Sep 28 19:16:20 2006
@@ -513,6 +513,10 @@
return self.downloadFiles('/packages/empty.txt')
testEmpty.timeout = 2
+ def testTilde(self):
+ return self.downloadFiles('/packages/tilde~test.txt')
+ testTilde.timeout = 10
+
#def testTimeout(self):
#pass
#testTimeout.todo = True
Modified: trunk/runtests
==============================================================================
--- trunk/runtests (original)
+++ trunk/runtests Thu Sep 28 19:16:20 2006
@@ -4,7 +4,7 @@
testfiles="packages/Packages packages/Packages.gz packages/Packages.bz2
verify/invalid-gzip.gz
- packages/apt_0.0.1_test.deb packages/empty.txt
+ packages/apt_0.0.1_test.deb packages/empty.txt packages/tilde~test.txt
apt/apt_0.0.1_test.deb apt/apt_0.0.2_test.deb apt/apt_0.0.3_test.deb"
rootdir="$(cd $(dirname $0); pwd)"
testdir="$rootdir/test_data"
@@ -61,6 +61,7 @@
dpkg-scanpackages . /dev/null | tee Packages | gzip -c > Packages.gz
bzip2 -c < Packages > Packages.bz2
touch empty.txt
+ touch 'tilde~test.txt'
cd ..
mkdir -p $testdir/verify
More information about the apt-proxy-devel
mailing list