Tests / apps/projects/tests.py
RealProfileDocumentTest::test_call_tree
First seen 6 hours ago in 78a4357
CI
github-actions:test
3 runs
Average
195 ms
median 183 ms
max 239 ms
max 239 ms
Phases
Setup 180 ms
Call 15 ms
Teardown 0.45 ms
Categories
Database 97 ms
App code 14 ms
Other (Serialization, Libraries, pytest, Unsampled) 83 ms
89 database queries per run
Needs 2 MB of memory (max 2 MB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 6 hours ago ·
open run
setup163 ms89.1%
setUpClassdjango/test/testcases.py:1439 cls.setUpTestData()137 ms74.9%
setUpTestDataapps/projects/tests.py:83890 ms49.5%
store_profileapps/projects/testing.py:36354 ms29.7%
process_profile_partapps/projects/profiles.py:34628 ms15.6%
write_snapshotsapps/projects/profiles.py:31223 ms12.7%
<genexpr>apps/projects/profiles.py:31023 ms12.7%
rowapps/projects/profiles.py:306 compress(json.dumps(snapshot_document(document, entry), separators=(",", ":")).encode()),21 ms11.3%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)8 ms4.2%
compress<stdlib>/gzip.py:6348 ms4.2%
snapshot_documentapps/projects/profiles.py:266 str(new): stack_categories[str(old)] for old, new in node_ids.items() if str(old) in stack_categories5 ms2.8%
snapshot_documentapps/projects/profiles.py:2505 ms2.8%
node_idapps/projects/profiles.py:2455 ms2.8%
frame_idapps/projects/profiles.py:2283 ms1.4%
dumps<stdlib>/json/__init__.py:2423 ms1.4%
encode<stdlib>/json/encoder.py:2023 ms1.4%
iterencode<stdlib>/json/encoder.py:2633 ms1.4%
rowapps/projects/profiles.py:308 return [field.get_db_prep_save(value, connection) for field, value in zip(fields, values, strict=True)]3 ms1.4%
write_snapshotsapps/projects/profiles.py:313 cursor.executemany(SNAPSHOT_UPSERT, batch)5 ms2.8%
executemanydjango/db/backends/utils.py:845 ms2.8%
_execute_with_wrappersdjango/db/backends/utils.py:925 ms2.8%
_executemanydjango/db/backends/utils.py:1145 ms2.8%
executemanypsycopg/cursor.py:1393 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
executemanypsycopg/cursor.py:1373 ms1.4%
_pipeline_nolockpsycopg/connection.py:4683 ms1.4%
__exit__psycopg/_pipeline.py:733 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)16 ms8.5%
claim_partapps/projects/profiles.py:3785 ms2.8%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(5 ms2.8%
manager_methoddjango/db/models/manager.py:875 ms2.8%
get_or_createdjango/db/models/query.py:9923 ms1.4%
createdjango/db/models/query.py:6693 ms1.4%
savedjango/db/models/base.py:8743 ms1.4%
save_basedjango/db/models/base.py:9723 ms1.4%
_save_tabledjango/db/models/base.py:11683 ms1.4%
_do_insertdjango/db/models/base.py:12183 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
_insertdjango/db/models/query.py:19183 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:19253 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
_execute_genpsycopg/_cursor_base.py:2063 ms1.4%
_maybe_prepare_genpsycopg/_cursor_base.py:2863 ms1.4%
_execute_sendpsycopg/client_cursor.py:783 ms1.4%
get_or_createdjango/db/models/query.py:9873 ms1.4%
getdjango/db/models/query.py:6353 ms1.4%
__len__django/db/models/query.py:3723 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
claim_partapps/projects/profiles.py:4463 ms1.4%
saveapps/projects/models.py:466 super().save(*args, **kwargs)3 ms1.4%
savedjango/db/models/base.py:8743 ms1.4%
save_basedjango/db/models/base.py:9723 ms1.4%
_save_tabledjango/db/models/base.py:11173 ms1.4%
_do_updatedjango/db/models/base.py:12113 ms1.4%
_updatedjango/db/models/query.py:13273 ms1.4%
execute_returning_sqldjango/db/models/sql/compiler.py:21403 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:21113 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
claim_partapps/projects/profiles.py:359 ProfilePart.objects.filter(pk=part.pk).update(status=ProfilePart.StatusTypes.PENDING)3 ms1.4%
updatedjango/db/models/query.py:13003 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:21113 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
_execute_genpsycopg/_cursor_base.py:2063 ms1.4%
_maybe_prepare_genpsycopg/_cursor_base.py:2863 ms1.4%
_execute_sendpsycopg/client_cursor.py:783 ms1.4%
claim_partapps/projects/profiles.py:358 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)3 ms1.4%
getdjango/db/models/query.py:6353 ms1.4%
__len__django/db/models/query.py:3723 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
claim_partapps/projects/profiles.py:383 commit, _ = Commit.objects.get_or_create(3 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
get_or_createdjango/db/models/query.py:9873 ms1.4%
getdjango/db/models/query.py:6353 ms1.4%
__len__django/db/models/query.py:3723 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
process_profile_partapps/projects/profiles.py:3415 ms2.8%
load_documentapps/projects/profiles.py:112 return json.loads(gzip.decompress(bytes(part.document)))5 ms2.8%
loads<stdlib>/json/__init__.py:3523 ms1.4%
decode<stdlib>/json/decoder.py:3453 ms1.4%
raw_decode<stdlib>/json/decoder.py:3613 ms1.4%
decompress<stdlib>/gzip.py:6553 ms1.4%
process_profile_partapps/projects/profiles.py:335 part = ProfilePart.objects.filter(pk=part.pk).first()3 ms1.4%
firstdjango/db/models/query.py:11453 ms1.4%
__iter__django/db/models/query.py:3903 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
process_profile_partapps/projects/profiles.py:3443 ms1.4%
upsert_testsapps/projects/profiles.py:4513 ms1.4%
upsertapps/projects/models.py:2293 ms1.4%
slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))3 ms1.4%
__iter__django/db/models/query.py:3903 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:2383 ms1.4%
results_iterdjango/db/models/sql/compiler.py:15733 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
store_profileapps/projects/testing.py:364 finalize_profile(profile.id)18 ms9.9%
finalize_profileapps/projects/profiles.py:4968 ms4.2%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(5 ms2.8%
manager_methoddjango/db/models/manager.py:875 ms2.8%
bulk_createdjango/db/models/query.py:8335 ms2.8%
_batched_insertdjango/db/models/query.py:19565 ms2.8%
_insertdjango/db/models/query.py:19185 ms2.8%
execute_sqldjango/db/models/sql/compiler.py:19255 ms2.8%
executedjango/db/backends/utils.py:795 ms2.8%
_execute_with_wrappersdjango/db/backends/utils.py:925 ms2.8%
_executedjango/db/backends/utils.py:1055 ms2.8%
executepsycopg/cursor.py:1145 ms2.8%
waitpsycopg/connection.py:4835 ms2.8%
_execute_genpsycopg/_cursor_base.py:2053 ms1.4%
_convert_querypsycopg/_cursor_base.py:4643 ms1.4%
convertpsycopg/_queries.py:2893 ms1.4%
dumppsycopg/_queries.py:2993 ms1.4%
<genexpr>psycopg/_queries.py:3003 ms1.4%
quotepsycopg/adapt.py:593 ms1.4%
dumppsycopg/types/array.py:1863 ms1.4%
dump_listpsycopg/types/array.py:1773 ms1.4%
add_perfsapps/projects/rollups.py:853 ms1.4%
finalize_profileapps/projects/profiles.py:5045 ms2.8%
saveapps/projects/models.py:466 super().save(*args, **kwargs)5 ms2.8%
savedjango/db/models/base.py:8745 ms2.8%
save_basedjango/db/models/base.py:9725 ms2.8%
_save_tabledjango/db/models/base.py:11175 ms2.8%
_do_updatedjango/db/models/base.py:12115 ms2.8%
_updatedjango/db/models/query.py:13275 ms2.8%
execute_returning_sqldjango/db/models/sql/compiler.py:21405 ms2.8%
execute_sqldjango/db/models/sql/compiler.py:21115 ms2.8%
execute_sqldjango/db/models/sql/compiler.py:16245 ms2.8%
executedjango/db/backends/utils.py:795 ms2.8%
_execute_with_wrappersdjango/db/backends/utils.py:925 ms2.8%
_executedjango/db/backends/utils.py:1055 ms2.8%
executepsycopg/cursor.py:1145 ms2.8%
waitpsycopg/connection.py:4835 ms2.8%
finalize_profileapps/projects/profiles.py:495 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()3 ms1.4%
firstdjango/db/models/query.py:11453 ms1.4%
__iter__django/db/models/query.py:3903 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
finalize_profileapps/projects/profiles.py:479 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)3 ms1.4%
getdjango/db/models/query.py:6353 ms1.4%
__len__django/db/models/query.py:3723 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
store_profileapps/projects/testing.py:362 part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))10 ms5.7%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)8 ms4.2%
compress<stdlib>/gzip.py:6348 ms4.2%
manager_methoddjango/db/models/manager.py:873 ms1.4%
createdjango/db/models/query.py:6693 ms1.4%
savedjango/db/models/base.py:8743 ms1.4%
save_basedjango/db/models/base.py:9723 ms1.4%
_save_tabledjango/db/models/base.py:11683 ms1.4%
_do_insertdjango/db/models/base.py:12183 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
_insertdjango/db/models/query.py:19183 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:19253 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
store_profileapps/projects/testing.py:360 data = json.dumps(document).encode()5 ms2.8%
dumps<stdlib>/json/__init__.py:2355 ms2.8%
encode<stdlib>/json/encoder.py:2025 ms2.8%
iterencode<stdlib>/json/encoder.py:2635 ms2.8%
store_profileapps/projects/testing.py:361 profile = Profile.objects.create(project=project, external_id=document["run"]["id"], ingest_id=ingest_id)3 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
createdjango/db/models/query.py:6693 ms1.4%
saveapps/projects/models.py:4653 ms1.4%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 13 ms1.4%
aggregatedjango/db/models/query.py:5943 ms1.4%
get_aggregationdjango/db/models/sql/query.py:6333 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
setUpTestDataapps/projects/tests.py:83941 ms22.6%
store_profileapps/projects/testing.py:36331 ms17.0%
process_profile_partapps/projects/profiles.py:34613 ms7.1%
write_snapshotsapps/projects/profiles.py:31210 ms5.7%
<genexpr>apps/projects/profiles.py:31010 ms5.7%
rowapps/projects/profiles.py:306 compress(json.dumps(snapshot_document(document, entry), separators=(",", ":")).encode()),8 ms4.2%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)3 ms1.4%
compress<stdlib>/gzip.py:6343 ms1.4%
dumps<stdlib>/json/__init__.py:2423 ms1.4%
encode<stdlib>/json/encoder.py:2023 ms1.4%
iterencode<stdlib>/json/encoder.py:2633 ms1.4%
snapshot_documentapps/projects/profiles.py:2533 ms1.4%
node_idapps/projects/profiles.py:2383 ms1.4%
rowapps/projects/profiles.py:308 return [field.get_db_prep_save(value, connection) for field, value in zip(fields, values, strict=True)]3 ms1.4%
get_db_prep_savedjango/db/models/fields/related.py:11893 ms1.4%
compress<stdlib>/gzip.py:6343 ms1.4%
write_snapshotsapps/projects/profiles.py:313 cursor.executemany(SNAPSHOT_UPSERT, batch)3 ms1.4%
executemanydjango/db/backends/utils.py:843 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executemanydjango/db/backends/utils.py:1143 ms1.4%
executemanypsycopg/cursor.py:1373 ms1.4%
_pipeline_nolockpsycopg/connection.py:4683 ms1.4%
__exit__psycopg/_pipeline.py:733 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)5 ms2.8%
claim_partapps/projects/profiles.py:3785 ms2.8%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(5 ms2.8%
manager_methoddjango/db/models/manager.py:875 ms2.8%
get_or_createdjango/db/models/query.py:9945 ms2.8%
createdjango/db/models/query.py:6695 ms2.8%
savedjango/db/models/base.py:8745 ms2.8%
save_basedjango/db/models/base.py:9725 ms2.8%
_save_tabledjango/db/models/base.py:11685 ms2.8%
_do_insertdjango/db/models/base.py:12185 ms2.8%
manager_methoddjango/db/models/manager.py:875 ms2.8%
_insertdjango/db/models/query.py:19185 ms2.8%
execute_sqldjango/db/models/sql/compiler.py:19255 ms2.8%
executedjango/db/backends/utils.py:795 ms2.8%
_execute_with_wrappersdjango/db/backends/utils.py:925 ms2.8%
_executedjango/db/backends/utils.py:1055 ms2.8%
executepsycopg/cursor.py:1145 ms2.8%
waitpsycopg/connection.py:4835 ms2.8%
process_profile_partapps/projects/profiles.py:3415 ms2.8%
load_documentapps/projects/profiles.py:112 return json.loads(gzip.decompress(bytes(part.document)))5 ms2.8%
loads<stdlib>/json/__init__.py:3523 ms1.4%
decode<stdlib>/json/decoder.py:3453 ms1.4%
raw_decode<stdlib>/json/decoder.py:3613 ms1.4%
process_profile_partapps/projects/profiles.py:3445 ms2.8%
upsert_testsapps/projects/profiles.py:4515 ms2.8%
upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}3 ms1.4%
__iter__django/db/models/query.py:3903 ms1.4%
_fetch_alldjango/db/models/query.py:20003 ms1.4%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16623 ms1.4%
cursor_iterdjango/db/models/sql/compiler.py:22543 ms1.4%
<lambda>django/db/models/sql/compiler.py:22543 ms1.4%
innerdjango/db/utils.py:1013 ms1.4%
fetchmanypsycopg/cursor.py:2693 ms1.4%
upsertapps/projects/models.py:230 self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order3 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
bulk_createdjango/db/models/query.py:8333 ms1.4%
_batched_insertdjango/db/models/query.py:19563 ms1.4%
_insertdjango/db/models/query.py:19183 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:19253 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
process_profile_partapps/projects/profiles.py:347 ProfilePart.objects.filter(pk=part.pk).update(3 ms1.4%
updatedjango/db/models/query.py:13003 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:21113 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16243 ms1.4%
executedjango/db/backends/utils.py:793 ms1.4%
_execute_with_wrappersdjango/db/backends/utils.py:923 ms1.4%
_executedjango/db/backends/utils.py:1053 ms1.4%
executepsycopg/cursor.py:1143 ms1.4%
waitpsycopg/connection.py:4833 ms1.4%
_execute_genpsycopg/_cursor_base.py:2063 ms1.4%
_maybe_prepare_genpsycopg/_cursor_base.py:2863 ms1.4%
_execute_sendpsycopg/client_cursor.py:783 ms1.4%
store_profileapps/projects/testing.py:364 finalize_profile(profile.id)8 ms4.2%
finalize_profileapps/projects/profiles.py:479 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)5 ms2.8%
getdjango/db/models/query.py:6355 ms2.8%
__len__django/db/models/query.py:3725 ms2.8%
_fetch_alldjango/db/models/query.py:20005 ms2.8%
__iter__django/db/models/query.py:953 ms1.4%
execute_sqldjango/db/models/sql/compiler.py:16113 ms1.4%
as_sqldjango/db/models/sql/compiler.py:7673 ms1.4%
pre_sql_setupdjango/db/models/sql/compiler.py:863 ms1.4%
setup_querydjango/db/models/sql/compiler.py:753 ms1.4%
get_selectdjango/db/models/sql/compiler.py:3173 ms1.4%
compiledjango/db/models/sql/compiler.py:5743 ms1.4%
as_sqldjango/db/models/expressions.py:13253 ms1.4%
__iter__django/db/models/query.py:1273 ms1.4%
apply_convertersdjango/db/models/sql/compiler.py:15423 ms1.4%
from_db_valuedjango/db/models/fields/json.py:923 ms1.4%
loads<stdlib>/json/__init__.py:3523 ms1.4%
decode<stdlib>/json/decoder.py:3453 ms1.4%
raw_decode<stdlib>/json/decoder.py:3613 ms1.4%
finalize_profileapps/projects/profiles.py:488 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()3 ms1.4%
manager_methoddjango/db/models/manager.py:873 ms1.4%
filterdjango/db/models/query.py:15423 ms1.4%
_filter_or_excludedjango/db/models/query.py:15603 ms1.4%
_filter_or_exclude_inplacedjango/db/models/query.py:15703 ms1.4%
add_qdjango/db/models/sql/query.py:16713 ms1.4%
_add_qdjango/db/models/sql/query.py:17003 ms1.4%
store_profileapps/projects/testing.py:362 part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))3 ms1.4%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)3 ms1.4%
compress<stdlib>/gzip.py:6343 ms1.4%
setUpTestDataapps/projects/tests.py:837 cls.ci_document = json.loads((SAMPLES / "ci-pyspy-xdist.json").read_text())5 ms2.8%
loads<stdlib>/json/__init__.py:3525 ms2.8%
decode<stdlib>/json/decoder.py:3455 ms2.8%
raw_decode<stdlib>/json/decoder.py:3615 ms2.8%
setUpClassdjango/test/testcases.py:1423 cls.cls_atomics = cls._enter_atomics()21 ms11.3%
_enter_atomicsdjango/test/testcases.py:139621 ms11.3%
__enter__django/db/transaction.py:19821 ms11.3%
get_autocommitdjango/db/backends/base/base.py:45421 ms11.3%
patched_ensure_connectiondjango/test/testcases.py:30321 ms11.3%
innerdjango/utils/asyncio.py:2621 ms11.3%
ensure_connectiondjango/db/backends/base/base.py:27921 ms11.3%
innerdjango/utils/asyncio.py:2621 ms11.3%
connectdjango/db/backends/base/base.py:25621 ms11.3%
innerdjango/utils/asyncio.py:2621 ms11.3%
get_new_connectiondjango/db/backends/postgresql/base.py:33321 ms11.3%
connectpsycopg/connection.py:10921 ms11.3%
wait_connpsycopg/waiting.py:11810 ms5.7%
_connect_genpsycopg/_connection_base.py:44110 ms5.7%
wait_connpsycopg/waiting.py:11210 ms5.7%
select<stdlib>/selectors.py:45210 ms5.7%
signature<stdlib>/inspect.py:3334 return Signature.from_callable(obj, follow_wrapped=follow_wrapped,5 ms2.8%
call19 ms10.6%
_post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()16 ms8.5%
_fixture_teardowndjango/test/testcases.py:149512 ms6.4%
check_constraintsdjango/db/backends/postgresql/base.py:48312 ms6.4%
executedjango/db/backends/utils.py:7912 ms6.4%
_execute_with_wrappersdjango/db/backends/utils.py:9212 ms6.4%
_executedjango/db/backends/utils.py:10312 ms6.4%
executepsycopg/cursor.py:11412 ms6.4%
waitpsycopg/connection.py:48312 ms6.4%
_fixture_teardowndjango/test/testcases.py:14944 ms2.1%
_should_check_constraintsdjango/test/testcases.py:15034 ms2.1%
is_usabledjango/db/backends/postgresql/base.py:4924 ms2.1%
executepsycopg/cursor.py:1144 ms2.1%
waitpsycopg/connection.py:4834 ms2.1%
test_call_treeapps/projects/tests.py:861 tree = build_call_tree(self.local_document, entry)4 ms2.1%
build_call_treeapps/projects/profiles.py:611 node.source = source_line(document, frame_index)4 ms2.1%
Estimated from 68 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/profiles.py:108
return gzip.compress(data, compresslevel=6)
compress
· Libraries
|
21 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
10 ms |
|
apps/projects/profiles.py:112
return json.loads(gzip.decompress(bytes(part.document)))
load_document
· Serialization
|
10 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
save
· Database
|
8 ms |
|
apps/projects/profiles.py:313
cursor.executemany(SNAPSHOT_UPSERT, batch)
write_snapshots
· Database
|
8 ms |
|
apps/projects/profiles.py:479
profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)
finalize_profile
· Database
|
8 ms |
|
apps/projects/testing.py:360
data = json.dumps(document).encode()
store_profile
· Serialization
|
5 ms |
|
apps/projects/profiles.py:266
str(new): stack_categories[str(old)] for old, new in node_ids.items() if str(old) in stack_categories
snapshot_document
· App code
|
5 ms |
|
apps/projects/tests.py:837
cls.ci_document = json.loads((SAMPLES / "ci-pyspy-xdist.json").read_text())
setUpTestData
· Serialization
|
5 ms |
|
apps/projects/rollups.py:88
TestDailyStats.objects.bulk_create(
add_perfs
· Database
|
5 ms |
Fixtures
Exact setup time| _unittest_setUpClass_fixture_RealProfileDocumentTest class | 159 ms |
| _django_setup_unittest class | 2 ms |
| _django_set_urlconf function | 0.07 ms |
| _dj_autoclear_mailbox function | 0.06 ms |
| _template_string_if_invalid_marker function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
89 queries · 69 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
6×
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"."…
4×
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
|
setup setUpClass
django/test/testcases.py:1423
|
158 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
16 ms |
|
setup signature
<stdlib>/inspect.py:3334
|
5 ms |
|
call test body
apps/projects/tests.py:861
|
4 ms |
Reliability
3 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.