File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -84,6 +84,24 @@ class DetectorsConfig(BaseModel):
8484
8585 @model_validator (mode = "after" )
8686 def validate_inference_configs (self ):
87+ for name , config in self .edge_inference_configs .items ():
88+ if name != config .name :
89+ raise ValueError (
90+ f"Edge inference config key '{ name } ' must match InferenceConfig.name '{ config .name } '."
91+ )
92+
93+ seen_detector_ids = set ()
94+ duplicate_detector_ids = set ()
95+ for detector_config in self .detectors :
96+ detector_id = detector_config .detector_id
97+ if detector_id in seen_detector_ids :
98+ duplicate_detector_ids .add (detector_id )
99+ else :
100+ seen_detector_ids .add (detector_id )
101+ if duplicate_detector_ids :
102+ duplicates = ", " .join (sorted (duplicate_detector_ids ))
103+ raise ValueError (f"Duplicate detector IDs are not allowed: { duplicates } ." )
104+
87105 for detector_config in self .detectors :
88106 if detector_config .edge_inference_config not in self .edge_inference_configs :
89107 raise ValueError (f"Edge inference config '{ detector_config .edge_inference_config } ' not defined." )
Original file line number Diff line number Diff line change @@ -51,6 +51,35 @@ def test_add_detector_rejects_different_named_inference_config():
5151 )
5252
5353
54+ def test_constructor_rejects_duplicate_detector_ids ():
55+ with pytest .raises (ValueError , match = "Duplicate detector IDs" ):
56+ DetectorsConfig (
57+ edge_inference_configs = {"default" : DEFAULT },
58+ detectors = [
59+ {"detector_id" : "det_1" , "edge_inference_config" : "default" },
60+ {"detector_id" : "det_1" , "edge_inference_config" : "default" },
61+ ],
62+ )
63+
64+
65+ def test_constructor_rejects_mismatched_inference_config_key_and_name ():
66+ with pytest .raises (ValueError , match = "must match InferenceConfig.name" ):
67+ DetectorsConfig (
68+ edge_inference_configs = {"default" : InferenceConfig (name = "not_default" )},
69+ detectors = [],
70+ )
71+
72+
73+ def test_constructor_accepts_matching_inference_config_key_and_name ():
74+ config = DetectorsConfig (
75+ edge_inference_configs = {"default" : InferenceConfig (name = "default" )},
76+ detectors = [{"detector_id" : "det_1" , "edge_inference_config" : "default" }],
77+ )
78+
79+ assert list (config .edge_inference_configs .keys ()) == ["default" ]
80+ assert [detector .detector_id for detector in config .detectors ] == ["det_1" ]
81+
82+
5483def test_edge_endpoint_config_add_detector_delegates_to_detectors_logic ():
5584 config = EdgeEndpointConfig ()
5685 config .add_detector ("det_1" , NO_CLOUD )
You can’t perform that action at this time.
0 commit comments