Added initial cluster setup.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
parent
2066084c13
commit
f73d091dc2
26
release_tests/support/cluster.py
Normal file
26
release_tests/support/cluster.py
Normal 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()
|
||||||
@ -1,6 +1,7 @@
|
|||||||
"""Starts and runs releasse version of MoreThanText server."""
|
"""Starts and runs releasse version of MoreThanText server."""
|
||||||
|
|
||||||
from asyncio import create_subprocess_exec
|
from asyncio import create_subprocess_exec
|
||||||
|
from socket import AF_INET, SOCK_STREAM, socket
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from release_tests.support import ADDR, get_port
|
from release_tests.support import ADDR, get_port
|
||||||
|
|
||||||
@ -24,3 +25,13 @@ class MTTServer:
|
|||||||
async def start(self):
|
async def start(self):
|
||||||
"""Starts the server."""
|
"""Starts the server."""
|
||||||
self.server = await create_subprocess_exec(*self.cmd)
|
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()
|
||||||
|
|||||||
25
release_tests/support/test_cluster.py
Normal file
25
release_tests/support/test_cluster.py
Normal 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()
|
||||||
@ -7,9 +7,12 @@ from release_tests.support import ADDR, get_port
|
|||||||
class Translate:
|
class Translate:
|
||||||
"""Creates a translation mock for release testing."""
|
"""Creates a translation mock for release testing."""
|
||||||
|
|
||||||
def __init__(self, url="/", replies=["Hello"]):
|
def __init__(self, url="/", replies=[]):
|
||||||
"""Initialize"""
|
"""Initialize"""
|
||||||
|
|
||||||
|
if not replies:
|
||||||
|
replies = ["hello."]
|
||||||
|
|
||||||
async def reply(_):
|
async def reply(_):
|
||||||
"""response to return"""
|
"""response to return"""
|
||||||
nonlocal replies
|
nonlocal replies
|
||||||
@ -33,3 +36,7 @@ class Translate:
|
|||||||
await self.runner.setup()
|
await self.runner.setup()
|
||||||
site = web.TCPSite(self.runner, ADDR, self.port)
|
site = web.TCPSite(self.runner, ADDR, self.port)
|
||||||
await site.start()
|
await site.start()
|
||||||
|
|
||||||
|
async def stop(self):
|
||||||
|
"""Stops the application."""
|
||||||
|
await self.runner.cleanup()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user