CI
github-actions:test
5 runs
Average
84 ms
median 91 ms
max 97 ms
max 97 ms
Phases
Setup 0.76 ms
Call 83 ms
Teardown 0.20 ms
Categories
Database 50 ms
App code 0.42 ms
Other (Libraries, Templates, Deep copies, Unsampled, ...) 34 ms
52 database queries per run
Needs 2 KB of memory (max 4 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, an hour ago ·
open run
setup1 ms1.1%
call89 ms98.6%
ProjectPagesTest.test_run_pageapps/projects/tests.py:1081 response = self.client.get(self.project.url("project_run", self.ingest_run.number))43 ms47.0%
Client.getdjango/test/client.py:112443 ms47.0%
RequestFactory.getdjango/test/client.py:47543 ms47.0%
RequestFactory.genericdjango/test/client.py:67143 ms47.0%
Client.requestdjango/test/client.py:108243 ms47.0%
ClientHandler.__call__django/test/client.py:17323 ms25.8%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6223 ms25.8%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10417 ms18.8%
WhiteNoise.add_fileswhitenoise/base.py:10817 ms18.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12015 ms16.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13115 ms16.4%
WhiteNoise.get_static_filewhitenoise/base.py:2086 ms7.0%
StaticFile.__init__whitenoise/responders.py:774 ms4.7%
StaticFile.get_alternativeswhitenoise/responders.py:2004 ms4.7%
StaticFile.__init__whitenoise/responders.py:732 ms2.3%
StaticFile.get_headerswhitenoise/responders.py:1782 ms2.3%
WhiteNoise.get_static_filewhitenoise/base.py:2034 ms4.7%
WhiteNoise.add_cache_headerswhitenoise/base.py:2244 ms4.7%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1764 ms4.7%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1974 ms4.7%
URLMixin.urldebug_toolbar/panels/staticfiles.py:204 ms4.7%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2054 ms4.7%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1864 ms4.7%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2094 ms4.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2642 ms2.3%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:634 ms4.7%
LazySettings.__getattr__django/conf/__init__.py:772 ms2.3%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms2.3%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2622 ms2.3%
scantreewhitenoise/base.py:2642 ms2.3%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1112 ms2.3%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms2.3%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1202 ms2.3%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1312 ms2.3%
WhiteNoise.get_static_filewhitenoise/base.py:2082 ms2.3%
StaticFile.__init__whitenoise/responders.py:762 ms2.3%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1892 ms2.3%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.3%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms2.3%
ClientHandler.__call__django/test/client.py:18619 ms21.1%
BaseHandler.get_responsedjango/core/handlers/base.py:14119 ms21.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms21.1%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13019 ms21.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms21.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms21.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms21.1%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12319 ms21.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms21.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3417 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms18.8%
BaseHandler._get_responsedjango/core/handlers/base.py:19817 ms18.8%
project_runapps/projects/urls.py:439 return render(9 ms9.4%
renderdjango/shortcuts.py:259 ms9.4%
render_to_stringdjango/template/loader.py:629 ms9.4%
Template.renderdjango/template/backends/django.py:1079 ms9.4%
Template.renderdjango/template/base.py:1749 ms9.4%
instrumented_test_renderdjango/test/utils.py:1149 ms9.4%
NodeList.renderdjango/template/base.py:10919 ms9.4%
Node.render_annotateddjango/template/base.py:10529 ms9.4%
ExtendsNode.renderdjango/template/loader_tags.py:1609 ms9.4%
instrumented_test_renderdjango/test/utils.py:1149 ms9.4%
NodeList.renderdjango/template/base.py:10919 ms9.4%
Node.render_annotateddjango/template/base.py:10529 ms9.4%
ExtendsNode.renderdjango/template/loader_tags.py:1609 ms9.4%
instrumented_test_renderdjango/test/utils.py:1149 ms9.4%
NodeList.renderdjango/template/base.py:10919 ms9.4%
Node.render_annotateddjango/template/base.py:10529 ms9.4%
BlockNode.renderdjango/template/loader_tags.py:669 ms9.4%
NodeList.renderdjango/template/base.py:10919 ms9.4%
Node.render_annotateddjango/template/base.py:10529 ms9.4%
BlockNode.renderdjango/template/loader_tags.py:666 ms7.0%
NodeList.renderdjango/template/base.py:10916 ms7.0%
Node.render_annotateddjango/template/base.py:10526 ms7.0%
IfNode.renderdjango/template/defaulttags.py:3326 ms7.0%
Page.__len__django/core/paginator.py:3194 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:922 ms2.3%
Query.get_compilerdjango/db/models/sql/query.py:3692 ms2.3%
BaseConnectionHandler.__getitem__django/utils/connection.py:582 ms2.3%
Local.__getattr__asgiref/local.py:1212 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.3%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms2.3%
QuerySet.__bool__django/db/models/query.py:4042 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20022 ms2.3%
QuerySet._prefetch_related_objectsdjango/db/models/query.py:13692 ms2.3%
prefetch_related_objectsdjango/db/models/query.py:24512 ms2.3%
prefetch_one_leveldjango/db/models/query.py:26072 ms2.3%
create_reverse_many_to_one_manager.<locals>.RelatedManager.get_prefetch_querysetsdjango/db/models/fields/related_descriptors.py:7772 ms2.3%
QuerySet.__iter__django/db/models/query.py:3902 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.3%
NodeList.renderdjango/template/base.py:10912 ms2.3%
Node.render_annotateddjango/template/base.py:10522 ms2.3%
SimpleNode.renderdjango/template/library.py:3252 ms2.3%
heroicon_miniheroicons/templatetags/heroicons.py:182 ms2.3%
_render_iconheroicons/templatetags/heroicons.py:392 ms2.3%
_render_iconheroicons/__init__.py:632 ms2.3%
tostring<stdlib>/xml/etree/ElementTree.py:11102 ms2.3%
ElementTree.write<stdlib>/xml/etree/ElementTree.py:7492 ms2.3%
_serialize_xml<stdlib>/xml/etree/ElementTree.py:9092 ms2.3%
project_runapps/projects/urls.py:4012 ms2.3%
find_projectapps/projects/urls.py:49 project = get_object_or_404(2 ms2.3%
get_object_or_404django/shortcuts.py:902 ms2.3%
QuerySet.getdjango/db/models/query.py:6352 ms2.3%
QuerySet.__len__django/db/models/query.py:3722 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
project_runapps/projects/urls.py:404 run = get_object_or_404(Run.objects.select_related("commit"), number=run_number, project=project)2 ms2.3%
get_object_or_404django/shortcuts.py:902 ms2.3%
QuerySet.getdjango/db/models/query.py:6352 ms2.3%
QuerySet.__len__django/db/models/query.py:3722 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.3%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms2.3%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.3%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms2.3%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.3%
Exact.as_sqldjango/db/models/lookups.py:4072 ms2.3%
project_runapps/projects/urls.py:423 test_statistics = TestRun.objects.filter(run=run).aggregate(2 ms2.3%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.3%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
project_runapps/projects/urls.py:4432 ms2.3%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {2 ms2.3%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms2.3%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms2.3%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms2.3%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.3%
Model.savedjango/db/models/base.py:8742 ms2.3%
Model.save_basedjango/db/models/base.py:9662 ms2.3%
Model._save_tabledjango/db/models/base.py:11102 ms2.3%
Model._do_updatedjango/db/models/base.py:12112 ms2.3%
QuerySet._updatedjango/db/models/query.py:13272 ms2.3%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.3%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
ProjectPagesTest.test_run_pageapps/projects/tests.py:1085 response = self.client.get(self.project.url("project_run", self.ingest_run.number), {"status": "fail"})30 ms32.9%
Client.getdjango/test/client.py:112430 ms32.9%
RequestFactory.getdjango/test/client.py:47530 ms32.9%
RequestFactory.genericdjango/test/client.py:67130 ms32.9%
Client.requestdjango/test/client.py:108230 ms32.9%
ClientHandler.__call__django/test/client.py:18630 ms32.9%
BaseHandler.get_responsedjango/core/handlers/base.py:14130 ms32.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5530 ms32.9%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13030 ms32.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5530 ms32.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30930 ms32.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5530 ms32.9%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12330 ms32.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5530 ms32.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30928 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3428 ms30.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5528 ms30.5%
BaseHandler._get_responsedjango/core/handlers/base.py:19828 ms30.5%
project_runapps/projects/urls.py:44311 ms11.7%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {9 ms9.4%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))4 ms4.7%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2512 ms2.3%
SimpleLazyObject._setupdjango/utils/functional.py:4042 ms2.3%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:402 ms2.3%
get_userdjango/contrib/auth/middleware.py:202 ms2.3%
get_userdjango/contrib/auth/__init__.py:3182 ms2.3%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms2.3%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.3%
QuerySet.getdjango/db/models/query.py:6352 ms2.3%
QuerySet.__len__django/db/models/query.py:3722 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
QuerySet.__iter__django/db/models/query.py:3902 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms2.3%
QuerySet.__iter__django/db/models/query.py:3902 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
org_shellapps/orgs/views.py:422 ms2.3%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()2 ms2.3%
QuerySet.existsdjango/db/models/query.py:13372 ms2.3%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.3%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
shellapps/projects/urls.py:732 ms2.3%
can_manageapps/projects/urls.py:442 ms2.3%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.3%
QuerySet.existsdjango/db/models/query.py:13372 ms2.3%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.3%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
project_runapps/projects/urls.py:439 return render(11 ms11.7%
renderdjango/shortcuts.py:2511 ms11.7%
render_to_stringdjango/template/loader.py:6211 ms11.7%
Template.renderdjango/template/backends/django.py:10711 ms11.7%
Template.renderdjango/template/base.py:17411 ms11.7%
instrumented_test_renderdjango/test/utils.py:11411 ms11.7%
NodeList.renderdjango/template/base.py:109111 ms11.7%
Node.render_annotateddjango/template/base.py:105211 ms11.7%
ExtendsNode.renderdjango/template/loader_tags.py:16011 ms11.7%
instrumented_test_renderdjango/test/utils.py:11411 ms11.7%
NodeList.renderdjango/template/base.py:109111 ms11.7%
Node.render_annotateddjango/template/base.py:105211 ms11.7%
ExtendsNode.renderdjango/template/loader_tags.py:16011 ms11.7%
instrumented_test_renderdjango/test/utils.py:11411 ms11.7%
NodeList.renderdjango/template/base.py:109111 ms11.7%
Node.render_annotateddjango/template/base.py:105211 ms11.7%
BlockNode.renderdjango/template/loader_tags.py:6611 ms11.7%
NodeList.renderdjango/template/base.py:109111 ms11.7%
Node.render_annotateddjango/template/base.py:105211 ms11.7%
BlockNode.renderdjango/template/loader_tags.py:6611 ms11.7%
NodeList.renderdjango/template/base.py:109111 ms11.7%
Node.render_annotateddjango/template/base.py:105211 ms11.7%
IfNode.renderdjango/template/defaulttags.py:3329 ms9.4%
QuerySet.__bool__django/db/models/query.py:4044 ms4.7%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20022 ms2.3%
QuerySet._prefetch_related_objectsdjango/db/models/query.py:13692 ms2.3%
prefetch_related_objectsdjango/db/models/query.py:24512 ms2.3%
prefetch_one_leveldjango/db/models/query.py:26072 ms2.3%
create_reverse_many_to_one_manager.<locals>.RelatedManager.get_prefetch_querysetsdjango/db/models/fields/related_descriptors.py:7772 ms2.3%
QuerySet.__iter__django/db/models/query.py:3902 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
Page.__len__django/core/paginator.py:3194 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:954 ms4.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.3%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.3%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:872 ms2.3%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:5342 ms2.3%
make_hashabledjango/utils/hashable.py:232 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.3%
NodeList.renderdjango/template/base.py:10912 ms2.3%
Node.render_annotateddjango/template/base.py:10522 ms2.3%
ForNode.renderdjango/template/defaulttags.py:2492 ms2.3%
Node.render_annotateddjango/template/base.py:10522 ms2.3%
IncludeNode.renderdjango/template/loader_tags.py:2112 ms2.3%
Template.renderdjango/template/base.py:1762 ms2.3%
instrumented_test_renderdjango/test/utils.py:1142 ms2.3%
NodeList.renderdjango/template/base.py:10912 ms2.3%
Node.render_annotateddjango/template/base.py:10522 ms2.3%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.3%
NodeList.renderdjango/template/base.py:10912 ms2.3%
Node.render_annotateddjango/template/base.py:10522 ms2.3%
VariableNode.renderdjango/template/base.py:11502 ms2.3%
FilterExpression.resolvedjango/template/base.py:7882 ms2.3%
Variable.resolvedjango/template/base.py:9282 ms2.3%
Variable._resolve_lookupdjango/template/base.py:9652 ms2.3%
project_runapps/projects/urls.py:423 test_statistics = TestRun.objects.filter(run=run).aggregate(4 ms4.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.3%
QuerySet.filterdjango/db/models/query.py:15422 ms2.3%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.3%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.3%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.3%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.3%
Query.build_filterdjango/db/models/sql/query.py:15772 ms2.3%
Query.setup_joinsdjango/db/models/sql/query.py:19912 ms2.3%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.3%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.3%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.3%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.3%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.3%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms2.3%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.3%
Aggregate.as_sqldjango/db/models/aggregates.py:2092 ms2.3%
project_runapps/projects/urls.py:4012 ms2.3%
find_projectapps/projects/urls.py:49 project = get_object_or_404(2 ms2.3%
get_object_or_404django/shortcuts.py:902 ms2.3%
QuerySet.getdjango/db/models/query.py:6352 ms2.3%
QuerySet.__len__django/db/models/query.py:3722 ms2.3%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.3%
ModelIterable.__iter__django/db/models/query.py:952 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms2.3%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms2.3%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.3%
Model.savedjango/db/models/base.py:8742 ms2.3%
Model.save_basedjango/db/models/base.py:9662 ms2.3%
Model._save_tabledjango/db/models/base.py:11102 ms2.3%
Model._do_updatedjango/db/models/base.py:12112 ms2.3%
QuerySet._updatedjango/db/models/query.py:13272 ms2.3%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.3%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()9 ms9.4%
TestCase._fixture_teardowndjango/test/testcases.py:14954 ms4.7%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4834 ms4.7%
CursorWrapper.executedjango/db/backends/utils.py:794 ms4.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:924 ms4.7%
CursorWrapper._executedjango/db/backends/utils.py:1034 ms4.7%
Cursor.executepsycopg/cursor.py:1134 ms4.7%
Connection.waitpsycopg/connection.py:4954 ms4.7%
TestCase._fixture_teardowndjango/test/testcases.py:14942 ms2.3%
TestCase._should_check_constraintsdjango/test/testcases.py:15032 ms2.3%
DatabaseWrapper.is_usabledjango/db/backends/postgresql/base.py:4922 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms2.3%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms2.3%
Atomic.__exit__django/db/transaction.py:2832 ms2.3%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.3%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4132 ms2.3%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3712 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
ProjectPagesTest.setUpapps/projects/tests.py:953 self.client.force_login(self.user)9 ms9.4%
ClientMixin.force_logindjango/test/client.py:8559 ms9.4%
ClientMixin._logindjango/test/client.py:8816 ms7.0%
logindjango/contrib/auth/__init__.py:1874 ms4.7%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4342 ms2.3%
SessionStore.createdjango/contrib/sessions/backends/db.py:702 ms2.3%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1982 ms2.3%
SessionStore.existsdjango/contrib/sessions/backends/db.py:632 ms2.3%
QuerySet.existsdjango/db/models/query.py:13372 ms2.3%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.3%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4372 ms2.3%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1752 ms2.3%
Model.deletedjango/db/models/base.py:12982 ms2.3%
Collector.deletedjango/db/models/deletion.py:4522 ms2.3%
DeleteQuery.delete_batchdjango/db/models/sql/subqueries.py:392 ms2.3%
Query.add_filterdjango/db/models/sql/query.py:16512 ms2.3%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.3%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.3%
Query.build_filterdjango/db/models/sql/query.py:15772 ms2.3%
logindjango/contrib/auth/__init__.py:1972 ms2.3%
Signal.senddjango/dispatch/dispatcher.py:2092 ms2.3%
update_last_logindjango/contrib/auth/models.py:242 ms2.3%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:622 ms2.3%
Model.savedjango/db/models/base.py:8742 ms2.3%
Model.save_basedjango/db/models/base.py:9662 ms2.3%
Model._save_tabledjango/db/models/base.py:11102 ms2.3%
Model._do_updatedjango/db/models/base.py:12112 ms2.3%
QuerySet._updatedjango/db/models/query.py:13272 ms2.3%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.3%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
ClientMixin._logindjango/test/client.py:8832 ms2.3%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.3%
Model.savedjango/db/models/base.py:8742 ms2.3%
Model.save_basedjango/db/models/base.py:9662 ms2.3%
Model._save_tabledjango/db/models/base.py:11102 ms2.3%
Model._do_updatedjango/db/models/base.py:12112 ms2.3%
QuerySet._updatedjango/db/models/query.py:13272 ms2.3%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.3%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.3%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.3%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.3%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.3%
Cursor.executepsycopg/cursor.py:1132 ms2.3%
Connection.waitpsycopg/connection.py:4952 ms2.3%
teardown0.23 ms0.3%
Estimated from 44 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/tests.py:1081
response = self.client.get(self.project.url("project_run", self.ingest_run.number))
ProjectPagesTest.test_run_page
· Libraries
|
26 ms |
|
apps/projects/urls.py:439
return render(
project_run
· Database
|
19 ms |
|
apps/projects/tests.py:953
self.client.force_login(self.user)
ProjectPagesTest.setUp
· Database
|
9 ms |
|
apps/projects/urls.py:423
test_statistics = TestRun.objects.filter(run=run).aggregate(
project_run
· Database
|
6 ms |
|
apps/orgs/views.py:33
organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))
org_shell
· Database
|
6 ms |
|
apps/projects/urls.py:49
project = get_object_or_404(
find_project
· Database
|
4 ms |
|
apps/projects/urls.py:404
run = get_object_or_404(Run.objects.select_related("commit"), number=run_number, project=project)
project_run
· Database
|
2 ms |
|
apps/orgs/views.py:40
"org_projects": list(organization.project_set.order_by("name")) if member else [],
org_shell
· Database
|
2 ms |
|
apps/orgs/models.py:65
return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()
Organization.is_owner
· Database
|
2 ms |
|
apps/projects/urls.py:40
return user.is_superuser or project.organization.membership_set.filter(user=user).exists()
can_manage_project
· Database
|
2 ms |
Fixtures
Exact setup time| _django_db_marker function | 0.10 ms |
| _django_set_urlconf function | 0.07 ms |
| _template_string_if_invalid_marker function | 0.07 ms |
| _dj_autoclear_mailbox function | 0.06 ms |
| _live_server_helper function | 0.05 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.03 ms |
Database
52 queries · 22 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
3×
SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > %s AND "django_session"."session_key" = %s) LIMIT ?
3×
UPDATE "django_session" SET "session_data" = %s, "expire_date" = %s WHERE "django_session"."session_key" = %s
Biggest pieces of work
|
call test body
apps/projects/tests.py:1081
|
72 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
9 ms |
|
call setUp
apps/projects/tests.py:953
|
9 ms |
| teardown pytest internals | 0.23 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 | 91 ms | Profile |
| an hour ago | CI github-actions:test | passed | 88 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 97 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 54 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 91 ms | Profile |