Files
chicken-counting-sukawarna-det/tests/test_tracking.py
T

37 lines
1.4 KiB
Python

"""Tests for DetectionTracker multi-camera stream isolation."""
from __future__ import annotations
import unittest
from pathlib import Path
from unittest.mock import MagicMock, patch
from chicken_counter.config import load_camera_config
class MultiCameraTrackerIsolationTests(unittest.TestCase):
def test_independent_stream_trackers(self) -> None:
cfg = load_camera_config("configs/cameras/example_camera.yaml")
# Test get_or_create_tracker instantiates isolated instances for different stream IDs
with patch("chicken_counter.tracking.ensure_compatible_model", return_value=cfg.detection.model_path), \
patch("chicken_counter.tracking.YOLO"):
from chicken_counter.tracking import DetectionTracker
tracker_manager = DetectionTracker(cfg)
tr1 = tracker_manager.get_or_create_tracker("CC1")
tr2 = tracker_manager.get_or_create_tracker("CC2")
self.assertIsNotNone(tr1)
self.assertIsNotNone(tr2)
self.assertIsNot(tr1, tr2, "Trackers for CC1 and CC2 must be distinct objects")
# Resetting CC1 should not delete CC2 tracker
tracker_manager.reset_tracking("CC1")
self.assertNotIn("CC1", tracker_manager._stream_trackers)
self.assertIn("CC2", tracker_manager._stream_trackers)
if __name__ == "__main__":
unittest.main()