38 lines
1.1 KiB
Python
Raw Normal View History

2025-06-16 12:32:20 -04:00
"""Starts and runs releasse version of MoreThanText server."""
from asyncio import create_subprocess_exec
2025-06-17 16:50:54 -04:00
from socket import AF_INET, SOCK_STREAM, socket
2025-06-16 12:32:20 -04:00
from pathlib import Path
from release_tests.support import ADDR, get_port
EXECUTABLE = Path.cwd().joinpath("target", "release", "morethantext")
class MTTServer:
"""Runs a MoreThanText server."""
def __init__(self):
"""Initialization"""
self.port = get_port()
self.cmd = [EXECUTABLE, "-a", ADDR, "-p", str(self.port)]
self.server = None
@property
def baseurl(self):
"""URL to server"""
return f"http://{ADDR}:{self.port}"
async def start(self):
"""Starts the server."""
self.server = await create_subprocess_exec(*self.cmd)
2025-06-17 16:50:54 -04:00
# delays the return untul the serverr is responding.
with socket(AF_INET, SOCK_STREAM) as soc:
while soc.connect_ex((ADDR, self.port)) != 0:
continue
async def stop(self):
"""Stops the server."""
if self.server:
self.server.terminate()
await self.server.wait()