X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=test%2Fcommon.py;fp=test%2Fcommon.py;h=131169ccedb80b42d3864f5fe055c191c303261f;hp=7a863106309e61072511641a7a975f5e344abbdf;hb=f55e1a18723a3b3aca34e9a4b8b878860f951e52;hpb=042f003133249fb38d87d92faa9c730833d14904 diff --git a/test/common.py b/test/common.py index 7a86310..131169c 100644 --- a/test/common.py +++ b/test/common.py @@ -9,18 +9,22 @@ from multiprocessing import Process from os import kill, unlink from signal import SIGINT from socket import ( + AF_INET, AF_INET6, + getaddrinfo, MSG_DONTWAIT, SOCK_DGRAM, + SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR, socket, SocketType, ) from sys import exit, stderr +from random import Random from tempfile import mkstemp from time import sleep -from typing import Optional +from typing import Any, Optional from unittest import TestCase from loctrkd.common import init_protocols @@ -117,6 +121,28 @@ class TestWithServers(TestCase): pass +class Fuzz(TestWithServers): + def setUp(self, *args: str, **kwargs: Any) -> None: + super().setUp("collector") + self.rnd = Random() + for fam, typ, pro, cnm, skadr in getaddrinfo( + "127.0.0.1", + self.conf.getint("collector", "port"), + family=AF_INET, + type=SOCK_STREAM, + ): + break # Just take the first element + self.sock = socket(AF_INET, SOCK_STREAM) + self.sock.connect(skadr) + + def tearDown(self) -> None: + sleep(1) # give collector some time + send_and_drain(self.sock, None) + self.sock.close() + sleep(1) # Let the server close their side + super().tearDown() + + def send_and_drain(sock: SocketType, buf: Optional[bytes]) -> None: if buf is not None: sock.send(buf)