add plus integration for models (#6328)

This commit is contained in:
Blake Blackshear
2023-04-30 13:32:36 -05:00
committed by GitHub
parent ad52e238ce
commit 9bf98f908d
9 changed files with 166 additions and 63 deletions

View File

@@ -34,7 +34,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**self.minimal)
assert self.minimal == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "cpu" in runtime_config.detectors.keys()
assert runtime_config.detectors["cpu"].type == DetectorTypeEnum.cpu
assert runtime_config.detectors["cpu"].model.width == 320
@@ -59,7 +59,7 @@ class TestConfig(unittest.TestCase):
}
frigate_config = FrigateConfig(**(deep_merge(config, self.minimal)))
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "cpu" in runtime_config.detectors.keys()
assert "edgetpu" in runtime_config.detectors.keys()
@@ -125,7 +125,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "dog" in runtime_config.cameras["back"].objects.track
def test_override_birdseye(self):
@@ -151,7 +151,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert not runtime_config.cameras["back"].birdseye.enabled
assert runtime_config.cameras["back"].birdseye.mode is BirdseyeModeEnum.motion
@@ -177,7 +177,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].birdseye.enabled
def test_inherit_birdseye(self):
@@ -202,7 +202,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].birdseye.enabled
assert (
runtime_config.cameras["back"].birdseye.mode is BirdseyeModeEnum.continuous
@@ -231,7 +231,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "cat" in runtime_config.cameras["back"].objects.track
def test_default_object_filters(self):
@@ -256,7 +256,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "dog" in runtime_config.cameras["back"].objects.filters
def test_inherit_object_filters(self):
@@ -284,7 +284,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "dog" in runtime_config.cameras["back"].objects.filters
assert runtime_config.cameras["back"].objects.filters["dog"].threshold == 0.7
@@ -313,7 +313,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "dog" in runtime_config.cameras["back"].objects.filters
assert runtime_config.cameras["back"].objects.filters["dog"].threshold == 0.7
@@ -343,7 +343,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
back_camera = runtime_config.cameras["back"]
assert "dog" in back_camera.objects.filters
assert len(back_camera.objects.filters["dog"].raw_mask) == 2
@@ -374,7 +374,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "-rtsp_transport" in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
def test_ffmpeg_params_global(self):
@@ -403,7 +403,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "-re" in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
def test_ffmpeg_params_camera(self):
@@ -433,7 +433,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "-re" in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
assert "test" not in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
@@ -468,7 +468,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "-re" in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
assert "test" in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
assert "test2" not in runtime_config.cameras["back"].ffmpeg_cmds[0]["cmd"]
@@ -498,7 +498,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert (
runtime_config.cameras["back"].record.events.retain.objects["person"] == 30
)
@@ -576,7 +576,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert isinstance(
runtime_config.cameras["back"].zones["test"].contour, np.ndarray
)
@@ -608,7 +608,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
back_camera = runtime_config.cameras["back"]
assert back_camera.record.events.objects is None
assert back_camera.record.events.retain.objects["person"] == 30
@@ -639,7 +639,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
ffmpeg_cmds = runtime_config.cameras["back"].ffmpeg_cmds
assert len(ffmpeg_cmds) == 1
assert not "clips" in ffmpeg_cmds[0]["roles"]
@@ -670,7 +670,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].detect.max_disappeared == 5 * 5
def test_motion_frame_height_wont_go_below_120(self):
@@ -698,7 +698,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].motion.frame_height == 50
def test_motion_contour_area_dynamic(self):
@@ -726,7 +726,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert round(runtime_config.cameras["back"].motion.contour_area) == 30
def test_merge_labelmap(self):
@@ -755,7 +755,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.model.merged_labelmap[7] == "truck"
def test_default_labelmap_empty(self):
@@ -783,7 +783,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.model.merged_labelmap[0] == "person"
def test_default_labelmap(self):
@@ -812,7 +812,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.model.merged_labelmap[0] == "person"
def test_fails_on_invalid_role(self):
@@ -871,7 +871,7 @@ class TestConfig(unittest.TestCase):
}
frigate_config = FrigateConfig(**config)
self.assertRaises(ValueError, lambda: frigate_config.runtime_config)
self.assertRaises(ValueError, lambda: frigate_config.runtime_config())
def test_works_on_missing_role_multiple_cams(self):
config = {
@@ -919,7 +919,7 @@ class TestConfig(unittest.TestCase):
}
frigate_config = FrigateConfig(**config)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
def test_global_detect(self):
config = {
@@ -946,7 +946,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].detect.max_disappeared == 1
assert runtime_config.cameras["back"].detect.height == 1080
@@ -969,7 +969,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].detect.max_disappeared == 25
assert runtime_config.cameras["back"].detect.height == 720
@@ -998,7 +998,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].detect.max_disappeared == 1
assert runtime_config.cameras["back"].detect.height == 1080
assert runtime_config.cameras["back"].detect.width == 1920
@@ -1026,7 +1026,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].snapshots.enabled
assert runtime_config.cameras["back"].snapshots.height == 100
@@ -1049,7 +1049,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].snapshots.bounding_box
assert runtime_config.cameras["back"].snapshots.quality == 70
@@ -1077,7 +1077,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].snapshots.bounding_box == False
assert runtime_config.cameras["back"].snapshots.height == 150
assert runtime_config.cameras["back"].snapshots.enabled
@@ -1101,7 +1101,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert not runtime_config.cameras["back"].rtmp.enabled
def test_default_not_rtmp(self):
@@ -1123,7 +1123,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert not runtime_config.cameras["back"].rtmp.enabled
def test_global_rtmp_merge(self):
@@ -1149,7 +1149,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].rtmp.enabled
def test_global_rtmp_default(self):
@@ -1175,7 +1175,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert not runtime_config.cameras["back"].rtmp.enabled
def test_global_jsmpeg(self):
@@ -1198,7 +1198,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].live.quality == 4
def test_default_live(self):
@@ -1220,7 +1220,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].live.quality == 8
def test_global_live_merge(self):
@@ -1246,7 +1246,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].live.quality == 7
assert runtime_config.cameras["back"].live.height == 480
@@ -1270,7 +1270,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].timestamp_style.position == "bl"
def test_default_timestamp_style(self):
@@ -1292,7 +1292,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].timestamp_style.position == "tl"
def test_global_timestamp_style_merge(self):
@@ -1317,7 +1317,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].timestamp_style.position == "bl"
assert runtime_config.cameras["back"].timestamp_style.thickness == 4
@@ -1341,7 +1341,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert runtime_config.cameras["back"].snapshots.retain.default == 1.5
def test_fails_on_bad_camera_name(self):
@@ -1365,7 +1365,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
self.assertRaises(
ValidationError, lambda: frigate_config.runtime_config.cameras
ValidationError, lambda: frigate_config.runtime_config().cameras
)
def test_fails_on_bad_segment_time(self):
@@ -1392,7 +1392,8 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
self.assertRaises(
ValueError, lambda: frigate_config.runtime_config.ffmpeg.output_args.record
ValueError,
lambda: frigate_config.runtime_config().ffmpeg.output_args.record,
)
def test_fails_zone_defines_untracked_object(self):
@@ -1421,7 +1422,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
self.assertRaises(ValueError, lambda: frigate_config.runtime_config.cameras)
self.assertRaises(ValueError, lambda: frigate_config.runtime_config().cameras)
def test_fails_duplicate_keys(self):
raw_config = """
@@ -1465,7 +1466,7 @@ class TestConfig(unittest.TestCase):
frigate_config = FrigateConfig(**config)
assert config == frigate_config.dict(exclude_unset=True)
runtime_config = frigate_config.runtime_config
runtime_config = frigate_config.runtime_config()
assert "dog" in runtime_config.cameras["back"].objects.filters
assert runtime_config.cameras["back"].objects.filters["dog"].min_ratio == 0.2
assert runtime_config.cameras["back"].objects.filters["dog"].max_ratio == 10.1

View File

@@ -292,7 +292,7 @@ class TestHttp(unittest.TestCase):
def test_config(self):
app = create_app(
FrigateConfig(**self.minimal_config).runtime_config,
FrigateConfig(**self.minimal_config).runtime_config(),
self.db,
None,
None,
@@ -308,7 +308,7 @@ class TestHttp(unittest.TestCase):
def test_recordings(self):
app = create_app(
FrigateConfig(**self.minimal_config).runtime_config,
FrigateConfig(**self.minimal_config).runtime_config(),
self.db,
None,
None,
@@ -327,7 +327,7 @@ class TestHttp(unittest.TestCase):
@patch("frigate.http.stats_snapshot")
def test_stats(self, mock_stats):
app = create_app(
FrigateConfig(**self.minimal_config).runtime_config,
FrigateConfig(**self.minimal_config).runtime_config(),
self.db,
None,
None,