]> www.average.org Git - loctrkd.git/commitdiff
test: better aquisition of free ports
authorEugene Crosser <crosser@average.org>
Wed, 22 Jun 2022 14:12:13 +0000 (16:12 +0200)
committerEugene Crosser <crosser@average.org>
Wed, 22 Jun 2022 14:12:13 +0000 (16:12 +0200)
test/common.py
test/test_fuzz.py
test/test_storage.py

index 38c59d588e72c87e1683cb2c4a3dc9d3853ae392..434fef947adf0327724e5a9c1caf28388fb9491f 100644 (file)
@@ -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:
index 4ac6f894482343c69df858d901eb87978538f56f..ecedb2ae6dc34c4c4320ac95488c5170cdbcbdb0 100644 (file)
@@ -3,6 +3,7 @@
 from random import Random
 from socket import getaddrinfo, socket, AF_INET, SOCK_STREAM
 from time import sleep
+from typing import Any
 import unittest
 from .common import send_and_drain, TestWithServers
 
@@ -10,7 +11,7 @@ REPEAT: int = 1000000
 
 
 class Fuzz(TestWithServers):
-    def setUp(self, *args: str) -> None:
+    def setUp(self, *args: str, **kwargs: Any) -> None:
         super().setUp("collector")
         self.rnd = Random()
         for fam, typ, pro, cnm, skadr in getaddrinfo(
index 994e3b1bf840b9ac7fa63d95221ed5f4c69dda8e..80ccba61fed7ad87a373162bcdea545526c77030 100644 (file)
@@ -4,13 +4,14 @@ from random import Random
 from socket import getaddrinfo, socket, AF_INET, SOCK_STREAM
 from sqlite3 import connect, Row
 from time import sleep
+from typing import Any
 import unittest
 from .common import send_and_drain, TestWithServers
 from gps303.gps303proto import *
 
 
 class Storage(TestWithServers):
-    def setUp(self, *args: str) -> None:
+    def setUp(self, *args: str, **kwargs: Any) -> None:
         super().setUp("collector", "storage", "lookaside", "termconfig")
         for fam, typ, pro, cnm, skadr in getaddrinfo(
             "127.0.0.1",