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."""
|
||||
|
||||
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()
|
||||
|
||||
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:
|
||||
"""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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user