mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-05-08 18:34:58 +02:00
80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
"""Regression tests for CCTV ingestion and persistence."""
|
|
|
|
import threading
|
|
|
|
from services import cctv_pipeline
|
|
|
|
|
|
class DummyIngestor(cctv_pipeline.BaseCCTVIngestor):
|
|
def __init__(self, cameras):
|
|
self._cameras = cameras
|
|
|
|
def fetch_data(self):
|
|
return self._cameras
|
|
|
|
|
|
def test_ingestor_can_run_from_another_thread(tmp_path, monkeypatch):
|
|
db_path = tmp_path / "data" / "cctv.db"
|
|
monkeypatch.setattr(cctv_pipeline, "DB_PATH", db_path)
|
|
|
|
ingestor = DummyIngestor(
|
|
[
|
|
{
|
|
"id": "cam-1",
|
|
"source_agency": "Test",
|
|
"lat": 51.5,
|
|
"lon": -0.12,
|
|
"direction_facing": "North",
|
|
"media_url": "https://example.com/camera.jpg",
|
|
"refresh_rate_seconds": 30,
|
|
}
|
|
]
|
|
)
|
|
|
|
thread = threading.Thread(target=ingestor.ingest)
|
|
thread.start()
|
|
thread.join()
|
|
|
|
cameras = cctv_pipeline.get_all_cameras()
|
|
assert len(cameras) == 1
|
|
assert cameras[0]["id"] == "cam-1"
|
|
assert cameras[0]["media_type"] == "image"
|
|
|
|
|
|
def test_ingest_updates_existing_rows_in_persistent_data_dir(tmp_path, monkeypatch):
|
|
db_path = tmp_path / "persistent" / "cctv.db"
|
|
monkeypatch.setattr(cctv_pipeline, "DB_PATH", db_path)
|
|
|
|
DummyIngestor(
|
|
[
|
|
{
|
|
"id": "cam-2",
|
|
"source_agency": "Test",
|
|
"lat": 40.71,
|
|
"lon": -74.0,
|
|
"direction_facing": "East",
|
|
"media_url": "https://example.com/old.jpg",
|
|
"refresh_rate_seconds": 60,
|
|
}
|
|
]
|
|
).ingest()
|
|
DummyIngestor(
|
|
[
|
|
{
|
|
"id": "cam-2",
|
|
"source_agency": "Test",
|
|
"lat": 40.71,
|
|
"lon": -74.0,
|
|
"direction_facing": "East",
|
|
"media_url": "https://example.com/live.m3u8",
|
|
"refresh_rate_seconds": 60,
|
|
}
|
|
]
|
|
).ingest()
|
|
|
|
cameras = cctv_pipeline.get_all_cameras()
|
|
assert db_path.exists()
|
|
assert len(cameras) == 1
|
|
assert cameras[0]["media_url"] == "https://example.com/live.m3u8"
|
|
assert cameras[0]["media_type"] == "hls"
|