diff --git a/pkgs/clan-cli/clan_cli/config.py b/pkgs/clan-cli/clan_cli/config.py index e45f338..1891573 100644 --- a/pkgs/clan-cli/clan_cli/config.py +++ b/pkgs/clan-cli/clan_cli/config.py @@ -1,12 +1,8 @@ -import dataclasses - - -@dataclasses.dataclass -class Config: - host: str - port_dlg: int - port_ap: int - port_client_base: int - - -config = Config(host="127.0.0.1", port_dlg=6000, port_ap=6600, port_client_base=7000) +host = "127.0.0.1" +port_dlg = 7000 +port_ap = 7500 +port_client_base = 8000 +dlg_url = f"http://{host}:{port_dlg}/docs" +ap_url = f"http://{host}:{port_ap}/docs" +c1_url = f"http://{host}:{port_client_base}/docs" +c2_url = f"http://{host}:{port_client_base + 1}/docs" diff --git a/pkgs/clan-cli/clan_cli/emulate_fastapi.py b/pkgs/clan-cli/clan_cli/emulate_fastapi.py index 496ccb8..982a1fb 100644 --- a/pkgs/clan-cli/clan_cli/emulate_fastapi.py +++ b/pkgs/clan-cli/clan_cli/emulate_fastapi.py @@ -6,14 +6,13 @@ from datetime import datetime from fastapi import FastAPI from fastapi.responses import HTMLResponse, JSONResponse +import clan_cli.config as config from clan_cli.webui.schemas import Resolution -from .config import config - -app_dlg = FastAPI() -app_ap = FastAPI() -app_c1 = FastAPI() -app_c2 = FastAPI() +app_dlg = FastAPI(swagger_ui_parameters={"tryItOutEnabled": True}) +app_ap = FastAPI(swagger_ui_parameters={"tryItOutEnabled": True}) +app_c1 = FastAPI(swagger_ui_parameters={"tryItOutEnabled": True}) +app_c2 = FastAPI(swagger_ui_parameters={"tryItOutEnabled": True}) apps = [ (app_dlg, config.port_dlg), @@ -24,21 +23,41 @@ apps = [ #### HEALTHCHECK +@app_c1.get("/") +async def root_c1() -> str: + return "C1 is alive" + + @app_c1.get("/health") async def healthcheck_c1() -> str: return "200 OK" +@app_c2.get("/") +async def root_c2() -> str: + return "C2 is alive" + + @app_c2.get("/health") async def healthcheck_c2() -> str: return "200 OK" +@app_dlg.get("/") +async def root_dlg() -> str: + return "DLG is alive" + + @app_dlg.get("/health") async def healthcheck_dlg() -> str: return "200 OK" +@app_ap.get("/") +async def root_ap() -> str: + return "AP is alive" + + @app_ap.get("/health") async def healthcheck_ap() -> str: return "200 OK" diff --git a/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py b/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py index 326682d..96fadc8 100644 --- a/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py +++ b/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py @@ -4,6 +4,7 @@ from typing import List, Optional import httpx from fastapi import APIRouter, BackgroundTasks, Depends, Query +from fastapi.responses import HTMLResponse from sqlalchemy.orm import Session from ...errors import ClanError @@ -291,3 +292,31 @@ def get_all_eventmessages( ) -> List[sql_models.Eventmessage]: eventmessages = sql_crud.get_eventmessages(db, skip=skip, limit=limit) return eventmessages + + +############################## +# # +# EMULATED API ENDPOINTS # +# # +############################## +@router.get("/emulate", response_class=HTMLResponse) +@router.get("/emu", response_class=HTMLResponse) +def get_emulated_enpoints() -> HTMLResponse: + from clan_cli.config import ap_url, c1_url, c2_url, dlg_url + + html_content = f""" + +
+Emulated API endpoints for testing purposes.
+DLG: {dlg_url}
+AP: {ap_url}
+C1: {c1_url}
+C2: {c2_url}
+ + + """ + return HTMLResponse(content=html_content, status_code=200) diff --git a/pkgs/clan-cli/clan_cli/webui/server.py b/pkgs/clan-cli/clan_cli/webui/server.py index cfc7ab5..4dce764 100644 --- a/pkgs/clan-cli/clan_cli/webui/server.py +++ b/pkgs/clan-cli/clan_cli/webui/server.py @@ -15,6 +15,7 @@ import uvicorn from pydantic import AnyUrl, IPvAnyAddress from pydantic.tools import parse_obj_as +import clan_cli.config as config from clan_cli.emulate_fastapi import apps, get_health from clan_cli.errors import ClanError @@ -128,8 +129,8 @@ def start_server(args: argparse.Namespace) -> None: cmd = ["pytest", "-s", str(test_db_api)] subprocess.run(cmd, check=True) + config.host = args.host if args.emulate: - urls = list() # start servers as processes (dlg, ap, c1 and c2 for tests) for app, port in apps: proc = mp.Process( @@ -143,9 +144,7 @@ def start_server(args: argparse.Namespace) -> None: daemon=True, ) proc.start() - urls.append(f"http://{args.host}:{port}") - # check server health - for url in urls: + url = f"http://{args.host}:{port}" res = get_health(url=url + "/health") if res is None: raise Exception(f"Couldn't reach {url} after starting server") diff --git a/pkgs/clan-cli/tests/api.py b/pkgs/clan-cli/tests/api.py index f3c600a..5a3f376 100644 --- a/pkgs/clan-cli/tests/api.py +++ b/pkgs/clan-cli/tests/api.py @@ -11,7 +11,7 @@ from fastapi.testclient import TestClient from openapi_client import ApiClient, Configuration from ports import PortFunction -from clan_cli.config import config +import clan_cli.config as config from clan_cli.webui.app import app diff --git a/pkgs/clan-cli/tests/test_db_api.py b/pkgs/clan-cli/tests/test_db_api.py index 6961f20..6e2911b 100644 --- a/pkgs/clan-cli/tests/test_db_api.py +++ b/pkgs/clan-cli/tests/test_db_api.py @@ -18,7 +18,7 @@ from openapi_client.models import ( Status, ) -from clan_cli.config import config +import clan_cli.config as config random.seed(42)