CI
github-actions:test
12 runs
Average
73 ms
median 80 ms
max 99 ms
max 99 ms
Phases
Setup 0.70 ms
Call 72 ms
Teardown 0.16 ms
Categories
Database 54 ms
App code 2 ms
Test code 0.15 ms
Other (Libraries, Serialization, Unsampled, pytest) 16 ms
61 database queries per run
Needs 100 KB of memory (max 408 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call74 ms98.8%
ProfileUploadTest.test_upload_gzipapps/api/tests.py:578 response = self.upload(gzip.compress(json.dumps(self.document()).encode()), content_encoding="gzip")69 ms92.0%
ProfileUploadTest.uploadapps/api/tests.py:49542 ms56.1%
_SharedTaskProxy.__call__potatoq/app.py:76342 ms56.1%
Task.__call__potatoq/task.py:18942 ms56.1%
process_profileapps/api/tasks.py:23930 ms40.4%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)20 ms26.9%
claim_partapps/projects/profiles.py:3998 ms11.2%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(7 ms9.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:877 ms9.0%
QuerySet.get_or_createdjango/db/models/query.py:9877 ms9.0%
QuerySet.getdjango/db/models/query.py:6253 ms4.5%
QuerySet.filterdjango/db/models/query.py:15423 ms4.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15603 ms4.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15703 ms4.5%
Query.add_qdjango/db/models/sql/query.py:16713 ms4.5%
Query._add_qdjango/db/models/sql/query.py:17033 ms4.5%
Query.build_filterdjango/db/models/sql/query.py:16133 ms4.5%
Query.build_lookupdjango/db/models/sql/query.py:14403 ms4.5%
Lookup.__init__django/db/models/lookups.py:353 ms4.5%
RelatedLookupMixin.get_prep_lookupdjango/db/models/fields/related_lookups.py:1042 ms2.2%
QuerySet.getdjango/db/models/query.py:6353 ms4.5%
QuerySet.__len__django/db/models/query.py:3723 ms4.5%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.5%
ModelIterable.__iter__django/db/models/query.py:953 ms4.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.2%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.2%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.2%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2552 ms2.2%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10302 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
get_or_create_environmentapps/projects/environments.py:62 now = timezone.now()2 ms2.2%
claim_partapps/projects/profiles.py:397 project = profile.project7 ms9.0%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2577 ms9.0%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2227 ms9.0%
QuerySet.getdjango/db/models/query.py:6357 ms9.0%
QuerySet.__len__django/db/models/query.py:3727 ms9.0%
QuerySet._fetch_alldjango/db/models/query.py:20007 ms9.0%
ModelIterable.__iter__django/db/models/query.py:955 ms6.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms4.5%
Cursor.executepsycopg/cursor.py:1133 ms4.5%
Connection.waitpsycopg/connection.py:4953 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2063 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2863 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:783 ms4.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms2.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.2%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms2.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.2%
Exact.as_sqldjango/db/models/lookups.py:4072 ms2.2%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2392 ms2.2%
IntegerFieldOverflow.process_rhsdjango/db/models/lookups.py:4572 ms2.2%
Lookup.process_rhsdjango/db/models/lookups.py:1382 ms2.2%
FieldGetDbPrepValueMixin.get_db_prep_lookupdjango/db/models/lookups.py:2622 ms2.2%
ModelIterable.__iter__django/db/models/query.py:1282 ms2.2%
Model.from_dbdjango/db/models/base.py:6052 ms2.2%
Model.__init__django/db/models/base.py:5132 ms2.2%
claim_partapps/projects/profiles.py:404 commit, _ = Commit.objects.get_or_create(3 ms4.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms4.5%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.2%
QuerySet.getdjango/db/models/query.py:6352 ms2.2%
QuerySet.__len__django/db/models/query.py:3722 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
QuerySet.get_or_createdjango/db/models/query.py:9922 ms2.2%
Atomic.__exit__django/db/transaction.py:2472 ms2.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.2%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.2%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3742 ms2.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.2%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3202 ms2.2%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2982 ms2.2%
claim_partapps/projects/profiles.py:4672 ms2.2%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.2%
Model.savedjango/db/models/base.py:8742 ms2.2%
Model.save_basedjango/db/models/base.py:9662 ms2.2%
Model._save_tabledjango/db/models/base.py:11102 ms2.2%
Model._do_updatedjango/db/models/base.py:12112 ms2.2%
QuerySet._updatedjango/db/models/query.py:13272 ms2.2%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.2%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
process_profile_partapps/projects/profiles.py:3657 ms9.0%
upsert_testsapps/projects/profiles.py:4727 ms9.0%
TestManager.upsertapps/projects/models.py:2293 ms4.5%
TestManager.slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ValuesListIterable.__iter__django/db/models/query.py:2382 ms2.2%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms2.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.2%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms2.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.2%
In.as_sqldjango/db/models/lookups.py:5562 ms2.2%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2382 ms2.2%
BuiltinLookup.process_lhsdjango/db/models/lookups.py:2302 ms2.2%
Lookup.process_lhsdjango/db/models/lookups.py:1092 ms2.2%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:2972 ms2.2%
BaseExpression.copydjango/db/models/expressions.py:4442 ms2.2%
copy<stdlib>/copy.py:1002 ms2.2%
TestManager.slugs_forapps/projects/models.py:242 taken = set(self.filter(project_id=project_id, slug__in=set(new.values())).values_list("slug", flat=True))2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms2.2%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
TestManager.upsertapps/projects/models.py:230 self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order2 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms2.2%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms2.2%
QuerySet._insertdjango/db/models/query.py:19182 ms2.2%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
TestManager.upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
process_profile_partapps/projects/profiles.py:3662 ms2.2%
write_perfsapps/projects/profiles.py:479 TestPerf.objects.bulk_create(2 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms2.2%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms2.2%
QuerySet._insertdjango/db/models/query.py:19182 ms2.2%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
process_profile_partapps/projects/profiles.py:3672 ms2.2%
write_snapshotsapps/projects/profiles.py:334 cursor.executemany(SNAPSHOT_UPSERT, batch)2 ms2.2%
CursorWrapper.executemanydjango/db/backends/utils.py:842 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executemanydjango/db/backends/utils.py:1142 ms2.2%
Cursor.executemanypsycopg/cursor.py:1372 ms2.2%
Connection._pipeline_nolockpsycopg/connection.py:4722 ms2.2%
Pipeline.__exit__psycopg/_pipeline.py:732 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
process_profileapps/api/tasks.py:25312 ms15.7%
_SharedTaskProxy.__call__potatoq/app.py:76312 ms15.7%
Task.__call__potatoq/task.py:18910 ms13.5%
finalize_profile_partsapps/api/tasks.py:25910 ms13.5%
finalize_profileapps/projects/profiles.py:500 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms2.2%
QuerySet.getdjango/db/models/query.py:6352 ms2.2%
QuerySet.__len__django/db/models/query.py:3722 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.2%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms2.2%
finalize_profileapps/projects/profiles.py:504 for part in ProfilePart.objects.filter(profile=profile).defer("document").order_by("index", "id"):2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
finalize_profileapps/projects/profiles.py:5102 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.filterdjango/db/models/query.py:15422 ms2.2%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.2%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.2%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.2%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.2%
Query.build_filterdjango/db/models/sql/query.py:15772 ms2.2%
Query.setup_joinsdjango/db/models/sql/query.py:19872 ms2.2%
finalize_profileapps/projects/profiles.py:516 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()2 ms2.2%
QuerySet.firstdjango/db/models/query.py:11452 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
finalize_profileapps/projects/profiles.py:5172 ms2.2%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(2 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms2.2%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms2.2%
QuerySet._insertdjango/db/models/query.py:19182 ms2.2%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
finalize_profileapps/projects/profiles.py:5252 ms2.2%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.2%
Model.savedjango/db/models/base.py:8742 ms2.2%
Model.save_basedjango/db/models/base.py:9662 ms2.2%
Model._save_tabledjango/db/models/base.py:11102 ms2.2%
Model._do_updatedjango/db/models/base.py:12112 ms2.2%
QuerySet._updatedjango/db/models/query.py:13272 ms2.2%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.2%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
Task.__call__potatoq/task.py:1872 ms2.2%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(25 ms33.7%
Client.postdjango/test/client.py:115325 ms33.7%
RequestFactory.postdjango/test/client.py:49925 ms33.7%
RequestFactory.genericdjango/test/client.py:67125 ms33.7%
Client.requestdjango/test/client.py:108225 ms33.7%
ClientHandler.__call__django/test/client.py:17317 ms22.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6217 ms22.4%
__init____init__:-117 ms22.4%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10415 ms20.2%
WhiteNoise.add_fileswhitenoise/base.py:10815 ms20.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12012 ms15.7%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13110 ms13.5%
WhiteNoise.get_static_filewhitenoise/base.py:2085 ms6.7%
StaticFile.__init__whitenoise/responders.py:733 ms4.5%
StaticFile.get_headerswhitenoise/responders.py:1672 ms2.2%
StaticFile.__init__whitenoise/responders.py:752 ms2.2%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.2%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms2.2%
WhiteNoise.get_static_filewhitenoise/base.py:2033 ms4.5%
WhiteNoise.add_cache_headerswhitenoise/base.py:2243 ms4.5%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1763 ms4.5%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1973 ms4.5%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms2.2%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms2.2%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1862 ms2.2%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms2.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1232 ms2.2%
WhiteNoise.is_compressed_variantwhitenoise/base.py:1892 ms2.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1153 ms4.5%
scantreewhitenoise/base.py:2602 ms2.2%
scantreewhitenoise/base.py:2622 ms2.2%
scantreewhitenoise/base.py:2622 ms2.2%
scantreewhitenoise/base.py:2602 ms2.2%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1112 ms2.2%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms2.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1202 ms2.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1312 ms2.2%
WhiteNoise.get_static_filewhitenoise/base.py:2082 ms2.2%
StaticFile.__init__whitenoise/responders.py:762 ms2.2%
ClientHandler.__call__django/test/client.py:1868 ms11.2%
BaseHandler.get_responsedjango/core/handlers/base.py:1418 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1308 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1238 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
MiddlewareMixin.__call__django/utils/deprecation.py:3098 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:348 ms11.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:558 ms11.2%
BaseHandler._get_responsedjango/core/handlers/base.py:1988 ms11.2%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:658 ms11.2%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:378 ms11.2%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:648 ms11.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:755 ms6.7%
profile_uploadapps/api/urls.py:1503 ms4.5%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()2 ms2.2%
QuerySet.firstdjango/db/models/query.py:11452 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.2%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.2%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms2.2%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms2.2%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms2.2%
get_or_create_numberedapps/projects/models.py:212 ms2.2%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms2.2%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.2%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.2%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.2%
profile_uploadapps/api/urls.py:1362 ms2.2%
read_uploadapps/projects/profiles.py:66 data = decompressor.decompress(body, MAX_DOCUMENT_SIZE + 1)2 ms2.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))3 ms4.5%
Atomic.__enter__django/db/transaction.py:2112 ms2.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.2%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.2%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3662 ms2.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.2%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3202 ms2.2%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2982 ms2.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:212 ms2.2%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms2.2%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
ProfileUploadTest.documentapps/api/tests.py:5002 ms2.2%
make_test_entryapps/projects/testing.py:164 "categories": {"password_hashing": round(setup * mixes["setup"].get("password_hashing", 0), 6)},2 ms2.2%
ProfileUploadTest.test_upload_gzipapps/api/tests.py:5802 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.getdjango/db/models/query.py:6352 ms2.2%
QuerySet.__len__django/db/models/query.py:3722 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ModelIterable.__iter__django/db/models/query.py:952 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
ProfileUploadTest.test_upload_gzipapps/api/tests.py:5822 ms2.2%
QuerySet.countdjango/db/models/query.py:6102 ms2.2%
Query.get_countdjango/db/models/sql/query.py:6512 ms2.2%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms2.2%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms2.2%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4842 ms2.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.2%
Cursor.executepsycopg/cursor.py:1132 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
teardown0.20 ms0.3%
Estimated from 45 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
|
17 ms |
|
apps/projects/profiles.py:397
project = profile.project
claim_part
· Database
|
7 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
7 ms |
|
apps/projects/profiles.py:404
commit, _ = Commit.objects.get_or_create(
claim_part
· Database
|
3 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
3 ms |
|
apps/projects/testing.py:164
"categories": {"password_hashing": round(setup * mixes["setup"].get("password_hashing", 0), 6)},
make_test_entry
· App code
|
2 ms |
|
apps/api/urls.py:73
touch_token(request.headers.get("Authorization"))
api_request.<locals>.decorator.<locals>.wrapped_view
· 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/projects/profiles.py:66
data = decompressor.decompress(body, MAX_DOCUMENT_SIZE + 1)
read_upload
· App code
|
2 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
2 ms |
Fixtures
Exact setup time| _template_string_if_invalid_marker function | 0.06 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.04 ms |
| _django_set_urlconf function | 0.04 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
61 queries · 21 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"."…
Biggest pieces of work
|
call test body
apps/api/tests.py:578
|
72 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
| teardown pytest internals | 0.20 ms |
Reliability
12 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 12 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 16 hours ago | CI github-actions:test | passed | 75 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 44 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 85 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 61 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 99 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 49 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 85 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 83 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 82 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 86 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 45 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 78 ms | Profile |