Setup for getting pages from the cluster.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-06-18 16:15:53 -04:00
parent 7d89f6c7ad
commit e69dbf58fa
3 changed files with 47 additions and 3 deletions

View File

@ -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

View File

@ -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()

View File

@ -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."]