From cd6c2d5985d74b2da2a3c21ca551c9fcd704024e Mon Sep 17 00:00:00 2001 From: Roman Meshko Date: Wed, 6 May 2026 16:46:31 +0300 Subject: [PATCH] Fixed tests --- Dockerfile | 1 + Dockerfile.gpu | 1 + Dockerfile.jetson | 1 + e2e/Dockerfile | 1 + e2e/conftest.py | 9 +++++++++ e2e/docker-compose.test.yml | 11 ++++++++--- e2e/tests/test_async_sse.py | 2 +- e2e/tests/test_video.py | 5 ++++- 8 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 299de1d..527acea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ COPY . . RUN python setup.py build_ext --inplace ENV PYTHONPATH=/app/src RUN adduser --disabled-password --no-create-home --gecos "" appuser \ + && mkdir -p /app/Logs \ && chown -R appuser /app USER appuser EXPOSE 8080 diff --git a/Dockerfile.gpu b/Dockerfile.gpu index 47dc0b1..3cd4d98 100644 --- a/Dockerfile.gpu +++ b/Dockerfile.gpu @@ -7,6 +7,7 @@ COPY . . RUN python3 setup.py build_ext --inplace ENV PYTHONPATH=/app/src RUN adduser --disabled-password --no-create-home --gecos "" appuser \ + && mkdir -p /app/Logs \ && chown -R appuser /app USER appuser EXPOSE 8080 diff --git a/Dockerfile.jetson b/Dockerfile.jetson index 08261b0..1c95590 100644 --- a/Dockerfile.jetson +++ b/Dockerfile.jetson @@ -16,6 +16,7 @@ COPY . . RUN BUILD_TENSORRT_EXTENSIONS=1 python3 setup.py build_ext --inplace ENV PYTHONPATH=/app/src RUN adduser --disabled-password --no-create-home --gecos "" appuser \ + && mkdir -p /app/Logs \ && chown -R appuser /app USER appuser EXPOSE 8080 diff --git a/e2e/Dockerfile b/e2e/Dockerfile index bd213a1..73ba18e 100644 --- a/e2e/Dockerfile +++ b/e2e/Dockerfile @@ -3,4 +3,5 @@ WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . +RUN mkdir -p /app/Logs && chmod 0777 /app/Logs CMD ["pytest", "--csv=/results/report.csv", "-v"] diff --git a/e2e/conftest.py b/e2e/conftest.py index eea9ab8..6096d52 100644 --- a/e2e/conftest.py +++ b/e2e/conftest.py @@ -238,6 +238,15 @@ def image_empty_scene(): return _read_media("image_empty_scene.jpg") +@pytest.fixture(scope="session") +def image_dense(): + for name in ("image_dense.jpg", "image_dense01.jpg", "image_dense02.jpg"): + p = _media_dir() / name + if p.is_file(): + return p.read_bytes() + pytest.skip("missing dense image fixture") + + @pytest.fixture(scope="session") def video_short_path(): return str(_media_dir() / "video_test01.mp4") diff --git a/e2e/docker-compose.test.yml b/e2e/docker-compose.test.yml index 426abf3..0de13de 100644 --- a/e2e/docker-compose.test.yml +++ b/e2e/docker-compose.test.yml @@ -29,7 +29,7 @@ services: CLASSES_JSON_PATH: /app/classes.json volumes: - ./fixtures:/media - - ./logs:/app/Logs + - detections-logs:/app/Logs shm_size: 512m mem_limit: 4g networks: @@ -52,7 +52,7 @@ services: CLASSES_JSON_PATH: /app/classes.json volumes: - ./fixtures:/media - - ./logs:/app/Logs + - detections-logs:/app/Logs networks: e2e-net: aliases: @@ -75,6 +75,7 @@ services: CLASSES_JSON_PATH: /app/classes.json volumes: - ./fixtures:/media:ro + - detections-logs:/app/Logs shm_size: 512m networks: e2e-net: @@ -92,10 +93,11 @@ services: - mock-annotations environment: JWT_SECRET: test-secret-e2e-only - MEDIA_DIR: /app/fixtures + MEDIA_DIR: /media volumes: - ./fixtures:/media - ./results:/results + - detections-logs:/app/Logs networks: - e2e-net command: ["pytest", "--csv=/results/report.csv", "-v"] @@ -103,3 +105,6 @@ services: networks: e2e-net: driver: bridge + +volumes: + detections-logs: diff --git a/e2e/tests/test_async_sse.py b/e2e/tests/test_async_sse.py index f03d385..5be048a 100644 --- a/e2e/tests/test_async_sse.py +++ b/e2e/tests/test_async_sse.py @@ -59,7 +59,7 @@ def test_ft_p09_sse_event_delivery( data = json.loads(event.data) collected.append(data) first_event.set() - if len(collected) >= 5: + if data.get("mediaStatus") in ("AIProcessed", "Error"): break except BaseException as e: thread_exc.append(e) diff --git a/e2e/tests/test_video.py b/e2e/tests/test_video.py index 6120837..2c4e852 100644 --- a/e2e/tests/test_video.py +++ b/e2e/tests/test_video.py @@ -1,4 +1,5 @@ import json +import os import threading import time import uuid @@ -7,7 +8,9 @@ from pathlib import Path import pytest import sseclient -FIXTURES_DIR = Path(__file__).resolve().parent.parent / "fixtures" +FIXTURES_DIR = Path( + os.environ.get("MEDIA_DIR", Path(__file__).resolve().parent.parent / "fixtures") +) _VIDEO = str(FIXTURES_DIR / "video_test01.mp4")