Tests / apps/projects/tests.py
StorageTest::test_reprocessing_a_profile_replaces_its_contribution
First seen 8 hours ago in 78a4357
CI
github-actions:test
5 runs
Average
36 ms
median 38 ms
max 40 ms
max 40 ms
Phases
Setup 0.84 ms
Call 35 ms
Teardown 0.17 ms
Categories
Database 33 ms
App code 0.60 ms
Other (Libraries, Unsampled, pytest) 2 ms
47 database queries per run
Needs 26 KB of memory (max 128 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, an hour ago ·
open run
call37 ms97.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:1202 process_profile_part(self.second.part_set.get())16 ms42.2%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)11 ms29.6%
claim_partapps/projects/profiles.py:3633 ms8.4%
add_perfsapps/projects/rollups.py:30 for perf in perfs:2 ms4.2%
QuerySet.__iter__django/db/models/query.py:3902 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.bulk_createdjango/db/models/query.py:8162 ms4.2%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms4.2%
QuerySet._insertdjango/db/models/query.py:19182 ms4.2%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
Atomic.__enter__django/db/transaction.py:2112 ms4.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms4.2%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms4.2%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
claim_partapps/projects/profiles.py:358 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)2 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
claim_partapps/projects/profiles.py:360 ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.filterdjango/db/models/query.py:15422 ms4.2%
QuerySet._filter_or_excludedjango/db/models/query.py:15552 ms4.2%
claim_partapps/projects/profiles.py:376 project = profile.project2 ms4.2%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms4.2%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
claim_partapps/projects/profiles.py:4462 ms4.2%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms4.2%
Model.savedjango/db/models/base.py:8742 ms4.2%
Model.save_basedjango/db/models/base.py:9662 ms4.2%
Model._save_tabledjango/db/models/base.py:11102 ms4.2%
Model._do_updatedjango/db/models/base.py:12112 ms4.2%
QuerySet._updatedjango/db/models/query.py:13272 ms4.2%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms4.2%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms4.2%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms4.2%
PostgresClientQuery.convertpsycopg/_queries.py:2842 ms4.2%
_query2pg_client_nocachepsycopg/_queries.py:3292 ms4.2%
_split_querypsycopg/_queries.py:4432 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:1282 ms4.2%
process_profile_partapps/projects/profiles.py:345 write_perfs(profile, part, entries, tests)2 ms4.2%
write_perfsapps/projects/profiles.py:458 TestPerf.objects.bulk_create(2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms4.2%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms4.2%
QuerySet._insertdjango/db/models/query.py:19182 ms4.2%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
process_profile_partapps/projects/profiles.py:3462 ms4.2%
write_snapshotsapps/projects/profiles.py:3122 ms4.2%
write_snapshots.<locals>.<genexpr>apps/projects/profiles.py:3102 ms4.2%
write_snapshots.<locals>.rowapps/projects/profiles.py:308 return [field.get_db_prep_save(value, connection) for field, value in zip(fields, values, strict=True)]2 ms4.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:120411 ms29.6%
finalize_profileapps/projects/profiles.py:4963 ms8.4%
add_perfsapps/projects/rollups.py:30 for perf in perfs:2 ms4.2%
QuerySet.__iter__django/db/models/query.py:3902 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16622 ms4.2%
cursor_iterdjango/db/models/sql/compiler.py:22542 ms4.2%
cursor_iter.<locals>.<lambda>django/db/models/sql/compiler.py:22542 ms4.2%
DatabaseErrorWrapper.__call__.<locals>.innerdjango/db/utils.py:1012 ms4.2%
Cursor.fetchmanypsycopg/cursor.py:2682 ms4.2%
BaseTzLoader.loaddjango/db/backends/postgresql/psycopg_any.py:342 ms4.2%
TimestamptzLoader.loadpsycopg/types/datetime.py:4942 ms4.2%
TimestamptzLoader._load_isopsycopg/types/datetime.py:4982 ms4.2%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(2 ms4.2%
QuerySet.__iter__django/db/models/query.py:3902 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
finalize_profileapps/projects/profiles.py:479 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms4.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms4.2%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms4.2%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms4.2%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms4.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms4.2%
Col.as_sqldjango/db/models/expressions.py:13252 ms4.2%
finalize_profileapps/projects/profiles.py:488 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.filterdjango/db/models/query.py:15422 ms4.2%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms4.2%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms4.2%
Query.add_qdjango/db/models/sql/query.py:16712 ms4.2%
Query._add_qdjango/db/models/sql/query.py:17032 ms4.2%
Query.build_filterdjango/db/models/sql/query.py:15992 ms4.2%
Query.trim_joinsdjango/db/models/sql/query.py:20122 ms4.2%
finalize_profileapps/projects/profiles.py:495 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()2 ms4.2%
QuerySet.firstdjango/db/models/query.py:11452 ms4.2%
QuerySet.__iter__django/db/models/query.py:3902 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
finalize_profileapps/projects/profiles.py:5042 ms4.2%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms4.2%
Model.savedjango/db/models/base.py:8282 ms4.2%
Atomic.__exit__django/db/transaction.py:2472 ms4.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms4.2%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms4.2%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()3 ms8.4%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms4.2%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms4.2%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms4.2%
Atomic.__exit__django/db/transaction.py:2862 ms4.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms4.2%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms4.2%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:1200 def test_reprocessing_a_profile_replaces_its_contribution(self):2 ms4.2%
SysMonitor.sysmon_py_startcoverage/sysmon.py:3652 ms4.2%
bytes_to_linescoverage/sysmon.py:1962 ms4.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:12012 ms4.2%
StorageTest.statsapps/projects/tests.py:1188 return TestDailyStats.objects.get(test=self.test, environment=self.first.environment, day=self.morning.date())2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
BaseManager.get_querysetdjango/db/models/manager.py:1552 ms4.2%
QuerySet.filterdjango/db/models/query.py:15422 ms4.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:12032 ms4.2%
StorageTest.statsapps/projects/tests.py:1188 return TestDailyStats.objects.get(test=self.test, environment=self.first.environment, day=self.morning.date())2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
StorageTest.test_reprocessing_a_profile_replaces_its_contributionapps/projects/tests.py:12052 ms4.2%
StorageTest.statsapps/projects/tests.py:1188 return TestDailyStats.objects.get(test=self.test, environment=self.first.environment, day=self.morning.date())2 ms4.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms4.2%
QuerySet.getdjango/db/models/query.py:6352 ms4.2%
QuerySet.__len__django/db/models/query.py:3722 ms4.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms4.2%
ModelIterable.__iter__django/db/models/query.py:952 ms4.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms4.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms4.2%
Cursor.executepsycopg/cursor.py:1132 ms4.2%
Connection.waitpsycopg/connection.py:4952 ms4.2%
Estimated from 23 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/tests.py:1188
return TestDailyStats.objects.get(test=self.test, environment=self.first.environment, day=self.morning.date())
StorageTest.stats
· Database
|
5 ms |
|
apps/projects/rollups.py:30
for perf in perfs:
add_perfs
· Database
|
3 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
3 ms |
|
apps/projects/tests.py:1200
def test_reprocessing_a_profile_replaces_its_contribution(self):
StorageTest.test_reprocessing_a_profile_replaces_its_contribution
· Libraries
|
2 ms |
|
apps/projects/tests.py:1202
process_profile_part(self.second.part_set.get())
StorageTest.test_reprocessing_a_profile_replaces_its_contribution
· Database
|
2 ms |
|
apps/projects/profiles.py:342
profile = claim_part(part, document)
process_profile_part
· Database
|
2 ms |
|
apps/projects/profiles.py:358
profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)
claim_part
· Database
|
2 ms |
|
apps/projects/profiles.py:360
ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads
claim_part
· Database
|
2 ms |
|
apps/projects/rollups.py:88
TestDailyStats.objects.bulk_create(
add_perfs
· Database
|
2 ms |
|
apps/projects/profiles.py:376
project = profile.project
claim_part
· 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
47 queries · 17 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
5×
SELECT "projects_testdailystats"."id", "projects_testdailystats"."project_id", "projects_testdailystats"."test_id", "projects_testdailystats"."environment_id", "projects_testdailystats"."day", "projects_testdailystats"."runs", "projects_testdailystats"."failures", "projects_testdailystats"."duratio…
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…
3×
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/projects/tests.py:1200
|
34 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
3 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 | |
|---|---|---|---|---|
| an hour ago | CI github-actions:test | passed | 38 ms | Profile |
| an hour ago | CI github-actions:test | passed | 37 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 40 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 25 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 39 ms | Profile |