Tests / apps/api/tests.py
ProfileUploadTest::test_minimal_document
First seen 3 weeks ago in 78a4357
CI
github-actions:test
12 runs
Average
63 ms
median 68 ms
max 90 ms
max 90 ms
Phases
Setup 0.66 ms
Call 62 ms
Teardown 0.17 ms
Categories
Database 40 ms
App code 2 ms
Other (Libraries, Unsampled, pytest) 21 ms
49 database queries per run
Needs 102 KB of memory (max 768 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_minimal_documentapps/api/tests.py:915 response = self.upload({"format": "flakytest-profile", "version": 1, "run": {"id": "x"}})74 ms98.8%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(57 ms76.6%
Client.postdjango/test/client.py:115357 ms76.6%
RequestFactory.postdjango/test/client.py:49957 ms76.6%
RequestFactory.genericdjango/test/client.py:67157 ms76.6%
Client.requestdjango/test/client.py:108257 ms76.6%
ClientHandler.__call__django/test/client.py:17348 ms64.5%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6248 ms64.5%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10448 ms64.5%
WhiteNoise.add_fileswhitenoise/base.py:10845 ms60.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12045 ms60.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13145 ms60.5%
WhiteNoise.get_static_filewhitenoise/base.py:20841 ms54.4%
StaticFile.__init__whitenoise/responders.py:7338 ms50.4%
StaticFile.get_headerswhitenoise/responders.py:17836 ms48.4%
parsedate<stdlib>/email/_parseaddr.py:18532 ms42.3%
parsedate_tz<stdlib>/email/_parseaddr.py:502 ms2.0%
_parsedate_tz<stdlib>/email/_parseaddr.py:1172 ms2.0%
parsedate<stdlib>/email/_parseaddr.py:1863 ms4.0%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.0%
formatdate<stdlib>/email/utils.py:2662 ms2.0%
format_datetime<stdlib>/email/utils.py:2842 ms2.0%
StaticFile.__init__whitenoise/responders.py:772 ms2.0%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms2.0%
__init____init__:-12 ms2.0%
Headers.__init__<stdlib>/wsgiref/headers.py:442 ms2.0%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms2.0%
StaticFile.__init__whitenoise/responders.py:742 ms2.0%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.0%
Headers.get<stdlib>/wsgiref/headers.py:1052 ms2.0%
WhiteNoise.get_static_filewhitenoise/base.py:2035 ms6.0%
WhiteNoise.add_cache_headerswhitenoise/base.py:2243 ms4.0%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1763 ms4.0%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1973 ms4.0%
URLMixin.urldebug_toolbar/panels/staticfiles.py:203 ms4.0%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2053 ms4.0%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1782 ms2.0%
urlsplit<stdlib>/urllib/parse.py:5822 ms2.0%
_urlsplit<stdlib>/urllib/parse.py:5982 ms2.0%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1772 ms2.0%
urldefrag<stdlib>/urllib/parse.py:7842 ms2.0%
<lambda><string>:12 ms2.0%
WhiteNoise.add_cache_headerswhitenoise/base.py:2272 ms2.0%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms2.0%
Headers.__delitem__<stdlib>/wsgiref/headers.py:712 ms2.0%
WhiteNoise.add_fileswhitenoise/base.py:1073 ms4.0%
isdir<frozen genericpath>:522 ms2.0%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2622 ms2.0%
scantreewhitenoise/base.py:2602 ms2.0%
ClientHandler.__call__django/test/client.py:1869 ms12.1%
BaseHandler.get_responsedjango/core/handlers/base.py:1419 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1309 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1239 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:349 ms12.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.1%
BaseHandler._get_responsedjango/core/handlers/base.py:1989 ms12.1%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:659 ms12.1%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:379 ms12.1%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:649 ms12.1%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:758 ms10.1%
profile_uploadapps/api/urls.py:1506 ms8.1%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()3 ms4.0%
QuerySet.firstdjango/db/models/query.py:11453 ms4.0%
QuerySet.__iter__django/db/models/query.py:3903 ms4.0%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.0%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms2.0%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.0%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms2.0%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15252 ms2.0%
get_or_create_numberedapps/projects/models.py:23 with transaction.atomic():2 ms2.0%
Atomic.__enter__django/db/transaction.py:2112 ms2.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.0%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.0%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet.createdjango/db/models/query.py:6692 ms2.0%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11672 ms2.0%
Model._do_insertdjango/db/models/base.py:12182 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet._insertdjango/db/models/query.py:19182 ms2.0%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
profile_uploadapps/api/urls.py:154 part = ProfilePart.objects.create(2 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet.createdjango/db/models/query.py:6692 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11672 ms2.0%
Model._do_insertdjango/db/models/base.py:12182 ms2.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.0%
QuerySet._insertdjango/db/models/query.py:19182 ms2.0%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))2 ms2.0%
get_object_or_404django/shortcuts.py:902 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
ProfileUploadTest.uploadapps/api/tests.py:49517 ms22.2%
_SharedTaskProxy.__call__potatoq/app.py:76317 ms22.2%
Task.__call__potatoq/task.py:18917 ms22.2%
process_profileapps/api/tasks.py:23912 ms16.1%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)9 ms12.1%
claim_partapps/projects/profiles.py:3993 ms4.0%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(3 ms4.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms4.0%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
QuerySet.get_or_createdjango/db/models/query.py:9922 ms2.0%
Atomic.__exit__django/db/transaction.py:2472 ms2.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.0%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.0%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:379 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:381 ProfilePart.objects.filter(profile=profile, index=part.index, id__lt=part.id).delete() # superseded uploads2 ms2.0%
claim_partapps/projects/profiles.py:397 project = profile.project2 ms2.0%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.0%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
claim_partapps/projects/profiles.py:4672 ms2.0%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.0%
Model.savedjango/db/models/base.py:8742 ms2.0%
Model.save_basedjango/db/models/base.py:9662 ms2.0%
Model._save_tabledjango/db/models/base.py:11102 ms2.0%
Model._do_updatedjango/db/models/base.py:12112 ms2.0%
QuerySet._updatedjango/db/models/query.py:13272 ms2.0%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profile_partapps/projects/profiles.py:359 or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()2 ms2.0%
QuerySet.existsdjango/db/models/query.py:13372 ms2.0%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.0%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profile_partapps/projects/profiles.py:368 ProfilePart.objects.filter(pk=part.pk).update(2 ms2.0%
QuerySet.updatedjango/db/models/query.py:13002 ms2.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profileapps/api/tasks.py:2533 ms4.0%
_SharedTaskProxy.__call__potatoq/app.py:7633 ms4.0%
Task.__call__potatoq/task.py:1893 ms4.0%
finalize_profile_partsapps/api/tasks.py:2593 ms4.0%
finalize_profileapps/projects/profiles.py:500 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
finalize_profileapps/projects/profiles.py:509 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms2.0%
QuerySet.deletedjango/db/models/query.py:12382 ms2.0%
Collector.deletedjango/db/models/deletion.py:4712 ms2.0%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_id)2 ms2.0%
QuerySet.getdjango/db/models/query.py:6352 ms2.0%
QuerySet.__len__django/db/models/query.py:3722 ms2.0%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.0%
ModelIterable.__iter__django/db/models/query.py:952 ms2.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.0%
Cursor.executepsycopg/cursor.py:1132 ms2.0%
Connection.waitpsycopg/connection.py:4952 ms2.0%
Estimated from 49 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
|
48 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
3 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
3 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
3 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
|
2 ms |
|
apps/projects/models.py:23
with transaction.atomic():
get_or_create_numbered
· 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 |
|
apps/projects/profiles.py:359
or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()
process_profile_part
· Database
|
2 ms |
|
apps/projects/profiles.py:379
profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)
claim_part
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.04 ms |
| _django_set_urlconf function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _live_server_helper function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
49 queries · 15 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"."…
3×
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
|
call test body
apps/api/tests.py:915
|
74 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 | 40 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 | 50 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 90 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 40 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 75 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 68 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 68 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 77 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 42 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 68 ms | Profile |