Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit c8685db

Browse files
committed
Update shared and remove statsd metrics usage
`shared.metrics` does not re-export `statsd` anymore.
1 parent f8ac094 commit c8685db

File tree

9 files changed

+14
-122
lines changed

9 files changed

+14
-122
lines changed

labelanalysis/serializers.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from rest_framework import exceptions, serializers
2-
from shared.metrics import metrics
32

43
from core.models import Commit
54
from labelanalysis.models import (
@@ -23,25 +22,21 @@ def to_internal_value(self, commit_sha):
2322
commitid=commit_sha,
2423
).first()
2524
if commit is None:
26-
metrics.incr("label_analysis_request.errors.commit_not_found")
2725
raise exceptions.NotFound(f"Commit {commit_sha[:7]} not found.")
2826
if commit.staticanalysissuite_set.exists():
2927
return commit
3028
if not self.accepts_fallback:
31-
metrics.incr("label_analysis_request.errors.static_analysis_not_found")
3229
raise serializers.ValidationError("No static analysis found")
3330
attempted_commits = []
3431
for _ in range(10):
3532
attempted_commits.append(commit.commitid)
3633
commit = commit.parent_commit
3734
if commit is None:
38-
metrics.incr("label_analysis_request.errors.static_analysis_not_found")
3935
raise serializers.ValidationError(
4036
f"No possible commits have static analysis sent. Attempted commits: {','.join(attempted_commits)}"
4137
)
4238
if commit.staticanalysissuite_set.exists():
4339
return commit
44-
metrics.incr("label_analysis_request.errors.static_analysis_not_found")
4540
raise serializers.ValidationError(
4641
f"No possible commits have static analysis sent. Attempted too many commits: {','.join(attempted_commits)}"
4742
)
@@ -71,13 +66,10 @@ class LabelAnalysisRequestSerializer(serializers.ModelSerializer):
7166
errors = ProcessingErrorList(required=False)
7267

7368
def validate(self, data):
74-
metrics.incr("label_analysis_request.count")
7569
if data["base_commit"] == data["head_commit"]:
76-
metrics.incr("label_analysis_request.errors.base_head_equal")
7770
raise serializers.ValidationError(
7871
{"base_commit": "Base and head must be different commits"}
7972
)
80-
metrics.incr("label_analysis_request.valid.count")
8173
return data
8274

8375
class Meta:

requirements.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ factory-boy
2020
fakeredis
2121
freezegun
2222
https://github.com/codecov/opentelem-python/archive/refs/tags/v0.0.4a1.tar.gz#egg=codecovopentelem
23-
https://github.com/codecov/shared/archive/f0e213c4399563990d43fb424f4be36faa5ce5eb.tar.gz#egg=shared
23+
https://github.com/codecov/shared/archive/4e2792779e3efc65f876ab8ac38ffd244189e34d.tar.gz#egg=shared
2424
google-cloud-pubsub
2525
gunicorn>=22.0.0
2626
https://github.com/photocrowd/django-cursor-pagination/archive/f560902696b0c8509e4d95c10ba0d62700181d84.tar.gz

requirements.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ googleapis-common-protos[grpc]==1.59.1
205205
# grpcio-status
206206
graphql-core==3.2.3
207207
# via ariadne
208+
greenlet==3.1.1
209+
# via sqlalchemy
208210
grpc-google-iam-v1==0.12.6
209211
# via google-cloud-pubsub
210212
grpcio==1.62.1
@@ -299,6 +301,8 @@ opentelemetry-util-http==0.45b0
299301
# opentelemetry-instrumentation-wsgi
300302
opentracing==2.4.0
301303
# via -r requirements.in
304+
orjson==3.10.9
305+
# via shared
302306
packaging==24.1
303307
# via
304308
# gunicorn
@@ -417,7 +421,7 @@ sentry-sdk[celery]==2.13.0
417421
# shared
418422
setproctitle==1.1.10
419423
# via -r requirements.in
420-
shared @ https://github.com/codecov/shared/archive/f0e213c4399563990d43fb424f4be36faa5ce5eb.tar.gz
424+
shared @ https://github.com/codecov/shared/archive/4e2792779e3efc65f876ab8ac38ffd244189e34d.tar.gz
421425
# via -r requirements.in
422426
simplejson==3.17.2
423427
# via -r requirements.in
@@ -447,8 +451,6 @@ sqlparse==0.5.0
447451
# django
448452
starlette==0.36.2
449453
# via ariadne
450-
statsd==3.3.0
451-
# via shared
452454
stripe==9.6.0
453455
# via -r requirements.in
454456
text-unidecode==1.3

staticanalysis/serializers.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import math
33

44
from rest_framework import exceptions, serializers
5-
from shared.metrics import metrics
65

76
from core.models import Commit
87
from services.archive import ArchiveService, MinioEndpoints
@@ -154,13 +153,4 @@ def create(self, validated_data):
154153
created_ids=[f.id for f in created_filepaths], repoid=repository.repoid
155154
),
156155
)
157-
metrics.gauge(
158-
"static_analysis.suite.files_created",
159-
len(file_metadata_array) - len(existing_values_mapping),
160-
)
161-
metrics.gauge("static_analysis.suite.total_files", len(file_metadata_array))
162-
metrics.gauge(
163-
"static_analysis.suite.existing_files", len(existing_values_mapping)
164-
)
165-
metrics.incr("static_analysis.suite.count")
166156
return obj

upload/tests/test_upload.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -997,7 +997,6 @@ def test_invalid_request_params_invalid_package(self):
997997
assert response.status_code == status.HTTP_400_BAD_REQUEST
998998
assert metrics.data["uploads.rejected"] == 1
999999

1000-
@patch("shared.metrics.metrics.incr")
10011000
@patch("upload.views.legacy.get_redis_connection")
10021001
@patch("upload.views.legacy.uuid4")
10031002
@patch("upload.views.legacy.dispatch_upload_task")
@@ -1009,7 +1008,6 @@ def test_successful_upload_v2(
10091008
mock_dispatch_upload,
10101009
mock_uuid4,
10111010
mock_get_redis,
1012-
mock_metrics,
10131011
):
10141012
class MockRepoProviderAdapter:
10151013
async def get_commit(self, commit, token):
@@ -1036,7 +1034,6 @@ async def get_commit(self, commit, token):
10361034
)
10371035

10381036
assert response.status_code == 200
1039-
mock_metrics.assert_called_once_with("uploads.accepted", 1)
10401037

10411038
headers = response.headers
10421039

@@ -1074,7 +1071,6 @@ async def get_commit(self, commit, token):
10741071
== "https://app.codecov.io/github/codecovtest/upload-test-repo/commit/b521e55aef79b101f48e2544837ca99a7fa3bf6b"
10751072
)
10761073

1077-
@patch("shared.metrics.metrics.incr")
10781074
@patch("upload.views.legacy.get_redis_connection")
10791075
@patch("upload.views.legacy.uuid4")
10801076
@patch("upload.views.legacy.dispatch_upload_task")
@@ -1086,7 +1082,6 @@ def test_successful_upload_v2_slash(
10861082
mock_dispatch_upload,
10871083
mock_uuid4,
10881084
mock_get_redis,
1089-
mock_metrics,
10901085
):
10911086
class MockRepoProviderAdapter:
10921087
async def get_commit(self, commit, token):
@@ -1113,7 +1108,6 @@ async def get_commit(self, commit, token):
11131108
)
11141109

11151110
assert response.status_code == 200
1116-
mock_metrics.assert_called_once_with("uploads.accepted", 1)
11171111

11181112
headers = response.headers
11191113

@@ -1151,7 +1145,6 @@ async def get_commit(self, commit, token):
11511145
== "https://app.codecov.io/github/codecovtest/upload-test-repo/commit/b521e55aef79b101f48e2544837ca99a7fa3bf6b"
11521146
)
11531147

1154-
@patch("shared.metrics.metrics.incr")
11551148
@patch("upload.views.legacy.get_redis_connection")
11561149
@patch("upload.views.legacy.uuid4")
11571150
@patch("upload.views.legacy.determine_repo_for_upload")
@@ -1163,7 +1156,6 @@ def test_repo_validation_error_v2(
11631156
mock_determine_repo_for_upload,
11641157
mock_uuid4,
11651158
mock_get_redis,
1166-
mock_metrics,
11671159
):
11681160
class MockRepoProviderAdapter:
11691161
async def get_commit(self, commit, token):
@@ -1193,7 +1185,6 @@ async def get_commit(self, commit, token):
11931185
)
11941186

11951187
assert response.status_code == 400
1196-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
11971188

11981189
headers = response.headers
11991190

@@ -1206,7 +1197,6 @@ async def get_commit(self, commit, token):
12061197

12071198
assert response.content == b"Could not determine repo and owner"
12081199

1209-
@patch("shared.metrics.metrics.incr")
12101200
@patch("upload.views.legacy.get_redis_connection")
12111201
@patch("upload.views.legacy.uuid4")
12121202
@patch("upload.views.legacy.determine_repo_for_upload")
@@ -1218,7 +1208,6 @@ def test_too_many_repos_found_v2(
12181208
mock_determine_repo_for_upload,
12191209
mock_uuid4,
12201210
mock_get_redis,
1221-
mock_metrics,
12221211
):
12231212
class MockRepoProviderAdapter:
12241213
async def get_commit(self, commit, token):
@@ -1248,7 +1237,6 @@ async def get_commit(self, commit, token):
12481237
)
12491238

12501239
assert response.status_code == 400
1251-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
12521240

12531241
headers = response.headers
12541242

upload/tests/views/test_uploads.py

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from unittest.mock import MagicMock, call, patch
1+
from unittest.mock import MagicMock, patch
22

33
import pytest
44
from django.conf import settings
@@ -106,24 +106,20 @@ def test_get_repo(db):
106106
assert recovered_repo == repository
107107

108108

109-
@patch("shared.metrics.metrics.incr")
110-
def test_get_repo_with_invalid_service(mock_metrics, db):
109+
def test_get_repo_with_invalid_service(db):
111110
upload_views = UploadViews()
112111
upload_views.kwargs = dict(repo="repo", service="wrong service")
113112
with pytest.raises(ValidationError) as exp:
114113
upload_views.get_repo()
115114
assert exp.match("Service not found: wrong service")
116-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
117115

118116

119-
@patch("shared.metrics.metrics.incr")
120-
def test_get_repo_not_found(mock_metrics, db):
117+
def test_get_repo_not_found(db):
121118
upload_views = UploadViews()
122119
upload_views.kwargs = dict(repo="repo", service="github")
123120
with pytest.raises(ValidationError) as exp:
124121
upload_views.get_repo()
125122
assert exp.match("Repository not found")
126-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
127123

128124

129125
def test_get_commit(db):
@@ -137,16 +133,14 @@ def test_get_commit(db):
137133
assert recovered_commit == commit
138134

139135

140-
@patch("shared.metrics.metrics.incr")
141-
def test_get_commit_error(mock_metrics, db):
136+
def test_get_commit_error(db):
142137
repository = RepositoryFactory(name="the_repo", author__username="codecov")
143138
repository.save()
144139
upload_views = UploadViews()
145140
upload_views.kwargs = dict(repo=repository.name, commit_sha="missing_commit")
146141
with pytest.raises(ValidationError) as exp:
147142
upload_views.get_commit(repository)
148143
assert exp.match("Commit SHA not found")
149-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
150144

151145

152146
def test_get_report(db):
@@ -179,8 +173,7 @@ def test_get_default_report(db):
179173
assert recovered_report == report
180174

181175

182-
@patch("shared.metrics.metrics.incr")
183-
def test_get_report_error(mock_metrics, db):
176+
def test_get_report_error(db):
184177
repository = RepositoryFactory(name="the_repo", author__username="codecov")
185178
commit = CommitFactory(repository=repository)
186179
repository.save()
@@ -191,12 +184,10 @@ def test_get_report_error(mock_metrics, db):
191184
)
192185
with pytest.raises(ValidationError) as exp:
193186
upload_views.get_report(commit)
194-
mock_metrics.assert_called_once_with("uploads.rejected", 1)
195187
assert exp.match("Report not found")
196188

197189

198-
@patch("shared.metrics.metrics.incr")
199-
def test_uploads_post(mock_metrics, db, mocker, mock_redis):
190+
def test_uploads_post(db, mocker, mock_redis):
200191
# TODO remove the mock object and test the flow with the permissions
201192
mocker.patch.object(
202193
CanDoCoverageUploadsPermission, "has_permission", return_value=True
@@ -277,9 +268,6 @@ def test_uploads_post(mock_metrics, db, mocker, mock_redis):
277268
report_session_id=upload.id, flag_id=flag2.id
278269
).exists()
279270
assert [flag for flag in upload.flags.all()] == [flag1, flag2]
280-
mock_metrics.assert_has_calls(
281-
[call("upload.cli.version"), call("uploads.accepted", 1)]
282-
)
283271

284272
archive_service = ArchiveService(repository)
285273
assert upload.storage_path == MinioEndpoints.raw_with_upload_id.get_path(
@@ -294,15 +282,12 @@ def test_uploads_post(mock_metrics, db, mocker, mock_redis):
294282
upload_task_mock.assert_called()
295283

296284

297-
@patch("shared.metrics.metrics.incr")
298285
@pytest.mark.parametrize("private", [False, True])
299286
@pytest.mark.parametrize("branch", ["branch", "fork:branch", "someone/fork:branch"])
300287
@pytest.mark.parametrize(
301288
"branch_sent", [None, "branch", "fork:branch", "someone/fork:branch"]
302289
)
303-
def test_uploads_post_tokenless(
304-
mock_metrics, db, mocker, mock_redis, private, branch, branch_sent
305-
):
290+
def test_uploads_post_tokenless(db, mocker, mock_redis, private, branch, branch_sent):
306291
presigned_put_mock = mocker.patch(
307292
"services.archive.StorageService.create_presigned_put",
308293
return_value="presigned put",
@@ -392,9 +377,6 @@ def test_uploads_post_tokenless(
392377
report_session_id=upload.id, flag_id=flag2.id
393378
).exists()
394379
assert [flag for flag in upload.flags.all()] == [flag1, flag2]
395-
mock_metrics.assert_has_calls(
396-
[call("upload.cli.version"), call("uploads.accepted", 1)]
397-
)
398380

399381
archive_service = ArchiveService(repository)
400382
assert upload.storage_path == MinioEndpoints.raw_with_upload_id.get_path(
@@ -431,15 +413,13 @@ def test_uploads_post_tokenless(
431413
assert response.json().get("detail") == "Not valid tokenless upload"
432414

433415

434-
@patch("shared.metrics.metrics.incr")
435416
@pytest.mark.parametrize("private", [False, True])
436417
@pytest.mark.parametrize("branch", ["branch", "fork:branch", "someone/fork:branch"])
437418
@pytest.mark.parametrize(
438419
"branch_sent", [None, "branch", "fork:branch", "someone/fork:branch"]
439420
)
440421
@pytest.mark.parametrize("upload_token_required_for_public_repos", [True, False])
441422
def test_uploads_post_token_required_auth_check(
442-
mock_metrics,
443423
db,
444424
mocker,
445425
mock_redis,
@@ -545,9 +525,6 @@ def test_uploads_post_token_required_auth_check(
545525
report_session_id=upload.id, flag_id=flag2.id
546526
).exists()
547527
assert [flag for flag in upload.flags.all()] == [flag1, flag2]
548-
mock_metrics.assert_has_calls(
549-
[call("upload.cli.version"), call("uploads.accepted", 1)]
550-
)
551528

552529
archive_service = ArchiveService(repository)
553530
assert upload.storage_path == MinioEndpoints.raw_with_upload_id.get_path(
@@ -587,9 +564,7 @@ def test_uploads_post_token_required_auth_check(
587564
@patch("upload.views.uploads.AnalyticsService")
588565
@patch("upload.helpers.jwt.decode")
589566
@patch("upload.helpers.PyJWKClient")
590-
@patch("shared.metrics.metrics.incr")
591567
def test_uploads_post_github_oidc_auth(
592-
mock_metrics,
593568
mock_jwks_client,
594569
mock_jwt_decode,
595570
analytics_service_mock,
@@ -679,9 +654,6 @@ def test_uploads_post_github_oidc_auth(
679654
report_session_id=upload.id, flag_id=flag2.id
680655
).exists()
681656
assert [flag for flag in upload.flags.all()] == [flag1, flag2]
682-
mock_metrics.assert_has_calls(
683-
[call("upload.cli.version"), call("uploads.accepted", 1)]
684-
)
685657

686658
archive_service = ArchiveService(repository)
687659
assert upload.storage_path == MinioEndpoints.raw_with_upload_id.get_path(
@@ -887,10 +859,8 @@ def mock_config(self, mocker):
887859
@patch("upload.views.uploads.AnalyticsService")
888860
@patch("upload.helpers.jwt.decode")
889861
@patch("upload.helpers.PyJWKClient")
890-
@patch("shared.metrics.metrics.incr")
891862
def test_uploads_post_github_enterprise_oidc_auth_jwks_url(
892863
self,
893-
mock_metrics,
894864
mock_jwks_client,
895865
mock_jwt_decode,
896866
analytics_service_mock,

0 commit comments

Comments
 (0)