Skip to content

Commit 0e4a72f

Browse files
[Feat] Add metric to track if org performed an upload (#511)
1 parent 5cf046c commit 0e4a72f

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

django_scaffold/settings.py

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"shared.django_apps.pg_telemetry",
2424
"shared.django_apps.rollouts",
2525
"shared.django_apps.user_measurements",
26+
"shared.django_apps.codecov_metrics",
2627
"psqlextra",
2728
# Needed to install legacy migrations
2829
"django.contrib.admin",

requirements.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,9 @@ requests==2.32.3
357357
respx==0.20.2
358358
# via -r requirements.in
359359
rfc3986[idna2008]==1.4.0
360-
# via httpx
360+
# via
361+
# httpx
362+
# rfc3986
361363
rsa==4.7.2
362364
# via google-auth
363365
s3transfer==0.10.1

tasks/tests/unit/test_upload_task.py

+21-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
from datetime import datetime, timedelta
33
from pathlib import Path
4-
from unittest.mock import MagicMock
4+
from unittest.mock import MagicMock, call
55

66
import mock
77
import pytest
@@ -213,6 +213,9 @@ def test_upload_task_call_bundle_analysis(
213213
celery_app,
214214
):
215215
chain = mocker.patch("tasks.upload.chain")
216+
mocker.patch(
217+
"shared.django_apps.codecov_metrics.service.codecov_metrics.UserOnboardingMetricsService.create_user_onboarding_metric"
218+
)
216219
storage_path = (
217220
"v1/repos/testing/ed1bdd67-8fd2-4cdb-ac9e-39b99e4a3892/bundle_report.sqlite"
218221
)
@@ -281,6 +284,9 @@ def test_upload_task_call_test_results(
281284
celery_app,
282285
):
283286
chord = mocker.patch("tasks.upload.chord")
287+
mocker.patch(
288+
"shared.django_apps.codecov_metrics.service.codecov_metrics.UserOnboardingMetricsService.create_user_onboarding_metric"
289+
)
284290
storage_path = "v4/raw/2019-05-22/C3C4715CA57C910D11D5EB899FC86A7E/4c4e4654ac25037ae869caeb3619d485970b6304/a84d445c-9c1e-434f-8275-f18f1f320f81.txt"
285291
redis_queue = [{"url": storage_path, "build_code": "some_random_build"}]
286292
jsonified_redis_queue = [json.dumps(x) for x in redis_queue]
@@ -667,9 +673,20 @@ def test_upload_task_proper_parent(
667673
mock_redis.lists[f"uploads/{commit.repoid}/{commit.commitid}"] = (
668674
jsonified_redis_queue
669675
)
676+
mock_create_user_onboarding_metric = mocker.patch(
677+
"shared.django_apps.codecov_metrics.service.codecov_metrics.UserOnboardingMetricsService.create_user_onboarding_metric"
678+
)
679+
670680
result = UploadTask().run_impl(dbsession, commit.repoid, commit.commitid)
671681
expected_result = {"was_setup": False, "was_updated": True}
672682
assert expected_result == result
683+
expected_call = call(
684+
org_id=owner.ownerid,
685+
event="COMPLETED_UPLOAD",
686+
payload={},
687+
)
688+
assert mock_create_user_onboarding_metric.call_args_list == [expected_call]
689+
673690
assert commit.message == "dsidsahdsahdsa"
674691
assert commit.parent_commit_id == "c5b67303452bbff57cc1f49984339cde39eb1db5"
675692
assert not mocked_1.called
@@ -876,6 +893,9 @@ def test_upload_task_upload_already_created(
876893
mock_storage,
877894
):
878895
mocked_schedule_task = mocker.patch.object(UploadTask, "schedule_task")
896+
mocker.patch(
897+
"shared.django_apps.codecov_metrics.service.codecov_metrics.UserOnboardingMetricsService.create_user_onboarding_metric"
898+
)
879899
mock_possibly_update_commit_from_provider_info = mocker.patch(
880900
"tasks.upload.possibly_update_commit_from_provider_info", return_value=True
881901
)

tasks/upload.py

+8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
from redis.exceptions import LockError
1313
from shared.celery_config import upload_task_name
1414
from shared.config import get_config
15+
from shared.django_apps.codecov_metrics.service.codecov_metrics import (
16+
UserOnboardingMetricsService,
17+
)
1518
from shared.torngit.exceptions import (
1619
TorngitClientError,
1720
TorngitRepoNotFoundError,
@@ -510,6 +513,11 @@ def run_impl_within_lock(
510513
)
511514
upload_context.prepare_kwargs_for_retry(kwargs)
512515
self.retry(countdown=60, kwargs=kwargs)
516+
517+
UserOnboardingMetricsService.create_user_onboarding_metric(
518+
org_id=repository.ownerid, event="COMPLETED_UPLOAD", payload={}
519+
)
520+
513521
argument_list = []
514522

515523
for arguments in upload_context.arguments_list():

0 commit comments

Comments
 (0)