diff options
| author | Colin Watson <cjwatson@canonical.com> | 2012-11-19 13:00:55 +0000 |
|---|---|---|
| committer | Colin Watson <cjwatson@canonical.com> | 2012-11-19 13:00:55 +0000 |
| commit | 386f2f98ac0860d3d34c60127232703fb0122001 (patch) | |
| tree | dd37e09295076c191c98876085955d6e8f0c833c /tests | |
| parent | 024b5fda24482226d1ee2eafb297285ebd13e5fa (diff) | |
| download | python-apt-386f2f98ac0860d3d34c60127232703fb0122001.tar.gz | |
Try successive keyserver ports if 19191 is already in use.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_auth.py | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/tests/test_auth.py b/tests/test_auth.py index 183752ba..be7f41a6 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -1,6 +1,10 @@ #!/usr/bin/env python +from __future__ import print_function + import contextlib +import errno +import itertools import os import shutil import sys @@ -221,7 +225,7 @@ class TestAuthKeys(TestCase): with self._discard_stderr(): apt.auth.add_key_from_keyserver( "0101010178F7FE5C3E65D8AF8B48AD6246925553", - "hkp://localhost:19191") + "hkp://localhost:%d" % self.keyserver_port) self.assertTrue( str(cm.exception).startswith("Fingerprints do not match")) @@ -233,7 +237,7 @@ class TestAuthKeys(TestCase): with self._discard_stderr(): apt.auth.add_key_from_keyserver( "0xa1bD8E9D78F7FE5C3E65D8AF8B48AD6246925553", - "hkp://localhost:19191") + "hkp://localhost:%d" % self.keyserver_port) ret = apt.auth.list_keys() self.assertEqual(len(ret), 1) @@ -246,6 +250,8 @@ class TestAuthKeys(TestCase): def _start_keyserver(self): """Start a fake keyserver on http://localhost:19191 + If port 19191 is unavailable, try successive ports until one is. + Store the port actually in use in self.keyserver_port. Thanks pitti. """ dir = tempfile.mkdtemp() @@ -254,15 +260,31 @@ class TestAuthKeys(TestCase): with open(os.path.join(dir, "pks", "lookup"), "w") as key_file: key_file.write(WHEEZY_KEY) + keyserver_pipe = os.pipe() self.keyserver_pid = os.fork() if self.keyserver_pid == 0: + os.close(keyserver_pipe[0]) # quiesce server log os.dup2(os.open('/dev/null', os.O_WRONLY), sys.stderr.fileno()) os.chdir(dir) - httpd = HTTPServer(('localhost', 19191), HTTPRequestHandler) + for port in itertools.count(19191): + try: + httpd = HTTPServer(('localhost', port), HTTPRequestHandler) + break + except IOError as e: + if e.errno != errno.EADDRINUSE: + raise + keyserver_write = os.fdopen(keyserver_pipe[1], 'w') + print(port, file=keyserver_write) + keyserver_write.close() httpd.serve_forever() os._exit(0) + os.close(keyserver_pipe[1]) + keyserver_read = os.fdopen(keyserver_pipe[0]) + self.keyserver_port = int(keyserver_read.readline()) + keyserver_read.close() + # wait a bit until server is ready time.sleep(0.5) |
