BE: events, device pagination for performance

This commit is contained in:
jokob-sk committed 2026-09-14 14:51:43 +10:00
1 parent 321824db8e
commit e30a0ea93b
3 files changed
+11 -4

No files matched your search

+6 -2
View File
@@ -135,8 +135,12 @@ def test_get_events_pagination(client, api_token, test_mac):
"""limit/offset on GET /events must page through the same set the
unpaginated response gives for one MAC, ordered by eveDateTime
descending, with no gaps or duplicates, and must reject invalid values."""
for _ in range(5):
create_event(client, api_token, test_mac)
# Distinct event_type per call - idx_events_unique is on
# (eveMac, eveIp, eveEventType, eveDateTime), and eveDateTime only has
# second precision, so 5 calls in the same second with the same
# event_type would collide and INSERT OR IGNORE would drop 4 of them.
for i in range(5):
create_event(client, api_token, test_mac, event=f"UnitTest Event {i}")
full_resp = list_events(client, api_token, test_mac)
assert full_resp.status_code == 200
@@ -177,7 +177,7 @@ def test_get_all_events(mock_get, client, api_token):
response = client.get('/events?mac=00:11:22:33:44:55', headers=auth_headers(api_token))
assert response.status_code == 200
assert response.json["success"] is True
mock_get.assert_called_with("00:11:22:33:44:55")
mock_get.assert_called_with("00:11:22:33:44:55", None, None)
@patch('models.event_instance.EventInstance.deleteEventsOlderThan')
+4 -1
View File
@@ -22,7 +22,7 @@ from unittest.mock import patch, MagicMock
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "server"))
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from db_test_helpers import make_db, make_device_dict, insert_device_from_dict
from db_test_helpers import make_db, make_device_dict, insert_device_from_dict, CREATE_PLUGINS_OBJECTS
# ---------------------------------------------------------------------------
@@ -500,6 +500,9 @@ class TestTriggerDeviceGuidLookup(unittest.TestCase):
def test_devguid_lookup_uses_index(self):
from db.db_upgrade import ensure_Indexes
# ensure_Indexes() also indexes Plugins_Objects.objectGuid, which
# make_db()'s minimal fixture doesn't create.
self.conn.execute(CREATE_PLUGINS_OBJECTS)
ensure_Indexes(self.conn)
plan = self.conn.execute(