fix: isolate per-camera tracker states in tensor-batched execution and add test_tracking
This commit is contained in:
1 parent
2205330679
commit
f5c6cff75e
4 files changed
+135
-141
No files matched your search
@@ -0,0 +1,36 @@
|
||||
"""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()
|
||||
Reference in new issue
Block a user