X-Git-Url: http://www.average.org/gitweb/?a=blobdiff_plain;f=test%2Fcommon.py;fp=test%2Fcommon.py;h=434fef947adf0327724e5a9c1caf28388fb9491f;hb=099a8195d469486fa9347cc5faaadd3614a2a445;hp=38c59d588e72c87e1683cb2c4a3dc9d3853ae392;hpb=40cb094a4abc7a375b796d318fab7c05a5e9bd1a;p=loctrkd.git diff --git a/test/common.py b/test/common.py index 38c59d5..434fef9 100644 --- a/test/common.py +++ b/test/common.py @@ -1,7 +1,7 @@ """ Common housekeeping for tests that rely on daemons """ from configparser import ConfigParser, SectionProxy -from contextlib import closing +from contextlib import closing, ExitStack from importlib import import_module from multiprocessing import Process from os import kill, unlink @@ -20,17 +20,18 @@ from time import sleep from typing import Optional from unittest import TestCase +NUMPORTS = 3 + class TestWithServers(TestCase): - def setUp(self, *args: str) -> None: - with closing(socket(AF_INET6, SOCK_DGRAM)) as sock1, closing( - socket(AF_INET6, SOCK_DGRAM) - ) as sock2: - freeports = [] - for sock in sock1, sock2: - sock.bind(("", 0)) - sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) - freeports.append(sock.getsockname()[1]) + def setUp(self, *args: str, httpd: bool = False) -> None: + freeports = [] + with ExitStack() as stack: + for _ in range(NUMPORTS): + sk = stack.enter_context(closing(socket(AF_INET6, SOCK_DGRAM))) + sk.bind(("", 0)) + sk.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) + freeports.append(sk.getsockname()[1]) _, self.tmpfilebase = mkstemp() self.conf = ConfigParser() self.conf["collector"] = { @@ -60,6 +61,8 @@ class TestWithServers(TestCase): p = Process(target=cls.runserver, args=(self.conf,), kwargs=kwargs) p.start() self.children.append((srvname, p)) + if httpd: + pass sleep(1) def tearDown(self) -> None: