diff --git a/frappe/recorder.py b/frappe/recorder.py index be0a1e4969..079251997f 100644 --- a/frappe/recorder.py +++ b/frappe/recorder.py @@ -8,6 +8,7 @@ import re import time from collections import Counter from collections.abc import Callable +from enum import Enum import sqlparse @@ -21,6 +22,12 @@ RECORDER_REQUEST_HASH = "recorder-requests" TRACEBACK_PATH_PATTERN = re.compile(".*/apps/") +class RecorderEvent(str, Enum): + HTTP_REQUEST = "HTTP Request" + BACKGROUND_JOB = "Background Job" + INVALID = "Invalid" + + def sql(*args, **kwargs): start_time = time.monotonic() result = frappe.db._sql(*args, **kwargs) @@ -154,16 +161,16 @@ class Recorder: self.method = frappe.request.method self.headers = dict(frappe.local.request.headers) self.form_dict = frappe.local.form_dict - self.event_type = "HTTP Request" + self.event_type = RecorderEvent.HTTP_REQUEST elif frappe.job: - self.event_type = "Background Job" + self.event_type = RecorderEvent.BACKGROUND_JOB self.path = frappe.job.method self.cmd = None self.method = None self.headers = None self.form_dict = None else: - self.event_type = None + self.event_type = RecorderEvent.INVALID self.path = None self.cmd = None self.method = None diff --git a/frappe/tests/test_recorder.py b/frappe/tests/test_recorder.py index 40e8bdc127..817b5319f7 100644 --- a/frappe/tests/test_recorder.py +++ b/frappe/tests/test_recorder.py @@ -122,7 +122,13 @@ class TestRecorder(FrappeTestCase): frappe.recorder.post_process() requests = frappe.recorder.get() - request = frappe.recorder.get(requests[0]["uuid"]) + request = frappe.recorder.get( + next( + request + for request in requests + if request["event_type"] == frappe.recorder.RecorderEvent.HTTP_REQUEST + )["uuid"] + ) for query, call in zip(queries, request["calls"]): self.assertEqual(call["exact_copies"], query[1])