From a2aeadd0caf069a3178c9f856d399bcf00024e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Tue, 3 Dec 2024 12:18:56 +0100 Subject: [PATCH] Refactor file_server to run in a netns --- test/infamy/file_server.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/test/infamy/file_server.py b/test/infamy/file_server.py index 68de4d9c9..f450f49d7 100644 --- a/test/infamy/file_server.py +++ b/test/infamy/file_server.py @@ -5,24 +5,28 @@ import functools import http.server import socket +from infamy.util import until - -class FileServer(http.server.HTTPServer): +class FileServer: """Open web server on (address, port) serving files from directory""" - class RequestHandler(http.server.SimpleHTTPRequestHandler): - def log_message(self, *args, **kwargs): - pass + def __init__(self, netns, server_address, directory): + self.server_address = server_address + self.directory = directory + self.netns = netns + self.process = None - address_family = socket.AF_INET6 + def start(self): + cmd = f"httpd -p {self.server_address[0]}:{self.server_address[1]} -f -h {self.directory}" + self.process = self.netns.popen(cmd.split(" ")) - def __init__(self, server_address, directory): - rh = functools.partial(FileServer.RequestHandler, directory=directory) - self.__tp = concurrent.futures.ThreadPoolExecutor(max_workers=1) - super().__init__(server_address, rh) + def stop(self): + if self.process: + self.process.terminate() + self.process.wait() + self.process = None def __enter__(self): - self.__tp.submit(self.serve_forever) + self.start() def __exit__(self, _, __, ___): - self.shutdown() - self.__tp.shutdown() + self.stop()