CI
github-actions:test
5 runs
Average
79 ms
median 83 ms
max 102 ms
max 102 ms
Phases
Setup 0.95 ms
Call 78 ms
Teardown 0.19 ms
Categories
Database 41 ms
App code 1 ms
Other (Libraries, Templates, Unsampled, pytest) 37 ms
50 database queries per run
Needs 6 KB of memory (max 32 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 44 minutes ago ·
open run
call82 ms98.7%
MemoryTest.test_memory_tabapps/projects/tests.py:1408 response = self.client.get(self.project.url("project_tests"), {"tab": "memory"})45 ms53.4%
Client.getdjango/test/client.py:112445 ms53.4%
RequestFactory.getdjango/test/client.py:47545 ms53.4%
RequestFactory.genericdjango/test/client.py:67145 ms53.4%
Client.requestdjango/test/client.py:108245 ms53.4%
ClientHandler.__call__django/test/client.py:17324 ms28.8%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6224 ms28.8%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10424 ms28.8%
WhiteNoise.add_fileswhitenoise/base.py:10824 ms28.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12019 ms22.6%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13117 ms20.6%
WhiteNoise.get_static_filewhitenoise/base.py:20812 ms14.4%
StaticFile.__init__whitenoise/responders.py:727 ms8.2%
StaticFile.get_file_statswhitenoise/responders.py:1617 ms8.2%
__init____init__:-15 ms6.2%
FileEntry.__init__whitenoise/responders.py:2605 ms6.2%
<GC>~5 ms6.2%
StaticFile.__init__whitenoise/responders.py:732 ms2.1%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.1%
WhiteNoise.get_static_filewhitenoise/base.py:2035 ms6.2%
WhiteNoise.add_cache_headerswhitenoise/base.py:2245 ms6.2%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1765 ms6.2%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1975 ms6.2%
URLMixin.urldebug_toolbar/panels/staticfiles.py:205 ms6.2%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2055 ms6.2%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1783 ms4.1%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1862 ms2.1%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2092 ms2.1%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1155 ms6.2%
scantreewhitenoise/base.py:2602 ms2.1%
scantreewhitenoise/base.py:2622 ms2.1%
scantreewhitenoise/base.py:2622 ms2.1%
scantreewhitenoise/base.py:2642 ms2.1%
ClientHandler.__call__django/test/client.py:18619 ms22.6%
BaseHandler.get_responsedjango/core/handlers/base.py:14119 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13019 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12319 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3417 ms20.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms20.6%
BaseHandler._get_responsedjango/core/handlers/base.py:19817 ms20.6%
project_testsapps/projects/urls.py:1777 ms8.2%
find_projectapps/projects/urls.py:525 ms6.2%
can_viewapps/projects/urls.py:335 ms6.2%
can_manage_projectapps/projects/urls.py:38 if not user.is_authenticated:3 ms4.1%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2513 ms4.1%
SimpleLazyObject._setupdjango/utils/functional.py:4043 ms4.1%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:403 ms4.1%
get_userdjango/contrib/auth/middleware.py:203 ms4.1%
get_userdjango/contrib/auth/__init__.py:3112 ms2.1%
_get_user_session_keydjango/contrib/auth/__init__.py:952 ms2.1%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:552 ms2.1%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms2.1%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms2.1%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet.getdjango/db/models/query.py:6352 ms2.1%
QuerySet.__len__django/db/models/query.py:3722 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
get_userdjango/contrib/auth/__init__.py:3182 ms2.1%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet.getdjango/db/models/query.py:6352 ms2.1%
QuerySet.__len__django/db/models/query.py:3722 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
find_projectapps/projects/urls.py:49 project = get_object_or_404(2 ms2.1%
get_object_or_404django/shortcuts.py:902 ms2.1%
QuerySet.getdjango/db/models/query.py:6352 ms2.1%
QuerySet.__len__django/db/models/query.py:3722 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
project_testsapps/projects/urls.py:1803 ms4.1%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {3 ms4.1%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms2.1%
QuerySet.__iter__django/db/models/query.py:3902 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
org_shellapps/orgs/views.py:422 ms2.1%
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.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
project_testsapps/projects/urls.py:2013 ms4.1%
memory_testsapps/projects/analytics.py:504 rows = list(3 ms4.1%
QuerySet.__iter__django/db/models/query.py:3903 ms4.1%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.1%
ValuesIterable.__iter__django/db/models/query.py:2223 ms4.1%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15733 ms4.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.1%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.1%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.1%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.1%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
project_testsapps/projects/urls.py:198 total = daily.values("test_id").distinct().count()2 ms2.1%
QuerySet.countdjango/db/models/query.py:6102 ms2.1%
Query.get_countdjango/db/models/sql/query.py:6512 ms2.1%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
project_testsapps/projects/urls.py:207 return render(request, "project_tests.html", context)2 ms2.1%
renderdjango/shortcuts.py:252 ms2.1%
render_to_stringdjango/template/loader.py:622 ms2.1%
Template.renderdjango/template/backends/django.py:1072 ms2.1%
Template.renderdjango/template/base.py:1742 ms2.1%
instrumented_test_renderdjango/test/utils.py:1142 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms2.1%
instrumented_test_renderdjango/test/utils.py:1142 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms2.1%
instrumented_test_renderdjango/test/utils.py:1142 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
BlockNode.renderdjango/template/loader_tags.py:662 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
VariableNode.renderdjango/template/base.py:11502 ms2.1%
FilterExpression.resolvedjango/template/base.py:8092 ms2.1%
Variable.resolvedjango/template/base.py:9282 ms2.1%
Variable._resolve_lookupdjango/template/base.py:9652 ms2.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms2.1%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1232 ms2.1%
SessionStore.create_model_instancedjango/contrib/sessions/backends/db.py:1022 ms2.1%
SessionBase.encodedjango/contrib/sessions/backends/base.py:1262 ms2.1%
dumpsdjango/core/signing.py:1512 ms2.1%
Signer.sign_objectdjango/core/signing.py:2322 ms2.1%
ClientHandler.__call__django/test/client.py:1762 ms2.1%
Signal.senddjango/dispatch/dispatcher.py:2072 ms2.1%
MemoryTest.test_memory_tabapps/projects/tests.py:1412 response = self.client.get(self.project.url("project_tests"), {"tab": "memory", "q": "orders"})21 ms24.7%
Client.getdjango/test/client.py:112421 ms24.7%
RequestFactory.getdjango/test/client.py:47521 ms24.7%
RequestFactory.genericdjango/test/client.py:67121 ms24.7%
Client.requestdjango/test/client.py:108221 ms24.7%
ClientHandler.__call__django/test/client.py:18621 ms24.7%
BaseHandler.get_responsedjango/core/handlers/base.py:14121 ms24.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms24.7%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13021 ms24.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms24.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms24.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms24.7%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12321 ms24.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms24.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3419 ms22.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms22.6%
BaseHandler._get_responsedjango/core/handlers/base.py:19819 ms22.6%
project_testsapps/projects/urls.py:1807 ms8.2%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {5 ms6.2%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms2.1%
QuerySet.__iter__django/db/models/query.py:3902 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms2.1%
QuerySet.__iter__django/db/models/query.py:3902 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
org_shellapps/orgs/views.py:422 ms2.1%
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.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
shellapps/projects/urls.py:732 ms2.1%
can_manageapps/projects/urls.py:442 ms2.1%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
project_testsapps/projects/urls.py:207 return render(request, "project_tests.html", context)5 ms6.2%
renderdjango/shortcuts.py:253 ms4.1%
render_to_stringdjango/template/loader.py:623 ms4.1%
Template.renderdjango/template/backends/django.py:1073 ms4.1%
Template.renderdjango/template/base.py:1743 ms4.1%
instrumented_test_renderdjango/test/utils.py:1143 ms4.1%
NodeList.renderdjango/template/base.py:10913 ms4.1%
Node.render_annotateddjango/template/base.py:10523 ms4.1%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms4.1%
instrumented_test_renderdjango/test/utils.py:1143 ms4.1%
NodeList.renderdjango/template/base.py:10913 ms4.1%
Node.render_annotateddjango/template/base.py:10523 ms4.1%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms4.1%
instrumented_test_renderdjango/test/utils.py:1143 ms4.1%
NodeList.renderdjango/template/base.py:10913 ms4.1%
Node.render_annotateddjango/template/base.py:10523 ms4.1%
BlockNode.renderdjango/template/loader_tags.py:663 ms4.1%
NodeList.renderdjango/template/base.py:10913 ms4.1%
Node.render_annotateddjango/template/base.py:10523 ms4.1%
IfNode.renderdjango/template/defaulttags.py:3333 ms4.1%
NodeList.renderdjango/template/base.py:10913 ms4.1%
Node.render_annotateddjango/template/base.py:10523 ms4.1%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.1%
NodeList.renderdjango/template/base.py:10912 ms2.1%
Node.render_annotateddjango/template/base.py:10522 ms2.1%
SimpleNode.renderdjango/template/library.py:3252 ms2.1%
heroicon_miniheroicons/templatetags/heroicons.py:182 ms2.1%
_render_iconheroicons/templatetags/heroicons.py:392 ms2.1%
_render_iconheroicons/__init__.py:632 ms2.1%
tostring<stdlib>/xml/etree/ElementTree.py:11102 ms2.1%
ElementTree.write<stdlib>/xml/etree/ElementTree.py:7372 ms2.1%
_namespaces<stdlib>/xml/etree/ElementTree.py:8662 ms2.1%
SimpleNode.renderdjango/template/library.py:3252 ms2.1%
purlft/templatetags/helpers.py:292 ms2.1%
Project.urlapps/projects/models.py:59 return reverse(name, args=[self.organization.slug, self.slug, *args])2 ms2.1%
reversedjango/urls/base.py:982 ms2.1%
URLResolver._reverse_with_prefixdjango/urls/resolvers.py:8032 ms2.1%
renderdjango/shortcuts.py:262 ms2.1%
HttpResponse.__init__django/http/response.py:3822 ms2.1%
HttpResponse.contentdjango/http/response.py:4142 ms2.1%
project_testsapps/projects/urls.py:1773 ms4.1%
find_projectapps/projects/urls.py:523 ms4.1%
can_viewapps/projects/urls.py:333 ms4.1%
can_manage_projectapps/projects/urls.py:38 if not user.is_authenticated:2 ms2.1%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2512 ms2.1%
SimpleLazyObject._setupdjango/utils/functional.py:4042 ms2.1%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:402 ms2.1%
get_userdjango/contrib/auth/middleware.py:202 ms2.1%
get_userdjango/contrib/auth/__init__.py:3182 ms2.1%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet.getdjango/db/models/query.py:6352 ms2.1%
QuerySet.__len__django/db/models/query.py:3722 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.1%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms2.1%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.1%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms2.1%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms2.1%
Exact.as_sqldjango/db/models/lookups.py:4072 ms2.1%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2382 ms2.1%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
project_testsapps/projects/urls.py:2013 ms4.1%
memory_testsapps/projects/analytics.py:5012 ms2.1%
Scope.dailyapps/projects/analytics.py:170 return TestDailyStats.objects.filter(self.environment_q(), project=self.project, day__gte=self.since.date())2 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet.filterdjango/db/models/query.py:15422 ms2.1%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.1%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.1%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.1%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.1%
Query.build_filterdjango/db/models/sql/query.py:15772 ms2.1%
Query.setup_joinsdjango/db/models/sql/query.py:19742 ms2.1%
memory_testsapps/projects/analytics.py:518 scope.perf()2 ms2.1%
QuerySet.__iter__django/db/models/query.py:3902 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms2.1%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.1%
Model.savedjango/db/models/base.py:8742 ms2.1%
Model.save_basedjango/db/models/base.py:9662 ms2.1%
Model._save_tabledjango/db/models/base.py:11102 ms2.1%
Model._do_updatedjango/db/models/base.py:12112 ms2.1%
QuerySet._updatedjango/db/models/query.py:13272 ms2.1%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.1%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
MemoryTest.setUpapps/projects/tests.py:1375 self.client.force_login(self.user)12 ms14.4%
ClientMixin.force_logindjango/test/client.py:85512 ms14.4%
ClientMixin._logindjango/test/client.py:8819 ms10.3%
logindjango/contrib/auth/__init__.py:1875 ms6.2%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4343 ms4.1%
SessionStore.createdjango/contrib/sessions/backends/db.py:702 ms2.1%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1982 ms2.1%
SessionStore.existsdjango/contrib/sessions/backends/db.py:632 ms2.1%
QuerySet.existsdjango/db/models/query.py:13372 ms2.1%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.1%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.1%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.1%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.1%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.1%
Model.savedjango/db/models/base.py:8742 ms2.1%
Model.save_basedjango/db/models/base.py:9662 ms2.1%
Model._save_tabledjango/db/models/base.py:11672 ms2.1%
Model._do_insertdjango/db/models/base.py:12182 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet._insertdjango/db/models/query.py:19182 ms2.1%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4372 ms2.1%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1752 ms2.1%
Model.deletedjango/db/models/base.py:12982 ms2.1%
Collector.deletedjango/db/models/deletion.py:4502 ms2.1%
Collector.can_fast_deletedjango/db/models/deletion.py:2052 ms2.1%
logindjango/contrib/auth/__init__.py:1752 ms2.1%
SessionBase.__contains__django/contrib/sessions/backends/base.py:522 ms2.1%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms2.1%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms2.1%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet.getdjango/db/models/query.py:6352 ms2.1%
QuerySet.__len__django/db/models/query.py:3722 ms2.1%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.1%
ModelIterable.__iter__django/db/models/query.py:952 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
logindjango/contrib/auth/__init__.py:1972 ms2.1%
Signal.senddjango/dispatch/dispatcher.py:2092 ms2.1%
update_last_logindjango/contrib/auth/models.py:242 ms2.1%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:622 ms2.1%
Model.savedjango/db/models/base.py:8742 ms2.1%
Model.save_basedjango/db/models/base.py:9662 ms2.1%
Model._save_tabledjango/db/models/base.py:11102 ms2.1%
Model._do_updatedjango/db/models/base.py:12112 ms2.1%
QuerySet._updatedjango/db/models/query.py:13272 ms2.1%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.1%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
ClientMixin._logindjango/test/client.py:8762 ms2.1%
ClientMixin.sessiondjango/test/client.py:8122 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1212 ms2.1%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.1%
Model.savedjango/db/models/base.py:8742 ms2.1%
Model.save_basedjango/db/models/base.py:9662 ms2.1%
Model._save_tabledjango/db/models/base.py:11672 ms2.1%
Model._do_insertdjango/db/models/base.py:12182 ms2.1%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.1%
QuerySet._insertdjango/db/models/query.py:19182 ms2.1%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
ClientMixin._logindjango/test/client.py:8832 ms2.1%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.1%
Model.savedjango/db/models/base.py:8742 ms2.1%
Model.save_basedjango/db/models/base.py:9662 ms2.1%
Model._save_tabledjango/db/models/base.py:11102 ms2.1%
Model._do_updatedjango/db/models/base.py:12112 ms2.1%
QuerySet._updatedjango/db/models/query.py:13272 ms2.1%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.1%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()5 ms6.2%
TestCase._fixture_teardowndjango/test/testcases.py:14953 ms4.1%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4833 ms4.1%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.1%
CursorWrapper._executedjango/db/backends/utils.py:1033 ms4.1%
Cursor.executepsycopg/cursor.py:1133 ms4.1%
Connection.waitpsycopg/connection.py:4953 ms4.1%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms2.1%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms2.1%
Atomic.__exit__django/db/transaction.py:2832 ms2.1%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.1%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4132 ms2.1%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3712 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.1%
Cursor.executepsycopg/cursor.py:1132 ms2.1%
Connection.waitpsycopg/connection.py:4952 ms2.1%
Estimated from 48 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/tests.py:1408
response = self.client.get(self.project.url("project_tests"), {"tab": "memory"})
MemoryTest.test_memory_tab
· Libraries
|
27 ms |
|
apps/projects/tests.py:1375
self.client.force_login(self.user)
MemoryTest.setUp
· Database
|
12 ms |
|
apps/projects/urls.py:38
if not user.is_authenticated:
can_manage_project
· Database
|
5 ms |
|
apps/projects/urls.py:40
return user.is_superuser or project.organization.membership_set.filter(user=user).exists()
can_manage_project
· Database
|
5 ms |
|
apps/projects/urls.py:207
return render(request, "project_tests.html", context)
project_tests
· Templates
|
5 ms |
|
apps/orgs/views.py:33
organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))
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/analytics.py:504
rows = list(
memory_tests
· Database
|
3 ms |
|
apps/projects/urls.py:49
project = get_object_or_404(
find_project
· Database
|
2 ms |
|
apps/projects/urls.py:198
total = daily.values("test_id").distinct().count()
project_tests
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.08 ms |
| _template_string_if_invalid_marker function | 0.06 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.05 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
50 queries · 19 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
4×
SELECT %s AS "a" FROM "orgs_membership" WHERE ("orgs_membership"."organization_id" = %s AND "orgs_membership"."user_id" = %s) LIMIT ?
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:1408
|
65 ms |
|
call setUp
apps/projects/tests.py:1375
|
12 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
5 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 | |
|---|---|---|---|---|
| 44 minutes ago | CI github-actions:test | passed | 84 ms | Profile |
| an hour ago | CI github-actions:test | passed | 82 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 102 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 45 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 83 ms | Profile |