77 lines
2.3 KiB
Python
Raw Normal View History

2025-06-17 16:50:54 -04:00
"""Create a cluster."""
from aiohttp import ClientSession
2025-06-24 17:07:04 -04:00
from release_tests.support import SESSION_KEY, get_port
2025-06-17 16:50:54 -04:00
from release_tests.support.mttserver import MTTServer
from release_tests.support.translate import Translate
2025-06-22 17:04:37 -04:00
ADDR = "127.56.0.1"
2025-06-17 16:56:04 -04:00
class Cluster:
2025-06-17 16:50:54 -04:00
"""cluster of MoreThanText."""
def __init__(self, num=2, transurl=None, transreplies=None):
2025-06-17 16:50:54 -04:00
"""initialization"""
2025-06-22 17:04:37 -04:00
self.num = num
self.translate = Translate(url=transurl, replies=transreplies)
2025-06-24 17:07:04 -04:00
self.ports = []
2025-06-17 16:50:54 -04:00
self.servers = []
2025-06-24 17:07:04 -04:00
self.cookies = {}
2025-06-17 16:50:54 -04:00
async def start(self):
"""Start the cluster."""
await self.translate.start()
2025-06-22 17:04:37 -04:00
for _ in range(self.num):
port = get_port()
server = MTTServer("-a", ADDR, "-p", port)
2025-06-17 16:50:54 -04:00
await server.start()
2025-06-22 17:04:37 -04:00
self.servers.append(server)
async def start_a_server(self, *args):
"""Creates a single server."""
self.num = 1
server = MTTServer(*args)
await server.start()
self.servers.append(server)
2025-06-24 17:07:04 -04:00
async def start_a_cluster(self):
"""Start a service cluster."""
for _ in range(self.num):
port = get_port()
while port in self.ports:
port = get_port()
self.ports.append(port)
server = MTTServer("-a", ADDR, "-p", port)
await server.start()
self.servers.append(server)
2025-06-17 16:50:54 -04:00
async def stop(self):
"""Stops cluster."""
await self.translate.stop()
for server in self.servers:
await server.stop()
2025-06-22 17:04:37 -04:00
async def cleanup(self):
"""Cleans up the cluster."""
await self.stop()
for server in self.servers:
await server.cleanup()
2025-06-24 17:07:04 -04:00
await server.stop()
2025-06-22 17:04:37 -04:00
async def get(self, url):
"""get from each server in the cluster."""
replies = []
for server in self.servers:
2025-06-24 17:07:04 -04:00
async with ClientSession() as session:
async with session.get(
f"{server.baseurl}{url}", cookies=self.cookies
) as resp:
replies.append(resp)
return replies
2025-06-24 17:07:04 -04:00
async def set_session(self):
"""Sets up the session ids for the requests."""
results = await self.get("/")
self.cookies[SESSION_KEY] = results[0].cookies[SESSION_KEY].value