Tests / apps/api/tests.py
ProfileUploadTest::test_upload_gzip_without_content_encoding
First seen 7 hours ago in 78a4357
CI
github-actions:test
5 runs
Average
89 ms
median 84 ms
max 140 ms
max 140 ms
Phases
Setup 0.76 ms
Call 88 ms
Teardown 0.19 ms
Categories
Database 63 ms
App code 3 ms
Other (Libraries, Serialization, Unsampled, pytest) 23 ms
60 database queries per run
Needs 337 KB of memory (max 836 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 17 minutes ago ·
open run
call83 ms98.7%
ProfileUploadTest.test_upload_gzip_without_content_encodingapps/api/tests.py:585 response = self.upload(gzip.compress(json.dumps(self.document()).encode()))77 ms92.2%
ProfileUploadTest.uploadapps/api/tests.py:49544 ms52.7%
_SharedTaskProxy.__call__potatoq/app.py:76344 ms52.7%
Task.__call__potatoq/task.py:18944 ms52.7%
process_profileapps/api/tasks.py:23924 ms28.5%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)11 ms13.2%
claim_partapps/projects/profiles.py:3784 ms4.4%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(4 ms4.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms4.4%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.2%
QuerySet.getdjango/db/models/query.py:6252 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:15512 ms2.2%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.2%
QuerySet.createdjango/db/models/query.py:6692 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:11672 ms2.2%
Model._do_insertdjango/db/models/base.py:12182 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 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%
claim_partapps/projects/profiles.py:383 commit, _ = Commit.objects.get_or_create(4 ms4.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms4.4%
QuerySet.get_or_createdjango/db/models/query.py:9924 ms4.4%
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:3672 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%
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:3752 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%
claim_partapps/projects/profiles.py:360 ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads2 ms2.2%
QuerySet.deletedjango/db/models/query.py:12382 ms2.2%
Collector.deletedjango/db/models/deletion.py:4712 ms2.2%
QuerySet._raw_deletedjango/db/models/query.py:12602 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%
claim_partapps/projects/profiles.py:4462 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:3446 ms6.6%
upsert_testsapps/projects/profiles.py:4516 ms6.6%
TestManager.upsertapps/projects/models.py:2292 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%
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:335 part = ProfilePart.objects.filter(pk=part.pk).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%
process_profile_partapps/projects/profiles.py:338 or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()2 ms2.2%
QuerySet.existsdjango/db/models/query.py:13372 ms2.2%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.2%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 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:345 write_perfs(profile, part, entries, tests)2 ms2.2%
write_perfsapps/projects/profiles.py:457 TestPerf.objects.filter(profile=profile, part=part.index).delete()2 ms2.2%
QuerySet.deletedjango/db/models/query.py:12382 ms2.2%
Collector.deletedjango/db/models/deletion.py:4712 ms2.2%
QuerySet._raw_deletedjango/db/models/query.py:12602 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:3462 ms2.2%
write_snapshotsapps/projects/profiles.py:313 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:1382 ms2.2%
Connection.waitpsycopg/connection.py:4952 ms2.2%
BaseCursor._executemany_gen_pipelinepsycopg/_cursor_base.py:2322 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%
process_profileapps/api/tasks.py:25318 ms21.9%
_SharedTaskProxy.__call__potatoq/app.py:76318 ms21.9%
Task.__call__potatoq/task.py:18918 ms21.9%
finalize_profile_partsapps/api/tasks.py:259 if finalize_profile(profile_id):17 ms19.7%
finalize_profileapps/projects/profiles.py:4966 ms6.6%
add_perfsapps/projects/rollups.py:30 for perf in perfs: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%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.2%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.2%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(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: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%
RelatedIn.as_sqldjango/db/models/fields/related_lookups.py:952 ms2.2%
In.as_sqldjango/db/models/lookups.py:5562 ms2.2%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2392 ms2.2%
In.process_rhsdjango/db/models/lookups.py:5352 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:19242 ms2.2%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18692 ms2.2%
SQLInsertCompiler.assemble_as_sqldjango/db/backends/postgresql/compiler.py:652 ms2.2%
ForeignKey.db_typedjango/db/models/fields/related.py:12232 ms2.2%
BigAutoField.rel_db_typedjango/db/models/fields/__init__.py:28822 ms2.2%
Field.__init__django/db/models/fields/__init__.py:2172 ms2.2%
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:3672 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%
finalize_profileapps/projects/profiles.py:483 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:492 for duplicate in duplicates:2 ms2.2%
QuerySet.__iter__django/db/models/query.py:3902 ms2.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.2%
ValuesIterable.__iter__django/db/models/query.py:2222 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:7672 ms2.2%
finalize_profileapps/projects/profiles.py:495 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:16112 ms2.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.2%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:872 ms2.2%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:4912 ms2.2%
SQLCompiler._order_by_pairsdjango/db/models/sql/compiler.py:4742 ms2.2%
finalize_profileapps/projects/profiles.py:5042 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%
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:3752 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%
finalize_profile_partsapps/api/tasks.py:2602 ms2.2%
Task.delaypotatoq/task.py:2572 ms2.2%
Task.apply_asyncpotatoq/task.py:2822 ms2.2%
Potatoq.publishpotatoq/app.py:5252 ms2.2%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_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%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(33 ms39.5%
Client.postdjango/test/client.py:115333 ms39.5%
RequestFactory.postdjango/test/client.py:49933 ms39.5%
RequestFactory.genericdjango/test/client.py:67133 ms39.5%
Client.requestdjango/test/client.py:108233 ms39.5%
ClientHandler.__call__django/test/client.py:17322 ms26.3%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6222 ms26.3%
__init____init__:-122 ms26.3%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10422 ms26.3%
WhiteNoise.add_fileswhitenoise/base.py:10822 ms26.3%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12015 ms17.6%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13115 ms17.6%
WhiteNoise.get_static_filewhitenoise/base.py:20811 ms13.2%
StaticFile.__init__whitenoise/responders.py:734 ms4.4%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.2%
StaticFile.get_headerswhitenoise/responders.py:1802 ms2.2%
StaticFile.__init__whitenoise/responders.py:774 ms4.4%
StaticFile.get_alternativeswhitenoise/responders.py:2062 ms2.2%
compile<stdlib>/re/__init__.py:2892 ms2.2%
<GC>~2 ms2.2%
StaticFile.get_alternativeswhitenoise/responders.py:2012 ms2.2%
StaticFile.__init__whitenoise/responders.py:742 ms2.2%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.2%
StaticFile.__init__whitenoise/responders.py:762 ms2.2%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms2.2%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms2.2%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms2.2%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms2.2%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms2.2%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms2.2%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms2.2%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms2.2%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1842 ms2.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms6.6%
scantreewhitenoise/base.py:2626 ms6.6%
scantreewhitenoise/base.py:2626 ms6.6%
scantreewhitenoise/base.py:2622 ms2.2%
scantreewhitenoise/base.py:2622 ms2.2%
scantreewhitenoise/base.py:2622 ms2.2%
scantreewhitenoise/base.py:2642 ms2.2%
scantreewhitenoise/base.py:2602 ms2.2%
scantreewhitenoise/base.py:2642 ms2.2%
ClientHandler.__call__django/test/client.py:18611 ms13.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14111 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13011 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12311 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30911 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3411 ms13.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5511 ms13.2%
BaseHandler._get_responsedjango/core/handlers/base.py:19811 ms13.2%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6511 ms13.2%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3711 ms13.2%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6411 ms13.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:756 ms6.6%
profile_uploadapps/api/urls.py:1504 ms4.4%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()4 ms4.4%
QuerySet.firstdjango/db/models/query.py:11454 ms4.4%
QuerySet.__iter__django/db/models/query.py:3904 ms4.4%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms4.4%
ModelIterable.__iter__django/db/models/query.py:954 ms4.4%
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:3172 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%
profile_uploadapps/api/urls.py:154 part = ProfilePart.objects.create(2 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet.createdjango/db/models/query.py:6692 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:11672 ms2.2%
Model._do_insertdjango/db/models/base.py:12182 ms2.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.2%
QuerySet._insertdjango/db/models/query.py:19182 ms2.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))4 ms4.4%
get_object_or_404django/shortcuts.py:904 ms4.4%
QuerySet.getdjango/db/models/query.py:6252 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%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms2.2%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms2.2%
QuerySet.updatedjango/db/models/query.py:13002 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%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()4 ms4.4%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms2.2%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 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%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms2.2%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms2.2%
Atomic.__exit__django/db/transaction.py:2862 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:3752 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%
ProfileUploadTest.test_upload_gzip_without_content_encodingapps/api/tests.py:5872 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%
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
|
22 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
|
4 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
4 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
4 ms |
|
apps/projects/profiles.py:383
commit, _ = Commit.objects.get_or_create(
claim_part
· Database
|
4 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
4 ms |
|
apps/api/tasks.py:259
if finalize_profile(profile_id):
finalize_profile_parts
· Database
|
4 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/api/tasks.py:237
part = ProfilePart.objects.select_related("profile").get(id=part_id)
process_profile
· Database
|
2 ms |
Fixtures
Exact setup time| _template_string_if_invalid_marker function | 0.06 ms |
| _dj_autoclear_mailbox function | 0.06 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.05 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.04 ms |
| monkeypatch function | 0.03 ms |
Database
60 queries · 23 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:585
|
79 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
4 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 | 84 ms | Profile |
| 42 minutes ago | CI github-actions:test | passed | 80 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 140 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 45 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 99 ms | Profile |