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:56:04 -04:00
|
|
|
# delays the return untul the serverr is responding.
|
2025-06-17 16:50:54 -04:00
|
|
|
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()
|