From 0ac38066402762dc5fa24f2ffa2170681a6eddb1 Mon Sep 17 00:00:00 2001 From: Max Nanis Date: Thu, 10 Sep 2026 16:59:43 -0700 Subject: http/managers/models green. --- tests/conftest.py | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'tests/conftest.py') diff --git a/tests/conftest.py b/tests/conftest.py index ca6661a..7a74fa0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,17 +6,22 @@ import sys from collections.abc import Callable, Generator from datetime import UTC, datetime from pathlib import Path -from typing import TYPE_CHECKING +from random import randint +from typing import TYPE_CHECKING, Any from uuid import uuid4 import pytest +import redis +from fastapi.testclient import TestClient from generalresearch.models.custom_types import InternalHostname, PostgresDict from generalresearch.pg_helper import PostgresConfig, PostgresDsn +from generalresearch.redis_helper import RedisConfig from mypy_boto3_mturk import MTurkClient from pydantic import TypeAdapter from pytest import TempPathFactory -from jb.decorators import CLIENT_CONFIG +from jb.decorators import CLIENT_CONFIG, get_redis_config +from jb.main import app from tests import generate_amt_id if TYPE_CHECKING: @@ -322,16 +327,39 @@ def pg_config(django_db_factory: Callable[..., PostgresDsn]) -> PostgresConfig: @pytest.fixture(scope="session") -def redis(settings: Settings): - from generalresearch.redis_helper import RedisConfig +def redis_config_db() -> str: + # need to update 'databases' in /etc/redis/redis.conf + # or this won't work and you'll have no indication why ... + return str(randint(99, 1_023)) - redis_config = RedisConfig( - dsn=settings.testing_redis, + +@pytest.fixture(scope="session") +def redis_config(settings: Settings, redis_config_db: str) -> Generator[RedisConfig]: + assert "unittest" in str(settings.testing_redis) or "127.0.0.1" in str( + settings.testing_redis + ) + + uri = f"redis://{settings.testing_redis}/{redis_config_db}" + + res = subprocess.run( + ["redis-cli", "-u", uri, "SET", "jenkins_lock", "1", "NX", "EX", "3600"], + check=True, + text=True, + capture_output=True, + ) + + if res.stdout.strip() != "OK": + raise ValueError("Redis already locked... aborting.") + + yield RedisConfig( + dsn=uri, decode_responses=True, socket_timeout=settings.redis_timeout, socket_connect_timeout=settings.redis_timeout, ) - return redis_config.create_redis_client() + + r = redis.from_url(uri) + r.flushdb() # --- Connectors --- -- cgit v1.2.3