From 56660bba14cf0f2472ab9b6207a6e02ed9ad4899 Mon Sep 17 00:00:00 2001 From: Kwaizer Date: Tue, 28 Jan 2025 13:56:41 +0000 Subject: [PATCH] Fix cache in tests-cacher --- alma_tests_cacher.py | 1 + alma_tests_cacher/cacher.py | 41 +++++++++++++++++----------------- alma_tests_cacher/constants.py | 2 ++ alma_tests_cacher/models.py | 3 +++ alma_tests_cacher/utils.py | 2 +- tests/test_cacher.py | 1 + 6 files changed, 29 insertions(+), 21 deletions(-) diff --git a/alma_tests_cacher.py b/alma_tests_cacher.py index bfb66c4..a217ba1 100644 --- a/alma_tests_cacher.py +++ b/alma_tests_cacher.py @@ -20,6 +20,7 @@ async def main(): bs_api_url=config.bs_api_url, bs_jwt_token=config.bs_jwt_token, gerrit_username=config.gerrit_username, + workdir=config.workdir, ).run() diff --git a/alma_tests_cacher/cacher.py b/alma_tests_cacher/cacher.py index 17e3522..52faaa3 100644 --- a/alma_tests_cacher/cacher.py +++ b/alma_tests_cacher/cacher.py @@ -4,7 +4,6 @@ import re import urllib.parse from pathlib import Path -from tempfile import TemporaryDirectory from typing import List, Optional, Union import aiohttp @@ -14,6 +13,7 @@ DEFAULT_LOGGING_LEVEL, DEFAULT_REQUESTS_LIMIT, DEFAULT_SLEEP_TIMEOUT, + DEFAULT_WORKDIR_PATH, ) from alma_tests_cacher.models import PackageTestRepository, TestRepository from alma_tests_cacher.utils import ( @@ -32,6 +32,7 @@ def __init__( bs_api_url: str = DEFAULT_BS_API_URL, logging_level: str = DEFAULT_LOGGING_LEVEL, gerrit_username: str = '', + workdir: Path = DEFAULT_WORKDIR_PATH, ): self.requests_limit = asyncio.Semaphore(requests_limit) self.sleep_timeout = sleep_timeout @@ -43,6 +44,7 @@ def __init__( self.session_mapping = {} self.logger = self.setup_logger(logging_level) self.gerrit_username = gerrit_username + self.workdir = workdir @staticmethod def setup_logger(logging_level: str) -> logging.Logger: @@ -163,7 +165,7 @@ async def bulk_create_test_folders( async def process_repo( self, repo: TestRepository, - workdir: str, + workdir: Path, ): async with self.requests_limit: remote_test_folders = [] @@ -287,22 +289,21 @@ async def process_repo( self.logger.info('Repo "%s" is processed', repo.name) async def run(self, dry_run: bool = False): - with TemporaryDirectory(prefix='alma-cacher-') as workdir: - while True: - self.logger.info('Start processing test repositories') - try: - repos = await self.get_test_repositories() - await asyncio.gather( - *(self.process_repo(repo, workdir) for repo in repos) - ) - except Exception: - self.logger.exception('Cannot process test repositories:') - finally: - await self.close_sessions() - self.logger.info( - 'All repositories are processed, sleeping %d seconds', - self.sleep_timeout, + while True: + self.logger.info('Start processing test repositories') + try: + repos = await self.get_test_repositories() + await asyncio.gather( + *(self.process_repo(repo, self.workdir) for repo in repos) ) - await asyncio.sleep(self.sleep_timeout) - if dry_run: - break + except Exception: + self.logger.exception('Cannot process test repositories:') + finally: + await self.close_sessions() + self.logger.info( + 'All repositories are processed, sleeping %d seconds', + self.sleep_timeout, + ) + await asyncio.sleep(self.sleep_timeout) + if dry_run: + break diff --git a/alma_tests_cacher/constants.py b/alma_tests_cacher/constants.py index 35e8e62..acc02e2 100644 --- a/alma_tests_cacher/constants.py +++ b/alma_tests_cacher/constants.py @@ -1,7 +1,9 @@ import os +from pathlib import Path DEFAULT_REQUESTS_LIMIT = 5 DEFAULT_SLEEP_TIMEOUT = 600 # 10 minutes DEFAULT_BS_API_URL = 'http://web_server:8000' DEFAULT_LOGGING_LEVEL = 'DEBUG' DEFAULT_CONFIG_PATH = os.getenv('CONFIG_PATH', 'vars.yaml') +DEFAULT_WORKDIR_PATH = Path.cwd().parent diff --git a/alma_tests_cacher/models.py b/alma_tests_cacher/models.py index 1e9a56c..b78f58b 100644 --- a/alma_tests_cacher/models.py +++ b/alma_tests_cacher/models.py @@ -1,3 +1,4 @@ +from pathlib import Path from typing import List, Optional, Union from pydantic import BaseModel, Field @@ -8,6 +9,7 @@ DEFAULT_LOGGING_LEVEL, DEFAULT_REQUESTS_LIMIT, DEFAULT_SLEEP_TIMEOUT, + DEFAULT_WORKDIR_PATH, ) @@ -45,3 +47,4 @@ class Config(BaseSettings): cacher_sentry_dsn: str = "" cacher_sentry_traces_sample_rate: float = 0.2 gerrit_username: str = "" + workdir: Path = DEFAULT_WORKDIR_PATH diff --git a/alma_tests_cacher/utils.py b/alma_tests_cacher/utils.py index 90cb32c..c624fc3 100644 --- a/alma_tests_cacher/utils.py +++ b/alma_tests_cacher/utils.py @@ -27,7 +27,7 @@ def prepare_gerrit_repo_url(url: str, username: str) -> str: def clone_git_repo( - workdir_path: str, + workdir_path: Path, repo_url: str, ) -> Tuple[int, str, str]: return ( diff --git a/tests/test_cacher.py b/tests/test_cacher.py index 72c637e..79b13fb 100644 --- a/tests/test_cacher.py +++ b/tests/test_cacher.py @@ -36,6 +36,7 @@ def cacher(config: Config) -> AlmaTestsCacher: bs_api_url=config.bs_api_url, bs_jwt_token=config.bs_jwt_token, gerrit_username=config.gerrit_username, + workdir=config.workdir, )