From e69dbf58fad6e48f25f6fc070bf752488ccbc27d Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Wed, 18 Jun 2025 16:15:53 -0400 Subject: [PATCH] Setup for getting pages from the cluster. --- release_tests/support/cluster.py | 16 ++++++++++++-- release_tests/support/test_cluster.py | 30 +++++++++++++++++++++++++++ release_tests/support/translate.py | 4 +++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/release_tests/support/cluster.py b/release_tests/support/cluster.py index 0bc671c..8cd922a 100644 --- a/release_tests/support/cluster.py +++ b/release_tests/support/cluster.py @@ -1,5 +1,6 @@ """Create a cluster.""" +from aiohttp import ClientSession from release_tests.support.mttserver import MTTServer from release_tests.support.translate import Translate @@ -7,9 +8,10 @@ from release_tests.support.translate import Translate class Cluster: """cluster of MoreThanText.""" - def __init__(self, num=2): + def __init__(self, num=2, transurl=None, transreplies=None): """initialization""" - self.translate = Translate() + self.translate = Translate(url=transurl, replies=transreplies) + self.session = None self.servers = [] for _ in range(num): self.servers.append(MTTServer()) @@ -19,9 +21,19 @@ class Cluster: await self.translate.start() for server in self.servers: await server.start() + self.session = ClientSession() async def stop(self): """Stops cluster.""" + await self.session.close() await self.translate.stop() for server in self.servers: await server.stop() + + async def get(self, url): + """get from each server in the cluster.""" + replies = [] + for server in self.servers: + async with self.session.get(f"{server.baseurl}{url}") as resp: + replies.append(resp) + return replies diff --git a/release_tests/support/test_cluster.py b/release_tests/support/test_cluster.py index 5f9cabb..db96aba 100644 --- a/release_tests/support/test_cluster.py +++ b/release_tests/support/test_cluster.py @@ -1,7 +1,9 @@ """Testing the the cluster.""" from unittest import IsolatedAsyncioTestCase +from uuid import uuid4 from aiohttp import ClientSession +from release_tests.support import ADDR from release_tests.support.cluster import Cluster @@ -24,3 +26,31 @@ class ClusterTC(IsolatedAsyncioTestCase): text = await resp.text() self.assertEqual(resp.status, 200, text) await cluster.stop() + + async def test_server_numbers(self): + """Control the number of servers.""" + count = 3 + cluster = Cluster(num=count) + self.assertEqual(len(cluster.servers), count) + + async def test_set_translation_mocking(self): + """Is the translation mocking setup""" + transurl = f"/{uuid4()}" + reply = str(uuid4()) + cluster = Cluster(transurl=transurl, transreplies=[reply]) + await cluster.start() + async with ClientSession() as session: + url = f"http://{ADDR}:{cluster.translate.port}{transurl}" + async with session.get(url) as resp: + text = await resp.text() + self.assertEqual(resp.status, 200, text) + await cluster.stop() + + async def test_get_responses(self): + """Get pulls responsre from each server""" + count = 4 + cluster = Cluster(num=count) + await cluster.start() + resp = await cluster.get("/") + self.assertEqual(len(resp), count) + await cluster.stop() diff --git a/release_tests/support/translate.py b/release_tests/support/translate.py index 94273cd..e059ffd 100644 --- a/release_tests/support/translate.py +++ b/release_tests/support/translate.py @@ -7,9 +7,11 @@ from release_tests.support import ADDR, get_port class Translate: """Creates a translation mock for release testing.""" - def __init__(self, url="/", replies=None): + def __init__(self, url=None, replies=None): """Initialize""" + if not url: + url = "/" if not replies: replies = ["hello."]