Added initial cluster setup.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-06-17 16:50:54 -04:00
parent 2066084c13
commit f73d091dc2
5 changed files with 70 additions and 1 deletions

View File

@ -0,0 +1,26 @@
"""Create a cluster."""
from release_tests.support.mttserver import MTTServer
from release_tests.support.translate import Translate
class Cluster():
"""cluster of MoreThanText."""
def __init__(self, num=2):
"""initialization"""
self.translate = Translate()
self.servers = []
for _ in range(num):
self.servers.append(MTTServer())
async def start(self):
"""Start the cluster."""
await self.translate.start()
for server in self.servers:
await server.start()
async def stop(self):
"""Stops cluster."""
await self.translate.stop()
for server in self.servers:
await server.stop()

View File

@ -1,6 +1,7 @@
"""Starts and runs releasse version of MoreThanText server."""
from asyncio import create_subprocess_exec
from socket import AF_INET, SOCK_STREAM, socket
from pathlib import Path
from release_tests.support import ADDR, get_port
@ -24,3 +25,13 @@ class MTTServer:
async def start(self):
"""Starts the server."""
self.server = await create_subprocess_exec(*self.cmd)
# 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()

View File

@ -0,0 +1,25 @@
"""Testing the the cluster."""
from unittest import IsolatedAsyncioTestCase
from aiohttp import ClientSession
from release_tests.support.cluster import Cluster
class ClusterTC(IsolatedAsyncioTestCase):
"""Test for the MoreThanText cluster."""
async def test_create_default_cluster(self):
"""create a complete two server cluster."""
cluster = Cluster()
await cluster.start()
async with ClientSession() as session:
url = cluster.translate.baseurl
async with session.get(url) as resp:
text = await resp.text()
self.assertEqual(resp.status, 200, text)
self.assertEqual(len(cluster.servers), 2)
for server in cluster.servers:
url = server.baseurl
async with session.get(url) as resp:
text = await resp.text()
self.assertEqual(resp.status, 200, text)
await cluster.stop()

View File

@ -7,9 +7,12 @@ from release_tests.support import ADDR, get_port
class Translate:
"""Creates a translation mock for release testing."""
def __init__(self, url="/", replies=["Hello"]):
def __init__(self, url="/", replies=[]):
"""Initialize"""
if not replies:
replies = ["hello."]
async def reply(_):
"""response to return"""
nonlocal replies
@ -33,3 +36,7 @@ class Translate:
await self.runner.setup()
site = web.TCPSite(self.runner, ADDR, self.port)
await site.start()
async def stop(self):
"""Stops the application."""
await self.runner.cleanup()