@@ -664,13 +664,35 @@ async def test_load_monitors(clear_database):
664664 "(9999457, 'def get_value(): return 12');"
665665 )
666666
667- await monitors_loader ._load_monitors ()
667+ await monitors_loader ._load_monitors (None )
668668
669669 assert len (registry ._monitors ) == 2
670670 assert isinstance (registry ._monitors [9999123 ]["module" ], ModuleType )
671671 assert isinstance (registry ._monitors [9999456 ]["module" ], ModuleType )
672672
673673
674+ async def test_load_monitors_only_updated (clear_database ):
675+ """'_load_monitors' should load all enabled monitors that were updated after the provided
676+ timestamp"""
677+ await databases .execute_application (
678+ 'insert into "Monitors"(id, name, enabled) values'
679+ "(9999123, 'monitor_1', true),"
680+ "(9999456, 'internal.monitor_2', true),"
681+ "(9999457, 'disabled_monitor', false);"
682+ )
683+ await databases .execute_application (
684+ 'insert into "CodeModules"(monitor_id, code, registered_at) values'
685+ "(9999123, 'def get_value(): return 10', '2025-01-10 00:00'),"
686+ "(9999456, 'def get_value(): return 11', '2025-01-20 00:00'),"
687+ "(9999457, 'def get_value(): return 12', '2025-01-30 00:00');"
688+ )
689+
690+ await monitors_loader ._load_monitors (datetime (2025 , 1 , 15 , tzinfo = timezone .utc ))
691+
692+ assert len (registry ._monitors ) == 1
693+ assert isinstance (registry ._monitors [9999456 ]["module" ], ModuleType )
694+
695+
674696async def test_load_monitors_monitors_ready_flag (monkeypatch , clear_database ):
675697 """'_load_monitors' should clear and set the registry's 'monitors_ready' while loading the
676698 monitors"""
@@ -695,7 +717,7 @@ async def slow_get_all(self, *args, **kwargs):
695717 assert registry .monitors_ready .is_set ()
696718 assert registry .monitors_pending .is_set ()
697719
698- load_monitors_task = asyncio .create_task (monitors_loader ._load_monitors ())
720+ load_monitors_task = asyncio .create_task (monitors_loader ._load_monitors (None ))
699721
700722 await asyncio .sleep (0.1 )
701723 assert not registry .monitors_ready .is_set ()
@@ -720,7 +742,7 @@ async def slow_get_all(self, *args, **kwargs):
720742 "insert into \" Monitors\" (id, name, enabled) values (9999123, 'monitor_1', true);"
721743 )
722744
723- await monitors_loader ._load_monitors ()
745+ await monitors_loader ._load_monitors (None )
724746
725747 monitor = await Monitor .get_by_id (9999123 )
726748 assert monitor is not None
@@ -745,7 +767,7 @@ async def test_load_monitors_error(caplog, clear_database):
745767 "(9999456, 'def get_value(): return 10');"
746768 )
747769
748- await monitors_loader ._load_monitors ()
770+ await monitors_loader ._load_monitors (None )
749771
750772 assert len (registry ._monitors ) == 1
751773 assert isinstance (registry ._monitors [9999456 ]["module" ], ModuleType )
0 commit comments