From faa67e94086b9a794e5d680e919f7e121aef9cf1 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Fri, 6 Oct 2023 19:06:04 +0530 Subject: [PATCH] chore: use ftest_common --- Dockerfile | 7 ++++++ common/__init__.py | 5 ---- common/env.py | 23 ----------------- common/logger.py | 54 ---------------------------------------- common/obj.py | 18 -------------- common/webfinger.py | 33 ------------------------ features/environment.py | 5 ++-- features/steps/object.py | 8 +++--- requirements.txt | 10 +++++++- 9 files changed, 23 insertions(+), 140 deletions(-) delete mode 100644 common/__init__.py delete mode 100644 common/env.py delete mode 100644 common/logger.py delete mode 100644 common/obj.py delete mode 100644 common/webfinger.py diff --git a/Dockerfile b/Dockerfile index 220816b..257e74c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,8 @@ +FROM python as builder +WORKDIR /src/ +RUN git clone https://git.batsense.net/ForgeFlux/ftest-common-py . +RUN pip install -r requirements.txt +RUN python3 -m build FROM python LABEL org.opencontainers.image.source https://git.batsense.net/ForgeFlux/ap-test @@ -7,6 +12,8 @@ RUN apt-get update && apt-get install -y ca-certificates git WORKDIR /src/ COPY requirements.txt . RUN pip install -r requirements.txt +COPY --from=builder /src/dist/ftest_common-0.0.1-py3-none-any.whl . +RUN pip install ./ftest_common-0.0.1-py3-none-any.whl USER ap WORKDIR /home/ap diff --git a/common/__init__.py b/common/__init__.py deleted file mode 100644 index 5cfbf09..0000000 --- a/common/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Aravinth Manivannan -# -# SPDX-License-Identifier: AGPL-3.0-or-later - -from .logger import logger diff --git a/common/env.py b/common/env.py deleted file mode 100644 index 8d29811..0000000 --- a/common/env.py +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Aravinth Manivannan -# -# SPDX-License-Identifier: AGPL-3.0-or-later - -import os - -from .logger import logger - - -def get_env(name) -> str: - env = FTEST_AUTH = os.environ.get(name) - logger.info(f"Environment: {name}: {env}") - if env is None: - raise Exception( - f"Please set environment variable {name}. See https://git.batsense.net/ForgeFlux/nodeinfo-test#environment-variables" - ) - return env - - -FTEST_AUTH = get_env("FTEST_AUTH") -FTEST_HOST = get_env("FTEST_HOST") -FTEST_USER = get_env("FTEST_USER") -TARGET_HOST = get_env("FTEST_TARGET_HOST") diff --git a/common/logger.py b/common/logger.py deleted file mode 100644 index 135f76c..0000000 --- a/common/logger.py +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Aravinth Manivannan -# -# SPDX-License-Identifier: AGPL-3.0-or-later -from urllib.parse import urlparse, urlunparse -import logging - -import requests - -LOG_FILE = "ap.log" - - -def configure_logger(): - logger = logging.getLogger("ap") - logger.setLevel(logging.DEBUG) - fh = logging.FileHandler(LOG_FILE) - fh.setLevel(logging.DEBUG) - ch = logging.StreamHandler() - ch.setLevel(logging.DEBUG) - formatter = logging.Formatter( - "%(asctime)s - %(name)s - %(levelname)s - %(message)s" - ) - fh.setFormatter(formatter) - ch.setFormatter(formatter) - logger.addHandler(fh) - logger.addHandler(ch) - return logger - - -logger = configure_logger() - - -def upload_logs_to_ftest(success: bool, logs: str): - from .env import FTEST_HOST, FTEST_AUTH - - parsed_ftest_host = urlparse(FTEST_HOST) - ftest = urlunparse( - ( - parsed_ftest_host.scheme, - parsed_ftest_host.netloc, - f"/api/v1/{FTEST_AUTH}/results", - "", - "", - "", - ) - ) - logger.info(f"Uploading logs to ftest server {ftest}") - - payload = {"success": success, "logs": logs} - - res = requests.post(ftest, json=payload, headers={"Origin": "http://example.org"}) - if res.status_code == 200: - logger.info("Upload successful") - else: - print(res) diff --git a/common/obj.py b/common/obj.py deleted file mode 100644 index b7f69e7..0000000 --- a/common/obj.py +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Aravinth Manivannan -# -# SPDX-License-Identifier: AGPL-3.0-or-later - -import os - -import requests - -from .logger import logger - - -def get_ap_obj(url): - logger.info(f"Getting object: {url}") - res = requests.get(url, headers={"Accept": "application/activity+json"}) - msg = f"AP server response:\n\nSTATUS: {res.status_code}\n\nHEADERS:\n {res.headers}\n\nRESPONSE PAYLOAD:\n{res.text}" - logger.debug(msg) - assert res.status_code == 200, f"Request FAILURE. {msg}" - return res.json() diff --git a/common/webfinger.py b/common/webfinger.py deleted file mode 100644 index 2fefe98..0000000 --- a/common/webfinger.py +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Aravinth Manivannan -# -# SPDX-License-Identifier: AGPL-3.0-or-later - -from urllib.parse import urlparse, urlunparse - -import requests - -from .logger import logger - - -def get_webfinger(): - from .env import TARGET_HOST, FTEST_USER - - parsed_target_host = urlparse(TARGET_HOST) - webfinger = urlunparse( - ( - parsed_target_host.scheme, - parsed_target_host.netloc, - "/.well-known/webfinger", - "", - f"resource=acct:{FTEST_USER}", - "", - ) - ) - logger.info(f"Query webfinger: {webfinger}") - res = requests.get(webfinger) - logger.debug( - f"webfinger response:\n\nSTATUS: {res.status_code}\n\nHEADERS:\n {res.headers}\n\nRESPONSE PAYLOAD:\n{res.json()}" - ) - assert res.status_code == 200 - logger.info("[SUCCESS] webfinger query response is HTTP 200") - return res.json() diff --git a/features/environment.py b/features/environment.py index 619d648..8085462 100644 --- a/features/environment.py +++ b/features/environment.py @@ -1,6 +1,6 @@ from behave import * -from common.logger import upload_logs_to_ftest +from ftest_common.logger import upload_logs_to_ftest def before_all(context): @@ -37,4 +37,5 @@ def after_all(context): print(log) logs += log - upload_logs_to_ftest(score == max_score, logs) + +# upload_logs_to_ftest(score == max_score, logs) diff --git a/features/steps/object.py b/features/steps/object.py index e73b07a..d4ffbef 100644 --- a/features/steps/object.py +++ b/features/steps/object.py @@ -8,10 +8,10 @@ from urllib.parse import urlparse, urlunparse import requests from behave import * -from common.env import FTEST_USER -from common import logger -from common.webfinger import get_webfinger -from common.obj import get_ap_obj +from ftest_common.env import FTEST_USER +from ftest_common.logger import logger +from ftest_common.webfinger import get_webfinger +from ftest_common.obj import get_ap_obj @given("A Fediverse server") diff --git a/requirements.txt b/requirements.txt index 6ef5421..2e27848 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,22 @@ attrs==23.1.0 behave==1.2.6 +blinker==1.6.2 certifi==2023.7.22 charset-normalizer==3.3.0 +click==8.1.7 +Flask==3.0.0 +Flask-Cors==4.0.0 idna==3.4 +itsdangerous==2.1.2 +Jinja2==3.1.2 jsonschema==4.19.1 jsonschema-specifications==2023.7.1 +MarkupSafe==2.1.3 parse==1.19.1 parse-type==0.6.2 referencing==0.30.2 requests==2.31.0 rpds-py==0.10.3 six==1.16.0 -urllib3==2.0.5 +urllib3==2.0.6 +Werkzeug==3.0.0