- Updated argument parsing in manage_api.py to include new threshold parameters. - Enhanced _config_payload to include thresholds and webhook configurations. - Modified _build_summary to track queue metrics and adjust alert reporting. - Refactored DwellEngine to utilize queue thresholds for alerting and reporting. - Added queue metrics calculations and status change tracking in dwell_engine.py. - Updated notifier.py to support posting JSON events to webhooks. - Adjusted example configuration to reflect new threshold parameters. - Enhanced Docker entrypoint script for better process management. - Updated tests to cover new queue metrics and thresholds. - Improved ManagedServiceDetail and ManagedServices Vue components to display queue metrics.
36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
from pathlib import Path
|
|
|
|
from app.config import load_config
|
|
|
|
|
|
def test_load_config_reads_thresholds(tmp_path: Path):
|
|
cfg = tmp_path / "config.yaml"
|
|
cfg.write_text(
|
|
"camera_id: store_cam_01\n"
|
|
"thresholds:\n"
|
|
" queue_time_threshold_seconds: 300\n"
|
|
" crowded_count_threshold: 5\n"
|
|
" normal_count_threshold: 2\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
data = load_config(cfg)
|
|
|
|
assert data.camera_id == "store_cam_01"
|
|
assert data.thresholds.queue_time_threshold_seconds == 300
|
|
assert data.thresholds.crowded_count_threshold == 5
|
|
assert data.thresholds.normal_count_threshold == 2
|
|
|
|
|
|
def test_load_config_uses_defaults_for_optional_sections(tmp_path: Path):
|
|
cfg = tmp_path / "config.yaml"
|
|
cfg.write_text("camera_id: store_cam_01\n", encoding="utf-8")
|
|
|
|
data = load_config(cfg)
|
|
|
|
assert data.stream.sample_fps == 2.0
|
|
assert data.staff.min_hits == 3
|
|
assert data.event_sink.path == "logs/events.jsonl"
|
|
assert data.webhook.url == ""
|
|
assert data.webhook.timeout_seconds == 5.0
|