flakytest.dev anze3db flakytest
Tests / apps/api/tests.py

ProfileUploadTest::test_minimal_document

First seen 3 weeks ago in 78a4357
CI github-actions:test 12 runs
Average
63 ms
median 68 ms
max 90 ms
Phases
Setup 0.66 ms Call 62 ms Teardown 0.17 ms
Categories
Database 40 ms App code 2 ms Other (Libraries, Unsampled, pytest) 21 ms

49 database queries per run

Needs 102 KB of memory (max 768 KB)

Duration per run

Where the time goes

Latest run in ci:github-actions:test, 16 hours ago · open run
Show pytest frames
call74 ms98.8%
ProfileUploadTest.test_minimal_documentapps/api/tests.py:915 response = self.upload({"format": "flakytest-profile", "version": 1, "run": {"id": "x"}})74 ms98.8%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(57 ms76.6%
Client.postdjango/test/client.py:115357 ms76.6%
RequestFactory.postdjango/test/client.py:49957 ms76.6%
RequestFactory.genericdjango/test/client.py:67157 ms76.6%
Client.requestdjango/test/client.py:108257 ms76.6%
ClientHandler.__call__django/test/client.py:17348 ms64.5%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6248 ms64.5%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10448 ms64.5%
WhiteNoise.add_fileswhitenoise/base.py:10845 ms60.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12045 ms60.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13145 ms60.5%
WhiteNoise.get_static_filewhitenoise/base.py:20841 ms54.4%
StaticFile.__init__whitenoise/responders.py:7338 ms50.4%
StaticFile.get_headerswhitenoise/responders.py:17836 ms48.4%
parsedate<stdlib>/email/_parseaddr.py:18532 ms42.3%
parsedate_tz<stdlib>/email/_parseaddr.py:502 ms2.0%
_parsedate_tz<stdlib>/email/_parseaddr.py:1172 ms2.0%
parsedate<stdlib>/email/_parseaddr.py:1863 ms4.0%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.0%
formatdate<stdlib>/email/utils.py:2662 ms2.0%
format_datetime<stdlib>/email/utils.py:2842 ms2.0%
StaticFile.__init__whitenoise/responders.py:772 ms2.0%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms2.0%
__init____init__:-12 ms2.0%
Headers.__init__<stdlib>/wsgiref/headers.py:442 ms2.0%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms2.0%
StaticFile.__init__whitenoise/responders.py:742 ms2.0%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.0%
Headers.get<stdlib>/wsgiref/headers.py:1052 ms2.0%
WhiteNoise.get_static_filewhitenoise/base.py:2035 ms6.0%
WhiteNoise.add_cache_headerswhitenoise/base.py:2243 ms4.0%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1763 ms4.0%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1973 ms4.0%
URLMixin.urldebug_toolbar/panels/staticfiles.py:203 ms4.0%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2053 ms4.0%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1782 ms2.0%
urlsplit<stdlib>/urllib/parse.py:5822 ms2.0%
_urlsplit<stdlib>/urllib/parse.py:5982 ms2.0%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1772 ms2.0%
urldefrag<stdlib>/urllib/parse.py:7842 ms2.0%
<lambda><string>:12 ms2.0%
WhiteNoise.add_cache_headerswhitenoise/base.py:2272 ms2.0%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms2.0%
Headers.__delitem__<stdlib>/wsgiref/headers.py:712 ms2.0%
WhiteNoise.add_fileswhitenoise/base.py:1073 ms4.0%
isdir<frozen genericpath>:522 ms2.0%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2602 ms2.0%
ClientHandler.__call__django/test/client.py:1869 ms12.1%
BaseHandler.get_responsedjango/core/handlers/base.py:1419 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1309 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1239 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:349 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
BaseHandler._get_responsedjango/core/handlers/base.py:1989 ms12.1%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:659 ms12.1%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:379 ms12.1%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:649 ms12.1%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:758 ms10.1%
profile_uploadapps/api/urls.py:1506 ms8.1%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()3 ms4.0%
QuerySet.firstdjango/db/models/query.py:11453 ms4.0%
QuerySet.__iter__django/db/models/query.py:3903 ms4.0%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.0%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms2.0%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.0%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms2.0%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15252 ms2.0%
get_or_create_numberedapps/projects/models.py:23 with transaction.atomic():2 ms2.0%
Atomic.__enter__django/db/transaction.py:2112 ms2.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.0%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.0%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet.createdjango/db/models/query.py:6692 ms2.0%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11672 ms2.0%
Model._do_insertdjango/db/models/base.py:12182 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet._insertdjango/db/models/query.py:19182 ms2.0%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
profile_uploadapps/api/urls.py:154 part = ProfilePart.objects.create(2 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet.createdjango/db/models/query.py:6692 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11672 ms2.0%
Model._do_insertdjango/db/models/base.py:12182 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet._insertdjango/db/models/query.py:19182 ms2.0%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))2 ms2.0%
get_object_or_404django/shortcuts.py:902 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
ProfileUploadTest.uploadapps/api/tests.py:49517 ms22.2%
_SharedTaskProxy.__call__potatoq/app.py:76317 ms22.2%
Task.__call__potatoq/task.py:18917 ms22.2%
process_profileapps/api/tasks.py:23912 ms16.1%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)9 ms12.1%
claim_partapps/projects/profiles.py:3993 ms4.0%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(3 ms4.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms4.0%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
QuerySet.get_or_createdjango/db/models/query.py:9922 ms2.0%
Atomic.__exit__django/db/transaction.py:2472 ms2.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.0%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.0%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:379 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:381 ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads2 ms2.0%
claim_partapps/projects/profiles.py:397 project = profile.project2 ms2.0%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.0%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:4672 ms2.0%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11102 ms2.0%
Model._do_updatedjango/db/models/base.py:12112 ms2.0%
QuerySet._updatedjango/db/models/query.py:13272 ms2.0%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profile_partapps/projects/profiles.py:359 or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()2 ms2.0%
QuerySet.existsdjango/db/models/query.py:13372 ms2.0%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.0%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profile_partapps/projects/profiles.py:368 ProfilePart.objects.filter(pk=part.pk).update(2 ms2.0%
QuerySet.updatedjango/db/models/query.py:13002 ms2.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profileapps/api/tasks.py:2533 ms4.0%
_SharedTaskProxy.__call__potatoq/app.py:7633 ms4.0%
Task.__call__potatoq/task.py:1893 ms4.0%
finalize_profile_partsapps/api/tasks.py:2593 ms4.0%
finalize_profileapps/projects/profiles.py:500 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
finalize_profileapps/projects/profiles.py:509 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms2.0%
QuerySet.deletedjango/db/models/query.py:12382 ms2.0%
Collector.deletedjango/db/models/deletion.py:4712 ms2.0%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
Estimated from 49 samples; phase durations are exact. Frames from pytest and pluggy are hidden .

Hot lines in your code

apps/api/tests.py:487
response = self.client.post(
ProfileUploadTest.upload · Libraries
48 ms
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered · Database
3 ms
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save · Database
3 ms
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment · Database
3 ms
apps/api/urls.py:72
project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))
api_request.<locals>.decorator.<locals>.wrapped_view · Database
2 ms
apps/projects/models.py:23
with transaction.atomic():
get_or_create_numbered · Database
2 ms
apps/api/urls.py:154
part = ProfilePart.objects.create(
profile_upload · Database
2 ms
apps/api/tasks.py:237
part = ProfilePart.objects.select_related("profile").get(id=part_id)
process_profile · Database
2 ms
apps/projects/profiles.py:359
or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()
process_profile_part · Database
2 ms
apps/projects/profiles.py:379
profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)
claim_part · Database
2 ms

Fixtures

Exact setup time
_dj_autoclear_mailbox function 0.05 ms
_django_db_marker function 0.04 ms
_django_set_urlconf function 0.04 ms
_template_string_if_invalid_marker function 0.04 ms
_live_server_helper function 0.03 ms
_django_clear_site_cache function 0.03 ms
monkeypatch function 0.02 ms

Database

49 queries · 15 ms

Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).

4×
SELECT "projects_profile"."id", "projects_profile"."project_id", "projects_profile"."number", "projects_profile"."environment_id", "projects_profile"."session_id", "projects_profile"."run_id", "projects_profile"."commit_id", "projects_profile"."ingest_id", "projects_profile"."external_id", "project…
4×
SELECT "projects_profilepart"."id", "projects_profilepart"."profile_id", "projects_profilepart"."index", "projects_profilepart"."count", "projects_profilepart"."checksum", "projects_profilepart"."status", "projects_profilepart"."error", "projects_profilepart"."tests_count", "projects_profilepart"."…
3×
SELECT "projects_environment"."id", "projects_environment"."project_id", "projects_environment"."name", "projects_environment"."kind", "projects_environment"."provider", "projects_environment"."details", "projects_environment"."date_first_seen", "projects_environment"."date_last_seen" FROM "project…

Biggest pieces of work

call test body
apps/api/tests.py:915
74 ms

Reliability

12 results · 0 CI failures · 0 local failures

This test hasn't failed recently.

History

Latest 12 results, oldest first in the strip
When Environment Outcome Duration Commit
16 hours ago CI github-actions:test passed 75 ms e141198 main Profile
1 week, 5 days ago CI github-actions:test passed 40 ms 46ec2aa main Profile
2 weeks, 1 day ago CI github-actions:test passed 61 ms afde85b main Profile
2 weeks, 1 day ago CI github-actions:test passed 50 ms fe29f9d main Profile
2 weeks, 1 day ago CI github-actions:test passed 90 ms 044719a main Profile
2 weeks, 2 days ago CI github-actions:test passed 40 ms b3fedae main Profile
2 weeks, 4 days ago CI github-actions:test passed 75 ms 43c4eda main Profile
2 weeks, 6 days ago CI github-actions:test passed 68 ms 9caa567 main Profile
2 weeks, 6 days ago CI github-actions:test passed 68 ms ec75501 main Profile
3 weeks ago CI github-actions:test passed 77 ms d2c12e5 main Profile
3 weeks ago CI github-actions:test passed 42 ms 0b902f6 main Profile
3 weeks ago CI github-actions:test passed 68 ms 78a4357 main Profile