Tests / apps/api/tests.py
ProfileUploadTest::test_minimal_document
First seen 7 hours ago in 78a4357
CI
github-actions:test
5 runs
Average
64 ms
median 68 ms
max 77 ms
max 77 ms
Phases
Setup 0.70 ms
Call 63 ms
Teardown 0.17 ms
Categories
Database 38 ms
App code 2 ms
Other (Libraries, Unsampled, pytest) 25 ms
49 database queries per run
Needs 246 KB of memory (max 768 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 17 minutes ago ·
open run
call67 ms98.7%
ProfileUploadTest.test_minimal_documentapps/api/tests.py:915 response = self.upload({"format": "flakytest-profile", "version": 1, "run": {"id": "x"}})61 ms90.4%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(39 ms57.5%
Client.postdjango/test/client.py:115339 ms57.5%
RequestFactory.postdjango/test/client.py:49939 ms57.5%
RequestFactory.genericdjango/test/client.py:67139 ms57.5%
Client.requestdjango/test/client.py:108239 ms57.5%
ClientHandler.__call__django/test/client.py:17324 ms35.6%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6224 ms35.6%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10424 ms35.6%
WhiteNoise.add_fileswhitenoise/base.py:10824 ms35.6%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12019 ms27.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13119 ms27.4%
WhiteNoise.get_static_filewhitenoise/base.py:20813 ms19.2%
StaticFile.__init__whitenoise/responders.py:736 ms8.2%
StaticFile.get_headerswhitenoise/responders.py:1764 ms5.5%
formatdate<stdlib>/email/utils.py:2664 ms5.5%
StaticFile.get_headerswhitenoise/responders.py:1782 ms2.7%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.7%
Headers.get<stdlib>/wsgiref/headers.py:1052 ms2.7%
StaticFile.__init__whitenoise/responders.py:774 ms5.5%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms2.7%
__init____init__:-12 ms2.7%
StaticFile.get_alternativeswhitenoise/responders.py:2012 ms2.7%
StaticFile.__init__whitenoise/responders.py:722 ms2.7%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms2.7%
StaticFile.__init__whitenoise/responders.py:762 ms2.7%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1902 ms2.7%
Response.__init__whitenoise/responders.py:182 ms2.7%
<GC>~2 ms2.7%
WhiteNoise.get_static_filewhitenoise/base.py:2034 ms5.5%
WhiteNoise.add_cache_headerswhitenoise/base.py:2244 ms5.5%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1764 ms5.5%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1974 ms5.5%
URLMixin.urldebug_toolbar/panels/staticfiles.py:204 ms5.5%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms2.7%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1862 ms2.7%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2112 ms2.7%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms2.7%
WhiteNoise.add_mime_headerswhitenoise/base.py:2162 ms2.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms8.2%
scantreewhitenoise/base.py:2624 ms5.5%
scantreewhitenoise/base.py:2624 ms5.5%
scantreewhitenoise/base.py:2622 ms2.7%
scantreewhitenoise/base.py:2622 ms2.7%
scantreewhitenoise/base.py:2622 ms2.7%
scantreewhitenoise/base.py:2642 ms2.7%
scantreewhitenoise/base.py:2642 ms2.7%
ClientHandler.__call__django/test/client.py:18615 ms21.9%
BaseHandler.get_responsedjango/core/handlers/base.py:14115 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13015 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12315 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3415 ms21.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms21.9%
BaseHandler._get_responsedjango/core/handlers/base.py:19815 ms21.9%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6515 ms21.9%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3715 ms21.9%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6415 ms21.9%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:759 ms13.7%
profile_uploadapps/api/urls.py:1506 ms8.2%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()4 ms5.5%
QuerySet.firstdjango/db/models/query.py:11454 ms5.5%
QuerySet.__iter__django/db/models/query.py:3904 ms5.5%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms5.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.7%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.7%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.7%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.7%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms2.7%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.7%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms2.7%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15262 ms2.7%
Col.get_db_convertersdjango/db/models/expressions.py:13432 ms2.7%
ForeignKey.get_db_convertersdjango/db/models/fields/related.py:-12 ms2.7%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet.createdjango/db/models/query.py:6692 ms2.7%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.7%
Model.savedjango/db/models/base.py:8742 ms2.7%
Model.save_basedjango/db/models/base.py:9662 ms2.7%
Model._save_tabledjango/db/models/base.py:11672 ms2.7%
Model._do_insertdjango/db/models/base.py:12182 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet._insertdjango/db/models/query.py:19182 ms2.7%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
profile_uploadapps/api/urls.py:154 part = ProfilePart.objects.create(2 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet.createdjango/db/models/query.py:6692 ms2.7%
Model.savedjango/db/models/base.py:8742 ms2.7%
Model.save_basedjango/db/models/base.py:9662 ms2.7%
Model._save_tabledjango/db/models/base.py:11672 ms2.7%
Model._do_insertdjango/db/models/base.py:12182 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet._insertdjango/db/models/query.py:19182 ms2.7%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
profile_uploadapps/api/urls.py:1632 ms2.7%
Project.urlapps/projects/models.py:59 return reverse(name, args=[self.organization.slug, self.slug, *args])2 ms2.7%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.7%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.7%
QuerySet.getdjango/db/models/query.py:6352 ms2.7%
QuerySet.__len__django/db/models/query.py:3722 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))4 ms5.5%
touch_tokenapps/api/urls.py:56 .filter(Q(date_last_used__lt=now - TOKEN_TOUCH_INTERVAL) | Q(date_last_used=None), token=token)2 ms2.7%
QuerySet.filterdjango/db/models/query.py:15422 ms2.7%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.7%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.7%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.7%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.7%
Query.build_filterdjango/db/models/sql/query.py:15882 ms2.7%
Query.check_related_objectsdjango/db/models/sql/query.py:13812 ms2.7%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms2.7%
QuerySet.updatedjango/db/models/query.py:13002 ms2.7%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
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.7%
get_object_or_404django/shortcuts.py:902 ms2.7%
QuerySet.getdjango/db/models/query.py:6352 ms2.7%
QuerySet.__len__django/db/models/query.py:3722 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
ProfileUploadTest.uploadapps/api/tests.py:49522 ms32.9%
_SharedTaskProxy.__call__potatoq/app.py:76322 ms32.9%
Task.__call__potatoq/task.py:18922 ms32.9%
process_profileapps/api/tasks.py:23911 ms16.4%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)9 ms13.7%
claim_partapps/projects/profiles.py:3784 ms5.5%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(4 ms5.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms5.5%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.7%
QuerySet.getdjango/db/models/query.py:6352 ms2.7%
QuerySet.__len__django/db/models/query.py:3722 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.7%
QuerySet.createdjango/db/models/query.py:6692 ms2.7%
Model.savedjango/db/models/base.py:8742 ms2.7%
Model.save_basedjango/db/models/base.py:9662 ms2.7%
Model._save_tabledjango/db/models/base.py:11672 ms2.7%
Model._do_insertdjango/db/models/base.py:12182 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet._insertdjango/db/models/query.py:19182 ms2.7%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
Atomic.__enter__django/db/transaction.py:2112 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.7%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
claim_partapps/projects/profiles.py:360 ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads2 ms2.7%
QuerySet.deletedjango/db/models/query.py:12372 ms2.7%
Collector.collectdjango/db/models/deletion.py:2792 ms2.7%
claim_partapps/projects/profiles.py:376 project = profile.project2 ms2.7%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.7%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.7%
QuerySet.getdjango/db/models/query.py:6352 ms2.7%
QuerySet.__len__django/db/models/query.py:3722 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
process_profile_partapps/projects/profiles.py:345 write_perfs(profile, part, entries, tests)2 ms2.7%
Atomic.__enter__django/db/transaction.py:2112 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.7%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
process_profileapps/api/tasks.py:25311 ms16.4%
_SharedTaskProxy.__call__potatoq/app.py:76311 ms16.4%
Task.__call__potatoq/task.py:18911 ms16.4%
finalize_profile_partsapps/api/tasks.py:259 if finalize_profile(profile_id):11 ms16.4%
finalize_profileapps/projects/profiles.py:479 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms2.7%
QuerySet.getdjango/db/models/query.py:6252 ms2.7%
QuerySet.filterdjango/db/models/query.py:15422 ms2.7%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.7%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.7%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.7%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.7%
Query.build_filterdjango/db/models/sql/query.py:16132 ms2.7%
Query.build_lookupdjango/db/models/sql/query.py:14302 ms2.7%
finalize_profileapps/projects/profiles.py:488 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet.filterdjango/db/models/query.py:15422 ms2.7%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.7%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.7%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.7%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.7%
Query.build_filterdjango/db/models/sql/query.py:16132 ms2.7%
Query.build_lookupdjango/db/models/sql/query.py:14402 ms2.7%
Lookup.__init__django/db/models/lookups.py:352 ms2.7%
finalize_profileapps/projects/profiles.py:492 for duplicate in duplicates:2 ms2.7%
QuerySet.__iter__django/db/models/query.py:3902 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ValuesIterable.__iter__django/db/models/query.py:2222 ms2.7%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
finalize_profileapps/projects/profiles.py:495 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()2 ms2.7%
QuerySet.firstdjango/db/models/query.py:11452 ms2.7%
QuerySet.__iter__django/db/models/query.py:3902 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
finalize_profileapps/projects/profiles.py:5042 ms2.7%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.7%
Model.savedjango/db/models/base.py:8742 ms2.7%
Model.save_basedjango/db/models/base.py:9662 ms2.7%
Model._save_tabledjango/db/models/base.py:11102 ms2.7%
Model._do_updatedjango/db/models/base.py:12112 ms2.7%
QuerySet._updatedjango/db/models/query.py:13272 ms2.7%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.7%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
Atomic.__exit__django/db/transaction.py:2472 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.7%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.7%
Cursor.executepsycopg/cursor.py:1132 ms2.7%
Connection.waitpsycopg/connection.py:4952 ms2.7%
ProfileUploadTest.test_minimal_documentapps/api/tests.py:9172 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.7%
QuerySet.getdjango/db/models/query.py:6352 ms2.7%
QuerySet.__len__django/db/models/query.py:3722 ms2.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.7%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.7%
ProfileUploadTest.test_minimal_documentapps/api/tests.py:9202 ms2.7%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms2.7%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms2.7%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms2.7%
Atomic.__exit__django/db/transaction.py:2832 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4132 ms2.7%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3702 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3202 ms2.7%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2982 ms2.7%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.7%
DatabaseWrapper.create_cursordjango/db/backends/postgresql/base.py:4352 ms2.7%
AdaptersMap.get_loaderpsycopg/_adapters_map.py:2732 ms2.7%
Estimated from 36 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
|
24 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
4 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
4 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
4 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/api/urls.py:56
.filter(Q(date_last_used__lt=now - TOKEN_TOUCH_INTERVAL) | Q(date_last_used=None), token=token)
touch_token
· Database
|
2 ms |
|
apps/api/urls.py:59
SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)
touch_token
· Database
|
2 ms |
|
apps/api/urls.py:154
part = ProfilePart.objects.create(
profile_upload
· Database
|
2 ms |
|
apps/projects/models.py:59
return reverse(name, args=[self.organization.slug, self.slug, *args])
Project.url
· Database
|
2 ms |
|
apps/projects/profiles.py:342
profile = claim_part(part, document)
process_profile_part
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.07 ms |
| _django_db_marker function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
49 queries · 16 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
|
65 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
Reliability
5 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 5 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 17 minutes ago | CI github-actions:test | passed | 68 ms | Profile |
| 42 minutes ago | CI github-actions:test | passed | 68 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 77 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 42 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 68 ms | Profile |