Tests / apps/api/tests.py
ProfileUploadTest::test_upload_gzip_without_content_encoding
First seen 3 weeks ago in 78a4357
CI
github-actions:test
12 runs
Average
78 ms
median 82 ms
max 140 ms
max 140 ms
Phases
Setup 0.68 ms
Call 77 ms
Teardown 0.17 ms
Categories
Database 53 ms
App code 3 ms
Test code 0.11 ms
Other (Libraries, Serialization, Unsampled, pytest) 22 ms
60 database queries per run
Needs 147 KB of memory (max 836 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call87 ms99.1%
ProfileUploadTest.test_upload_gzip_without_content_encodingapps/api/tests.py:585 response = self.upload(gzip.compress(json.dumps(self.document()).encode()))83 ms94.4%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(45 ms51.9%
Client.postdjango/test/client.py:115345 ms51.9%
RequestFactory.postdjango/test/client.py:49945 ms51.9%
RequestFactory.genericdjango/test/client.py:67145 ms51.9%
Client.requestdjango/test/client.py:108245 ms51.9%
ClientHandler.__call__django/test/client.py:17331 ms35.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6231 ms35.4%
__init____init__:-131 ms35.4%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10431 ms35.4%
WhiteNoise.add_fileswhitenoise/base.py:10831 ms35.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12029 ms33.0%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13127 ms30.7%
WhiteNoise.get_static_filewhitenoise/base.py:20825 ms28.3%
StaticFile.__init__whitenoise/responders.py:778 ms9.4%
StaticFile.get_alternativeswhitenoise/responders.py:2006 ms7.1%
__init____init__:-16 ms7.1%
Headers.__init__<stdlib>/wsgiref/headers.py:432 ms2.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms2.4%
Headers.__init__<stdlib>/wsgiref/headers.py:442 ms2.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms2.4%
StaticFile.get_alternativeswhitenoise/responders.py:1982 ms2.4%
StaticFile.__init__whitenoise/responders.py:726 ms7.1%
StaticFile.get_file_statswhitenoise/responders.py:1614 ms4.7%
StaticFile.__init__whitenoise/responders.py:734 ms4.7%
StaticFile.get_headerswhitenoise/responders.py:1782 ms2.4%
parsedate<stdlib>/email/_parseaddr.py:1852 ms2.4%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.4%
formatdate<stdlib>/email/utils.py:2662 ms2.4%
format_datetime<stdlib>/email/utils.py:2842 ms2.4%
StaticFile.__init__whitenoise/responders.py:762 ms2.4%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1892 ms2.4%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.4%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms2.4%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms2.4%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms2.4%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms2.4%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms2.4%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms2.4%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms2.4%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1842 ms2.4%
ManifestFilesMixin.stored_namedjango/contrib/staticfiles/storage.py:5202 ms2.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms2.4%
scantreewhitenoise/base.py:2622 ms2.4%
scantreewhitenoise/base.py:2622 ms2.4%
scantreewhitenoise/base.py:2622 ms2.4%
scantreewhitenoise/base.py:2622 ms2.4%
scantreewhitenoise/base.py:2622 ms2.4%
scantreewhitenoise/base.py:2642 ms2.4%
ClientHandler.__call__django/test/client.py:18612 ms14.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14112 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13012 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12312 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30912 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3412 ms14.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5512 ms14.2%
BaseHandler._get_responsedjango/core/handlers/base.py:19812 ms14.2%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6512 ms14.2%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3712 ms14.2%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6412 ms14.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:758 ms9.4%
profile_uploadapps/api/urls.py:1508 ms9.4%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()4 ms4.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.4%
QuerySet.filterdjango/db/models/query.py:15422 ms2.4%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.4%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.4%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.4%
Query._add_qdjango/db/models/sql/query.py:16992 ms2.4%
QuerySet.firstdjango/db/models/query.py:11452 ms2.4%
QuerySet.__iter__django/db/models/query.py:3902 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
get_or_create_numberedapps/projects/models.py:212 ms2.4%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms2.4%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.4%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.4%
QuerySet.createdjango/db/models/query.py:6692 ms2.4%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.4%
Model.savedjango/db/models/base.py:8742 ms2.4%
Model.save_basedjango/db/models/base.py:9662 ms2.4%
Model._save_tabledjango/db/models/base.py:11672 ms2.4%
Model._do_insertdjango/db/models/base.py:12182 ms2.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.4%
QuerySet._insertdjango/db/models/query.py:19182 ms2.4%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.4%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.4%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms2.4%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms2.4%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms2.4%
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.4%
get_object_or_404django/shortcuts.py:902 ms2.4%
QuerySet.getdjango/db/models/query.py:6352 ms2.4%
QuerySet.__len__django/db/models/query.py:3722 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms2.4%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms2.4%
QuerySet.__iter__django/db/models/query.py:3902 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms2.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.4%
ClientHandler.__call__django/test/client.py:1772 ms2.4%
ProfileUploadTest.uploadapps/api/tests.py:49535 ms40.1%
_SharedTaskProxy.__call__potatoq/app.py:76335 ms40.1%
Task.__call__potatoq/task.py:18935 ms40.1%
process_profileapps/api/tasks.py:23919 ms21.2%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)10 ms11.8%
claim_partapps/projects/profiles.py:404 commit, _ = Commit.objects.get_or_create(4 ms4.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms4.7%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.4%
QuerySet.createdjango/db/models/query.py:6672 ms2.4%
Model.__init__django/db/models/base.py:5662 ms2.4%
Atomic.__enter__django/db/transaction.py:2112 ms2.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.4%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:3962 ms2.4%
claim_partapps/projects/profiles.py:397 project = profile.project2 ms2.4%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.4%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.4%
QuerySet.getdjango/db/models/query.py:6352 ms2.4%
QuerySet.__len__django/db/models/query.py:3722 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
Atomic.__exit__django/db/transaction.py:2472 ms2.4%
process_profile_partapps/projects/profiles.py:356 part = ProfilePart.objects.filter(pk=part.pk).first()2 ms2.4%
QuerySet.firstdjango/db/models/query.py:11452 ms2.4%
QuerySet.__iter__django/db/models/query.py:3902 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16622 ms2.4%
process_profile_partapps/projects/profiles.py:3662 ms2.4%
write_perfsapps/projects/profiles.py:478 TestPerf.objects.filter(profile=profile, part=part.index).delete()2 ms2.4%
QuerySet.deletedjango/db/models/query.py:12382 ms2.4%
Collector.deletedjango/db/models/deletion.py:4712 ms2.4%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.4%
SQLDeleteCompiler.as_sqldjango/db/models/sql/compiler.py:20062 ms2.4%
SQLDeleteCompiler._as_sqldjango/db/models/sql/compiler.py:19922 ms2.4%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.4%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms2.4%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.4%
process_profile_partapps/projects/profiles.py:3672 ms2.4%
write_snapshotsapps/projects/profiles.py:334 cursor.executemany(SNAPSHOT_UPSERT, batch)2 ms2.4%
CursorWrapper.executemanydjango/db/backends/utils.py:842 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executemanydjango/db/backends/utils.py:1142 ms2.4%
Cursor.executemanypsycopg/cursor.py:1372 ms2.4%
Connection._pipeline_nolockpsycopg/connection.py:4722 ms2.4%
Pipeline.__exit__psycopg/_pipeline.py:732 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
process_profile_partapps/projects/profiles.py:368 ProfilePart.objects.filter(pk=part.pk).update(2 ms2.4%
QuerySet.updatedjango/db/models/query.py:13002 ms2.4%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
process_profileapps/api/tasks.py:25312 ms14.2%
_SharedTaskProxy.__call__potatoq/app.py:76312 ms14.2%
Task.__call__potatoq/task.py:18912 ms14.2%
finalize_profile_partsapps/api/tasks.py:25912 ms14.2%
finalize_profileapps/projects/profiles.py:5174 ms4.7%
add_perfsapps/projects/rollups.py:30 for perf in perfs:2 ms2.4%
QuerySet.__iter__django/db/models/query.py:3902 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms2.4%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15262 ms2.4%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(2 ms2.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.4%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms2.4%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms2.4%
QuerySet._insertdjango/db/models/query.py:19182 ms2.4%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
finalize_profileapps/projects/profiles.py:500 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms2.4%
QuerySet.getdjango/db/models/query.py:6352 ms2.4%
QuerySet.__len__django/db/models/query.py:3722 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
finalize_profileapps/projects/profiles.py:509 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms2.4%
QuerySet.deletedjango/db/models/query.py:12382 ms2.4%
Collector.deletedjango/db/models/deletion.py:4712 ms2.4%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
finalize_profileapps/projects/profiles.py:516 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()2 ms2.4%
QuerySet.firstdjango/db/models/query.py:11452 ms2.4%
QuerySet.__iter__django/db/models/query.py:3902 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
finalize_profileapps/projects/profiles.py:5252 ms2.4%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms2.4%
Model.savedjango/db/models/base.py:8742 ms2.4%
Model.save_basedjango/db/models/base.py:9662 ms2.4%
Model._save_tabledjango/db/models/base.py:11102 ms2.4%
Model._do_updatedjango/db/models/base.py:12112 ms2.4%
QuerySet._updatedjango/db/models/query.py:13272 ms2.4%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.4%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_id)4 ms4.7%
QuerySet.getdjango/db/models/query.py:6354 ms4.7%
QuerySet.__len__django/db/models/query.py:3724 ms4.7%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms4.7%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.4%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.4%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.4%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.4%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3002 ms2.4%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12592 ms2.4%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10092 ms2.4%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms2.4%
dumps<stdlib>/json/__init__.py:2342 ms2.4%
JSONEncoder.encode<stdlib>/json/encoder.py:2022 ms2.4%
JSONEncoder.iterencode<stdlib>/json/encoder.py:2632 ms2.4%
ProfileUploadTest.test_upload_gzip_without_content_encodingapps/api/tests.py:5872 ms2.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.4%
QuerySet.getdjango/db/models/query.py:6352 ms2.4%
QuerySet.__len__django/db/models/query.py:3722 ms2.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.4%
ModelIterable.__iter__django/db/models/query.py:952 ms2.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms2.4%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms2.4%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.4%
Cursor.executepsycopg/cursor.py:1132 ms2.4%
Connection.waitpsycopg/connection.py:4952 ms2.4%
Estimated from 42 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
|
33 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
4 ms |
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
4 ms |
|
apps/api/tasks.py:237
part = ProfilePart.objects.select_related("profile").get(id=part_id)
process_profile
· Database
|
4 ms |
|
apps/projects/profiles.py:363
profile = claim_part(part, document)
process_profile_part
· Database
|
4 ms |
|
apps/projects/profiles.py:404
commit, _ = Commit.objects.get_or_create(
claim_part
· Database
|
4 ms |
|
apps/api/tests.py:585
response = self.upload(gzip.compress(json.dumps(self.document()).encode()))
ProfileUploadTest.test_upload_gzip_without_content_encoding
· Serialization
|
2 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/api/urls.py:59
SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)
touch_token
· Database
|
2 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
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.04 ms |
| _live_server_helper function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_db_marker function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| monkeypatch function | 0.02 ms |
| _django_clear_site_cache function | 0.02 ms |
Database
60 queries · 20 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
|
85 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 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 | 88 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 41 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 74 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 57 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 93 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 48 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 88 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 84 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 80 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 140 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 45 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 99 ms | Profile |