"""Fixture for setting up a single server.""" from asyncio import create_subprocess_exec, get_event_loop, sleep from pathlib import Path class Server: """Setup a single server.""" def __init__(self): """Initialization of a server.""" self.settings = {} self.settings["address"] = "127.0.0.1" self.settings["port"] = 9090 self.process = None self.loop = get_event_loop() async def __start(self): """async start of the server.""" self.process = await create_subprocess_exec( Path.cwd().joinpath("target", "release", "morethantext_web") ) await sleep(1) async def __stop(self): """async stop of the server.""" if self.process is not None and self.process.returncode is None: self.process.terminate() await self.process.wait() def start(self): """Start the server.""" self.loop.run_until_complete(self.__start()) def stop(self): """Stop the server.""" self.loop.run_until_complete(self.__stop()) def destroy(self): """Removes the server instance.""" self.stop()