diff -Nru simplestreams-0.1.0-507-g0fd51ba/debian/changelog simplestreams-0.1.0-508-gb936edd/debian/changelog --- simplestreams-0.1.0-507-g0fd51ba/debian/changelog 2021-08-19 17:32:53.000000000 +0000 +++ simplestreams-0.1.0-508-gb936edd/debian/changelog 2021-09-30 13:53:35.000000000 +0000 @@ -1,6 +1,6 @@ -simplestreams (0.1.0-507-g0fd51ba-0ubuntu1~ubuntu16.04.1) xenial; urgency=low +simplestreams (0.1.0-508-gb936edd-0ubuntu1~ubuntu16.04.1) xenial; urgency=low * Auto build. - -- Launchpad Package Builder Thu, 19 Aug 2021 17:32:53 +0000 + -- Launchpad Package Builder Thu, 30 Sep 2021 13:53:35 +0000 diff -Nru simplestreams-0.1.0-507-g0fd51ba/debian/git-build-recipe.manifest simplestreams-0.1.0-508-gb936edd/debian/git-build-recipe.manifest --- simplestreams-0.1.0-507-g0fd51ba/debian/git-build-recipe.manifest 2021-08-19 17:32:53.000000000 +0000 +++ simplestreams-0.1.0-508-gb936edd/debian/git-build-recipe.manifest 2021-09-30 13:53:35.000000000 +0000 @@ -1,2 +1,2 @@ -# git-build-recipe format 0.4 deb-version 0.1.0-507-g0fd51ba-0ubuntu1 -lp:simplestreams git-commit:0fd51ba2339b0907818f386517a075d9c7b54f8d +# git-build-recipe format 0.4 deb-version 0.1.0-508-gb936edd-0ubuntu1 +lp:simplestreams git-commit:b936edd47d936f4c346c6ad6cbc5ad1eff676654 diff -Nru simplestreams-0.1.0-507-g0fd51ba/simplestreams/contentsource.py simplestreams-0.1.0-508-gb936edd/simplestreams/contentsource.py --- simplestreams-0.1.0-507-g0fd51ba/simplestreams/contentsource.py 2021-08-19 17:32:53.000000000 +0000 +++ simplestreams-0.1.0-508-gb936edd/simplestreams/contentsource.py 2021-09-30 13:53:35.000000000 +0000 @@ -32,7 +32,7 @@ urllib_error = urllib_request READ_BUFFER_SIZE = 1024 * 10 -TIMEOUT = 10 +TIMEOUT = 9.05 try: # We try to use requests because we can do gzip encoding with it. @@ -322,6 +322,9 @@ class Urllib2UrlReader(UrlReader): + + timeout = TIMEOUT + def __init__(self, url, offset=None, user_agent=None): (url, username, password) = parse_url_auth(url) self.url = url @@ -339,7 +342,7 @@ req.add_header('User-Agent', user_agent) if offset is not None: req.add_header('Range', 'bytes=%d-' % offset) - self.req = opener(req, timeout=TIMEOUT) + self.req = opener(req, timeout=self.timeout) except urllib_error.HTTPError as e: if e.code == 404: myerr = IOError("Unable to open %s" % url) @@ -355,11 +358,18 @@ class RequestsUrlReader(UrlReader): - # This provides a url reader that supports deflate/gzip encoding - # but still implements 'read'. - # r = RequestsUrlReader(http://example.com) - # r.read(10) - # r.close() + """ + This provides a url reader that supports deflate/gzip encoding + but still implements 'read'. + r = RequestsUrlReader('http://example.com') + r.read(10) + r.close() + """ + + # requests takes a 2-tuple for timeout, the first being a + # connect timeout, the second being a read timeout. + timeout = (TIMEOUT, None) + def __init__(self, url, buflen=None, offset=None, user_agent=None): if requests is None: raise ImportError("Attempt to use RequestsUrlReader " @@ -380,7 +390,7 @@ headers = None self.req = requests.get( - url, stream=True, auth=auth, headers=headers, timeout=TIMEOUT + url, stream=True, auth=auth, headers=headers, timeout=self.timeout ) self.r_iter = None if buflen is None: diff -Nru simplestreams-0.1.0-507-g0fd51ba/tests/unittests/test_contentsource.py simplestreams-0.1.0-508-gb936edd/tests/unittests/test_contentsource.py --- simplestreams-0.1.0-507-g0fd51ba/tests/unittests/test_contentsource.py 2021-08-19 17:32:53.000000000 +0000 +++ simplestreams-0.1.0-508-gb936edd/tests/unittests/test_contentsource.py 2021-09-30 13:53:35.000000000 +0000 @@ -170,6 +170,11 @@ self.assertEqual(data, self.fdata) @skipIf(contentsource.requests is None, "requests not available") + def test_requests_default_timeout(self): + self.assertEqual(contentsource.RequestsUrlReader.timeout, + (contentsource.TIMEOUT, None)) + + @skipIf(contentsource.requests is None, "requests not available") def test_requests_url_read_handles_None(self): scs = self.getcs(self.fpath, contentsource.RequestsUrlReader) data = scs.read(None) @@ -178,7 +183,7 @@ @skipIf(contentsource.requests is None, "requests not available") def test_requests_url_read_handles_negative_size(self): scs = self.getcs(self.fpath, contentsource.RequestsUrlReader) - data = scs.read(None) + data = scs.read(-2) self.assertEqual(data, self.fdata) @skipIf(contentsource.requests is None, "requests not available") @@ -193,6 +198,10 @@ data = scs.read(3) self.assertEqual(data, self.fdata[0:3]) + def test_urllib_default_timeout(self): + self.assertEqual(contentsource.Urllib2UrlReader.timeout, + contentsource.TIMEOUT) + def test_urllib_url_read_handles_None(self): scs = self.getcs(self.fpath, contentsource.Urllib2UrlReader) data = scs.read(None) @@ -200,7 +209,7 @@ def test_urllib_url_read_handles_negative_size(self): scs = self.getcs(self.fpath, contentsource.Urllib2UrlReader) - data = scs.read(None) + data = scs.read(-2) self.assertEqual(data, self.fdata) def test_urllib_url_read_handles_no_size(self):