Tests / apps/api/tests.py
ProfileUploadTest::test_processing_failure_is_recorded
First seen 3 weeks ago in 78a4357
CI
github-actions:test
12 runs
Average
11 ms
median 12 ms
max 15 ms
max 15 ms
Phases
Setup 0.67 ms
Call 11 ms
Teardown 0.15 ms
Categories
Database 10 ms
Other (Unsampled, Libraries, pytest) 2 ms
15 database queries per run
Needs 4 KB of memory (max 12 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call11 ms92.9%
ProfileUploadTest.test_processing_failure_is_recordedapps/api/tests.py:9086 ms51.6%
_SharedTaskProxy.__call__potatoq/app.py:7636 ms51.6%
Task.__call__potatoq/task.py:1896 ms51.6%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_id)2 ms20.6%
QuerySet.getdjango/db/models/query.py:6352 ms20.6%
QuerySet.__len__django/db/models/query.py:3721 ms10.3%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms10.3%
ModelIterable.__iter__django/db/models/query.py:951 ms10.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms10.3%
CursorWrapper.executedjango/db/backends/utils.py:791 ms10.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms10.3%
process_profileapps/api/tasks.py:2391 ms10.3%
process_profile_partapps/projects/profiles.py:356 part = ProfilePart.objects.filter(pk=part.pk).first()1 ms10.3%
QuerySet.firstdjango/db/models/query.py:11451 ms10.3%
QuerySet.__iter__django/db/models/query.py:3901 ms10.3%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms10.3%
ModelIterable.__iter__django/db/models/query.py:951 ms10.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms10.3%
CursorWrapper.executedjango/db/backends/utils.py:791 ms10.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms10.3%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms10.3%
Cursor.executepsycopg/cursor.py:1131 ms10.3%
Connection.waitpsycopg/connection.py:4951 ms10.3%
process_profileapps/api/tasks.py:243 ProfilePart.objects.filter(pk=part_id).update(status=ProfilePart.StatusTypes.FAILED, error=error)1 ms10.3%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms10.3%
QuerySet.filterdjango/db/models/query.py:15421 ms10.3%
process_profileapps/api/tasks.py:244 Profile.objects.filter(pk=part.profile_id).update(status=Profile.StatusTypes.FAILED, error=error)1 ms10.3%
QuerySet.updatedjango/db/models/query.py:13001 ms10.3%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms10.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms10.3%
CursorWrapper.executedjango/db/backends/utils.py:791 ms10.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms10.3%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms10.3%
Cursor.executepsycopg/cursor.py:1131 ms10.3%
Connection.waitpsycopg/connection.py:4951 ms10.3%
ProfileUploadTest.test_processing_failure_is_recordedapps/api/tests.py:905 profile = Profile.objects.create(project=self.project)4 ms31.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms31.0%
QuerySet.createdjango/db/models/query.py:6692 ms20.6%
Profile.saveapps/projects/models.py:4651 ms10.3%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 11 ms10.3%
QuerySet.aggregatedjango/db/models/query.py:5941 ms10.3%
Query.get_aggregationdjango/db/models/sql/query.py:6331 ms10.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16461 ms10.3%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)1 ms10.3%
Model.savedjango/db/models/base.py:8741 ms10.3%
Model.save_basedjango/db/models/base.py:9661 ms10.3%
Model._save_tabledjango/db/models/base.py:11671 ms10.3%
Model._do_insertdjango/db/models/base.py:12181 ms10.3%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms10.3%
QuerySet._insertdjango/db/models/query.py:19181 ms10.3%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms10.3%
CursorWrapper.executedjango/db/backends/utils.py:791 ms10.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms10.3%
QuerySet.createdjango/db/models/query.py:6671 ms10.3%
Model.__init__django/db/models/base.py:5561 ms10.3%
ProfileUploadTest.test_processing_failure_is_recordedapps/api/tests.py:910 part.refresh_from_db()1 ms10.3%
Model.refresh_from_dbdjango/db/models/base.py:7581 ms10.3%
QuerySet.getdjango/db/models/query.py:6351 ms10.3%
QuerySet.__len__django/db/models/query.py:3721 ms10.3%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms10.3%
ModelIterable.__iter__django/db/models/query.py:1271 ms10.3%
Estimated from 9 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/api/tasks.py:237
part = ProfilePart.objects.select_related("profile").get(id=part_id)
process_profile
· Database
|
2 ms |
|
apps/api/tests.py:905
profile = Profile.objects.create(project=self.project)
ProfileUploadTest.test_processing_failure_is_recorded
· Database
|
1 ms |
|
apps/projects/models.py:35
return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 1
next_number
· Database
|
1 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
1 ms |
|
apps/projects/profiles.py:356
part = ProfilePart.objects.filter(pk=part.pk).first()
process_profile_part
· Database
|
1 ms |
|
apps/api/tasks.py:243
ProfilePart.objects.filter(pk=part_id).update(status=ProfilePart.StatusTypes.FAILED, error=error)
process_profile
· Database
|
1 ms |
|
apps/api/tasks.py:244
Profile.objects.filter(pk=part.profile_id).update(status=Profile.StatusTypes.FAILED, error=error)
process_profile
· Database
|
1 ms |
|
apps/api/tests.py:910
part.refresh_from_db()
ProfileUploadTest.test_processing_failure_is_recorded
· Database
|
1 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.04 ms |
| _live_server_helper function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
15 queries · 5 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
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/api/tests.py:905
|
11 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 | 12 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 8 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 12 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 9 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 15 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 8 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 13 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 13 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 12 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 15 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 8 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 13 ms | Profile |