Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/misc/test_metrics.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019-2021 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from itertools import product | from itertools import product | ||||
import random | import random | ||||
from prometheus_client.exposition import CONTENT_TYPE_LATEST | from prometheus_client.exposition import CONTENT_TYPE_LATEST | ||||
import pytest | import pytest | ||||
from swh.web.common.models import ( | from swh.web.common.models import ( | ||||
SAVE_REQUEST_ACCEPTED, | SAVE_REQUEST_ACCEPTED, | ||||
SAVE_REQUEST_PENDING, | SAVE_REQUEST_PENDING, | ||||
SAVE_REQUEST_REJECTED, | SAVE_REQUEST_REJECTED, | ||||
SAVE_TASK_FAILED, | SAVE_TASK_FAILED, | ||||
SAVE_TASK_NOT_CREATED, | SAVE_TASK_NOT_CREATED, | ||||
SAVE_TASK_NOT_YET_SCHEDULED, | SAVE_TASK_NOT_YET_SCHEDULED, | ||||
SAVE_TASK_RUNNING, | SAVE_TASK_RUNNING, | ||||
SAVE_TASK_SCHEDULED, | SAVE_TASK_SCHEDULED, | ||||
SAVE_TASK_SUCCEEDED, | SAVE_TASK_SUCCEEDED, | ||||
SaveOriginRequest, | SaveOriginRequest, | ||||
) | ) | ||||
from swh.web.common.origin_save import ( | from swh.web.common.origin_save import ( | ||||
ACCEPTED_SAVE_REQUESTS_DELAY_METRIC, | |||||
ACCEPTED_SAVE_REQUESTS_METRIC, | ACCEPTED_SAVE_REQUESTS_METRIC, | ||||
SUBMITTED_SAVE_REQUESTS_METRIC, | SUBMITTED_SAVE_REQUESTS_METRIC, | ||||
get_savable_visit_types, | get_savable_visit_types, | ||||
) | ) | ||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.django_asserts import assert_contains | from swh.web.tests.django_asserts import assert_contains | ||||
from swh.web.tests.utils import check_http_get_response | from swh.web.tests.utils import check_http_get_response | ||||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | for labels in labels_set: | ||||
metric_text = ( | metric_text = ( | ||||
f"{SUBMITTED_SAVE_REQUESTS_METRIC}{{" | f"{SUBMITTED_SAVE_REQUESTS_METRIC}{{" | ||||
f'status="{labels[1]}",' | f'status="{labels[1]}",' | ||||
f'visit_type="{labels[0]}"}} {float(sor_count)}\n' | f'visit_type="{labels[0]}"}} {float(sor_count)}\n' | ||||
) | ) | ||||
assert_contains(resp, metric_text) | assert_contains(resp, metric_text) | ||||
# delay metrics | |||||
labels_set = product(visit_types, (SAVE_TASK_SUCCEEDED, SAVE_TASK_FAILED,)) | |||||
for labels in labels_set: | |||||
sors = accepted_requests.filter( | |||||
visit_type=labels[0], | |||||
loading_task_status=labels[1], | |||||
visit_date__isnull=False, | |||||
) | |||||
delay = 0 | |||||
for sor in sors: | |||||
delay += sor.visit_date.timestamp() - sor.request_date.timestamp() | |||||
ardumont: right, i'll need to amend data to actually pass through here then... | |||||
metric_delay_text = ( | |||||
f"{ACCEPTED_SAVE_REQUESTS_DELAY_METRIC}{{" | |||||
f'load_task_status="{labels[1]}",' | |||||
f'visit_type="{labels[0]}"}} {float(delay)}\n' | |||||
) | |||||
assert_contains(resp, metric_delay_text) |
right, i'll need to amend data to actually pass through here then...