CI
github-actions:test
12 runs
Average
94 ms
median 102 ms
max 115 ms
max 115 ms
Phases
Setup 0.72 ms
Call 93 ms
Teardown 0.18 ms
Categories
Database 55 ms
App code 2 ms
Other (Libraries, Templates, Unsampled, pytest, ...) 37 ms
56 database queries per run
Needs 215 KB of memory (max 704 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call99 ms99.1%
ProjectPagesTest.test_tests_pageapps/projects/tests.py:1012 response = self.client.get(self.project.url("project_tests"))60 ms59.5%
Client.getdjango/test/client.py:112460 ms59.5%
RequestFactory.getdjango/test/client.py:47560 ms59.5%
RequestFactory.genericdjango/test/client.py:67160 ms59.5%
Client.requestdjango/test/client.py:108260 ms59.5%
ClientHandler.__call__django/test/client.py:18646 ms45.7%
BaseHandler.get_responsedjango/core/handlers/base.py:14146 ms45.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms45.7%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13046 ms45.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms45.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms45.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms45.7%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12346 ms45.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms45.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3443 ms42.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms42.7%
BaseHandler._get_responsedjango/core/handlers/base.py:19843 ms42.7%
project_testsapps/projects/urls.py:18023 ms22.9%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {23 ms22.9%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))20 ms19.8%
new_method_proxy.<locals>.innerdjango/utils/functional.py:25118 ms18.3%
SimpleLazyObject._setupdjango/utils/functional.py:40418 ms18.3%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:4018 ms18.3%
get_userdjango/contrib/auth/middleware.py:2018 ms18.3%
get_userdjango/contrib/auth/__init__.py:31117 ms16.8%
_get_user_session_keydjango/contrib/auth/__init__.py:9517 ms16.8%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:5517 ms16.8%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:25117 ms16.8%
SessionStore.loaddjango/contrib/sessions/backends/db.py:5517 ms16.8%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:3417 ms16.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:8717 ms16.8%
QuerySet.getdjango/db/models/query.py:63517 ms16.8%
QuerySet.__len__django/db/models/query.py:37217 ms16.8%
QuerySet._fetch_alldjango/db/models/query.py:200017 ms16.8%
ModelIterable.__iter__django/db/models/query.py:9517 ms16.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:162417 ms16.8%
CursorWrapper.executedjango/db/backends/utils.py:7917 ms16.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9217 ms16.8%
CursorWrapper._executedjango/db/backends/utils.py:10517 ms16.8%
Cursor.executepsycopg/cursor.py:11317 ms16.8%
Connection.waitpsycopg/connection.py:49517 ms16.8%
get_userdjango/contrib/auth/__init__.py:3182 ms1.5%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.5%
QuerySet.getdjango/db/models/query.py:6352 ms1.5%
QuerySet.__len__django/db/models/query.py:3722 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
org_shellapps/orgs/views.py:422 ms1.5%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()2 ms1.5%
QuerySet.existsdjango/db/models/query.py:13372 ms1.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
project_testsapps/projects/urls.py:2199 ms9.1%
slow_testsapps/projects/analytics.py:453 TestSnapshot.objects.filter(scope.environment_q(), test_id__in=ids)5 ms4.6%
QuerySet.__iter__django/db/models/query.py:3903 ms3.0%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms3.0%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
ModelIterable.__iter__django/db/models/query.py:1282 ms1.5%
Model.from_dbdjango/db/models/base.py:6052 ms1.5%
Model.__init__django/db/models/base.py:4912 ms1.5%
Signal.senddjango/dispatch/dispatcher.py:1792 ms1.5%
<GC>~2 ms1.5%
Scope.environment_qapps/projects/analytics.py:163 return Q()2 ms1.5%
slow_testsapps/projects/analytics.py:4502 ms1.5%
categories_by_testapps/projects/analytics.py:424 for test_id, run_count, categories in rows.filter(test_id__in=test_ids).values_list(2 ms1.5%
QuerySet.filterdjango/db/models/query.py:15422 ms1.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms1.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.5%
Query.build_filterdjango/db/models/sql/query.py:16132 ms1.5%
Query.build_lookupdjango/db/models/sql/query.py:14402 ms1.5%
Lookup.__init__django/db/models/lookups.py:352 ms1.5%
slow_testsapps/projects/analytics.py:461 for perf in TestPerf.objects.filter(2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
slow_testsapps/projects/analytics.py:465 suite_time = scope.profiles().aggregate(avg=Avg("test_time"))["avg"] or 02 ms1.5%
QuerySet.aggregatedjango/db/models/query.py:5942 ms1.5%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms1.5%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms1.5%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms1.5%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms1.5%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms1.5%
project_testsapps/projects/urls.py:225 return render(request, "project_tests.html", context)8 ms7.6%
renderdjango/shortcuts.py:258 ms7.6%
render_to_stringdjango/template/loader.py:628 ms7.6%
Template.renderdjango/template/backends/django.py:1078 ms7.6%
Template.renderdjango/template/base.py:1748 ms7.6%
instrumented_test_renderdjango/test/utils.py:1148 ms7.6%
NodeList.renderdjango/template/base.py:10918 ms7.6%
Node.render_annotateddjango/template/base.py:10528 ms7.6%
ExtendsNode.renderdjango/template/loader_tags.py:1608 ms7.6%
instrumented_test_renderdjango/test/utils.py:1148 ms7.6%
NodeList.renderdjango/template/base.py:10918 ms7.6%
Node.render_annotateddjango/template/base.py:10528 ms7.6%
ExtendsNode.renderdjango/template/loader_tags.py:1608 ms7.6%
instrumented_test_renderdjango/test/utils.py:1148 ms7.6%
NodeList.renderdjango/template/base.py:10918 ms7.6%
Node.render_annotateddjango/template/base.py:10528 ms7.6%
BlockNode.renderdjango/template/loader_tags.py:668 ms7.6%
NodeList.renderdjango/template/base.py:10918 ms7.6%
Node.render_annotateddjango/template/base.py:10528 ms7.6%
BlockNode.renderdjango/template/loader_tags.py:666 ms6.1%
NodeList.renderdjango/template/base.py:10916 ms6.1%
Node.render_annotateddjango/template/base.py:10526 ms6.1%
IfNode.renderdjango/template/defaulttags.py:3336 ms6.1%
NodeList.renderdjango/template/base.py:10916 ms6.1%
Node.render_annotateddjango/template/base.py:10526 ms6.1%
IfNode.renderdjango/template/defaulttags.py:3336 ms6.1%
NodeList.renderdjango/template/base.py:10916 ms6.1%
Node.render_annotateddjango/template/base.py:10526 ms6.1%
ForNode.renderdjango/template/defaulttags.py:2496 ms6.1%
Node.render_annotateddjango/template/base.py:10525 ms4.6%
IncludeNode.renderdjango/template/loader_tags.py:2113 ms3.0%
Template.renderdjango/template/base.py:1763 ms3.0%
instrumented_test_renderdjango/test/utils.py:1143 ms3.0%
NodeList.renderdjango/template/base.py:10913 ms3.0%
Node.render_annotateddjango/template/base.py:10523 ms3.0%
ForNode.renderdjango/template/defaulttags.py:2492 ms1.5%
IncludeNode.renderdjango/template/loader_tags.py:2112 ms1.5%
Template.renderdjango/template/base.py:1762 ms1.5%
instrumented_test_renderdjango/test/utils.py:1142 ms1.5%
NodeList.renderdjango/template/base.py:10912 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
ForNode.renderdjango/template/defaulttags.py:2492 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
VariableNode.renderdjango/template/base.py:11562 ms1.5%
render_value_in_contextdjango/template/base.py:11302 ms1.5%
VariableNode.renderdjango/template/base.py:11502 ms1.5%
FilterExpression.resolvedjango/template/base.py:7882 ms1.5%
VariableNode.renderdjango/template/base.py:11562 ms1.5%
render_value_in_contextdjango/template/base.py:11342 ms1.5%
conditional_escapedjango/utils/html.py:1272 ms1.5%
project_testsapps/projects/urls.py:209 profiled = TestPerf.objects.filter(project=project).exists()2 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.5%
QuerySet.filterdjango/db/models/query.py:15422 ms1.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms1.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.5%
Query.build_filterdjango/db/models/sql/query.py:15512 ms1.5%
Query.solve_lookup_typedjango/db/models/sql/query.py:13582 ms1.5%
project_testsapps/projects/urls.py:215 total = perf.values("test_id").distinct().count()2 ms1.5%
QuerySet.countdjango/db/models/query.py:6102 ms1.5%
Query.get_countdjango/db/models/sql/query.py:6512 ms1.5%
Query.get_aggregationdjango/db/models/sql/query.py:4932 ms1.5%
WhereNode.split_having_qualifydjango/db/models/sql/where.py:472 ms1.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3113 ms3.0%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:483 ms3.0%
SessionBase.get_expire_at_browser_closedjango/contrib/sessions/backends/base.py:4052 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms1.5%
Model.savedjango/db/models/base.py:8742 ms1.5%
Model.save_basedjango/db/models/base.py:9662 ms1.5%
Model._save_tabledjango/db/models/base.py:11102 ms1.5%
Model._do_updatedjango/db/models/base.py:12112 ms1.5%
QuerySet._updatedjango/db/models/query.py:13272 ms1.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms1.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
ClientHandler.__call__django/test/client.py:17314 ms13.7%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6214 ms13.7%
__init____init__:-114 ms13.7%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10414 ms13.7%
WhiteNoise.add_fileswhitenoise/base.py:10814 ms13.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12012 ms12.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13111 ms10.7%
WhiteNoise.get_static_filewhitenoise/base.py:2088 ms7.6%
StaticFile.__init__whitenoise/responders.py:733 ms3.0%
StaticFile.get_headerswhitenoise/responders.py:1782 ms1.5%
parsedate<stdlib>/email/_parseaddr.py:1852 ms1.5%
StaticFile.__init__whitenoise/responders.py:742 ms1.5%
parsedate<stdlib>/email/_parseaddr.py:1852 ms1.5%
StaticFile.__init__whitenoise/responders.py:722 ms1.5%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms1.5%
__init____init__:-12 ms1.5%
FileEntry.__init__whitenoise/responders.py:2602 ms1.5%
<GC>~2 ms1.5%
StaticFile.__init__whitenoise/responders.py:772 ms1.5%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms1.5%
__init____init__:-12 ms1.5%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms1.5%
WhiteNoise.add_mime_headerswhitenoise/base.py:2212 ms1.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms1.5%
ProjectPagesTest.test_tests_pageapps/projects/tests.py:1016 response = self.client.get(self.project.url("project_tests"), {"q": "reports"})24 ms24.4%
Client.getdjango/test/client.py:112424 ms24.4%
RequestFactory.getdjango/test/client.py:47524 ms24.4%
RequestFactory.genericdjango/test/client.py:67124 ms24.4%
Client.requestdjango/test/client.py:108224 ms24.4%
ClientHandler.__call__django/test/client.py:18624 ms24.4%
BaseHandler.get_responsedjango/core/handlers/base.py:14124 ms24.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms24.4%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13024 ms24.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms24.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms24.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms24.4%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12324 ms24.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms24.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30923 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3423 ms22.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5523 ms22.9%
BaseHandler._get_responsedjango/core/handlers/base.py:19821 ms21.3%
project_testsapps/projects/urls.py:2198 ms7.6%
slow_testsapps/projects/analytics.py:4503 ms3.0%
categories_by_testapps/projects/analytics.py:424 for test_id, run_count, categories in rows.filter(test_id__in=test_ids).values_list(2 ms1.5%
QuerySet.values_listdjango/db/models/query.py:14582 ms1.5%
QuerySet._valuesdjango/db/models/query.py:14092 ms1.5%
Query.set_valuesdjango/db/models/sql/query.py:26052 ms1.5%
Query.add_fieldsdjango/db/models/sql/query.py:22582 ms1.5%
categories_by_testapps/projects/analytics.py:4302 ms1.5%
slow_testsapps/projects/analytics.py:442 rows = list(2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ValuesIterable.__iter__django/db/models/query.py:2222 ms1.5%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
slow_testsapps/projects/analytics.py:453 TestSnapshot.objects.filter(scope.environment_q(), test_id__in=ids)2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
slow_testsapps/projects/analytics.py:461 for perf in TestPerf.objects.filter(2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms1.5%
project_testsapps/projects/urls.py:1806 ms6.1%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {5 ms4.6%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms1.5%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2512 ms1.5%
SimpleLazyObject._setupdjango/utils/functional.py:4042 ms1.5%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:402 ms1.5%
get_userdjango/contrib/auth/middleware.py:202 ms1.5%
get_userdjango/contrib/auth/__init__.py:3182 ms1.5%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.5%
QuerySet.getdjango/db/models/query.py:6252 ms1.5%
QuerySet.filterdjango/db/models/query.py:15422 ms1.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms1.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.5%
Query.build_filterdjango/db/models/sql/query.py:16132 ms1.5%
Query.build_lookupdjango/db/models/sql/query.py:14302 ms1.5%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms1.5%
QuerySet.__iter__django/db/models/query.py:3902 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
org_shellapps/orgs/views.py:422 ms1.5%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()2 ms1.5%
QuerySet.existsdjango/db/models/query.py:13372 ms1.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
filtersapps/projects/urls.py:80 environments = list(Environment.objects.filter(project=project).order_by("kind", "name"))2 ms1.5%
project_testsapps/projects/urls.py:215 total = perf.values("test_id").distinct().count()3 ms3.0%
QuerySet.countdjango/db/models/query.py:6103 ms3.0%
Query.get_countdjango/db/models/sql/query.py:6513 ms3.0%
Query.get_aggregationdjango/db/models/sql/query.py:4672 ms1.5%
Count.resolve_expressiondjango/db/models/aggregates.py:2612 ms1.5%
Aggregate.resolve_expressiondjango/db/models/aggregates.py:1222 ms1.5%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:2972 ms1.5%
Func.copydjango/db/models/expressions.py:11332 ms1.5%
BaseExpression.copydjango/db/models/expressions.py:4442 ms1.5%
copy<stdlib>/copy.py:1002 ms1.5%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
project_testsapps/projects/urls.py:225 return render(request, "project_tests.html", context)3 ms3.0%
renderdjango/shortcuts.py:253 ms3.0%
render_to_stringdjango/template/loader.py:623 ms3.0%
Template.renderdjango/template/backends/django.py:1073 ms3.0%
Template.renderdjango/template/base.py:1743 ms3.0%
instrumented_test_renderdjango/test/utils.py:1143 ms3.0%
NodeList.renderdjango/template/base.py:10913 ms3.0%
Node.render_annotateddjango/template/base.py:10523 ms3.0%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms3.0%
instrumented_test_renderdjango/test/utils.py:1143 ms3.0%
NodeList.renderdjango/template/base.py:10913 ms3.0%
Node.render_annotateddjango/template/base.py:10523 ms3.0%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms3.0%
instrumented_test_renderdjango/test/utils.py:1143 ms3.0%
NodeList.renderdjango/template/base.py:10913 ms3.0%
Node.render_annotateddjango/template/base.py:10523 ms3.0%
BlockNode.renderdjango/template/loader_tags.py:663 ms3.0%
NodeList.renderdjango/template/base.py:10913 ms3.0%
Node.render_annotateddjango/template/base.py:10523 ms3.0%
IfNode.renderdjango/template/defaulttags.py:3332 ms1.5%
NodeList.renderdjango/template/base.py:10912 ms1.5%
BlockNode.renderdjango/template/loader_tags.py:662 ms1.5%
NodeList.renderdjango/template/base.py:10912 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
IfNode.renderdjango/template/defaulttags.py:3332 ms1.5%
NodeList.renderdjango/template/base.py:10912 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
IfNode.renderdjango/template/defaulttags.py:3332 ms1.5%
NodeList.renderdjango/template/base.py:10912 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
ForNode.renderdjango/template/defaulttags.py:2492 ms1.5%
Node.render_annotateddjango/template/base.py:10522 ms1.5%
IncludeNode.renderdjango/template/loader_tags.py:2112 ms1.5%
Template.renderdjango/template/base.py:1762 ms1.5%
project_testsapps/projects/urls.py:209 profiled = TestPerf.objects.filter(project=project).exists()2 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.5%
QuerySet.filterdjango/db/models/query.py:15422 ms1.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15552 ms1.5%
BaseHandler._get_responsedjango/core/handlers/base.py:1822 ms1.5%
BaseHandler.resolve_requestdjango/core/handlers/base.py:3142 ms1.5%
URLResolver.resolvedjango/urls/resolvers.py:6782 ms1.5%
URLResolver.resolvedjango/urls/resolvers.py:6782 ms1.5%
URLPattern.resolvedjango/urls/resolvers.py:4822 ms1.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms1.5%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms1.5%
Model.savedjango/db/models/base.py:8742 ms1.5%
Model.save_basedjango/db/models/base.py:9662 ms1.5%
Model._save_tabledjango/db/models/base.py:11102 ms1.5%
Model._do_updatedjango/db/models/base.py:12112 ms1.5%
QuerySet._updatedjango/db/models/query.py:13272 ms1.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms1.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
ProjectPagesTest.setUpapps/projects/tests.py:954 self.client.force_login(self.user)11 ms10.7%
ClientMixin.force_logindjango/test/client.py:8559 ms9.1%
ClientMixin._logindjango/test/client.py:8816 ms6.1%
logindjango/contrib/auth/__init__.py:1875 ms4.6%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4343 ms3.0%
SessionStore.createdjango/contrib/sessions/backends/db.py:702 ms1.5%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1982 ms1.5%
SessionStore.existsdjango/contrib/sessions/backends/db.py:632 ms1.5%
QuerySet.existsdjango/db/models/query.py:13372 ms1.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1262 ms1.5%
Atomic.__exit__django/db/transaction.py:2472 ms1.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.5%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms1.5%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4372 ms1.5%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1752 ms1.5%
Model.deletedjango/db/models/base.py:12982 ms1.5%
Collector.deletedjango/db/models/deletion.py:4522 ms1.5%
DeleteQuery.delete_batchdjango/db/models/sql/subqueries.py:432 ms1.5%
DeleteQuery.do_querydjango/db/models/sql/subqueries.py:252 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
logindjango/contrib/auth/__init__.py:1752 ms1.5%
SessionBase.__contains__django/contrib/sessions/backends/base.py:522 ms1.5%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms1.5%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms1.5%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.5%
QuerySet.getdjango/db/models/query.py:6352 ms1.5%
QuerySet.__len__django/db/models/query.py:3722 ms1.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.5%
ModelIterable.__iter__django/db/models/query.py:952 ms1.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.5%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms1.5%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms1.5%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms1.5%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms1.5%
ClientMixin._logindjango/test/client.py:8762 ms1.5%
ClientMixin.sessiondjango/test/client.py:8122 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1212 ms1.5%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1262 ms1.5%
Atomic.__enter__django/db/transaction.py:2112 ms1.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms1.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
ClientMixin._logindjango/test/client.py:8832 ms1.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1262 ms1.5%
Atomic.__enter__django/db/transaction.py:2112 ms1.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms1.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.5%
Cursor.executepsycopg/cursor.py:1132 ms1.5%
Connection.waitpsycopg/connection.py:4952 ms1.5%
TestData.__get__django/test/testcases.py:13672 ms1.5%
deepcopy<stdlib>/copy.py:1452 ms1.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()5 ms4.6%
TestCase._fixture_teardowndjango/test/testcases.py:14955 ms4.6%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4835 ms4.6%
CursorWrapper.executedjango/db/backends/utils.py:795 ms4.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:925 ms4.6%
CursorWrapper._executedjango/db/backends/utils.py:1035 ms4.6%
Cursor.executepsycopg/cursor.py:1135 ms4.6%
Connection.waitpsycopg/connection.py:4955 ms4.6%
Estimated from 65 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/orgs/views.py:33
organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))
org_shell
· Database
|
21 ms |
|
apps/projects/tests.py:1012
response = self.client.get(self.project.url("project_tests"))
ProjectPagesTest.test_tests_page
· Libraries
|
17 ms |
|
apps/projects/tests.py:954
self.client.force_login(self.user)
ProjectPagesTest.setUp
· Database
|
11 ms |
|
apps/projects/urls.py:225
return render(request, "project_tests.html", context)
project_tests
· Templates
|
11 ms |
|
apps/projects/urls.py:215
total = perf.values("test_id").distinct().count()
project_tests
· Database
|
5 ms |
|
apps/projects/analytics.py:453
TestSnapshot.objects.filter(scope.environment_q(), test_id__in=ids)
slow_tests
· Database
|
5 ms |
|
apps/orgs/views.py:40
"org_projects": list(organization.project_set.order_by("name")) if member else [],
org_shell
· Database
|
3 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
|
3 ms |
|
apps/projects/urls.py:209
profiled = TestPerf.objects.filter(project=project).exists()
project_tests
· Database
|
3 ms |
|
apps/projects/analytics.py:424
for test_id, run_count, categories in rows.filter(test_id__in=test_ids).values_list(
categories_by_test
· Database
|
3 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.06 ms |
| _django_db_marker function | 0.05 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
56 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:1012
|
84 ms |
|
call setUp
apps/projects/tests.py:954
|
11 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
5 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 | 100 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 58 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 97 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 81 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 115 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 78 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 109 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 105 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 103 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 114 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 57 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 104 ms | Profile |