index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | test/pacman/pmtest.py | 28 |
diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py index 8669f31d..7e62fc92 100644 --- a/test/pacman/pmtest.py +++ b/test/pacman/pmtest.py @@ -20,9 +20,11 @@ import shlex import shutil import stat import subprocess +import threading import time import pmrule +import pmserve import pmdb import pmfile import tap @@ -47,6 +49,8 @@ class pmtest(object): "--hookdir", self.hookdir(), "--cachedir", self.cachedir()] + self.http_servers = [] + def __str__(self): return "name = %s\n" \ "testname = %s\n" \ @@ -285,6 +289,8 @@ class pmtest(object): output = None vprint("\trunning: %s" % " ".join(cmd)) + self.start_http_servers() + # Change to the tmp dir before running pacman, so that local package # archives are made available more easily. time_start = time.time() @@ -293,6 +299,8 @@ class pmtest(object): time_end = time.time() vprint("\ttime elapsed: %.2fs" % (time_end - time_start)) + self.stop_http_servers() + if output: output.close() @@ -330,3 +338,23 @@ class pmtest(object): def hookdir(self): return os.path.join(self.root, util.PM_HOOKDIR) + + def add_simple_http_server(self, responses): + logfile = lambda h: open(os.path.join(self.root, 'var/log/httpd.log'), 'a') + handler = type(self.name + 'HTTPServer', + (pmserve.pmStringHTTPRequestHandler,), + {'responses': responses, 'logfile': logfile}) + server = pmserve.pmHTTPServer(('127.0.0.1', 0), handler) + self.http_servers.append(server) + host, port = server.server_address[:2] + return 'http://%s:%d' % (host, port) + + def start_http_servers(self): + for srv in self.http_servers: + thread = threading.Thread(target=srv.serve_forever) + thread.daemon = True + thread.start() + + def stop_http_servers(self): + for srv in self.http_servers: + srv.shutdown() |