CI
github-actions:test
12 runs
Average
36 ms
median 41 ms
max 45 ms
max 45 ms
Phases
Setup 0.65 ms
Call 36 ms
Teardown 0.15 ms
Categories
Database 9 ms
Other (Libraries, Unsampled, pytest) 28 ms
10 database queries per run
Needs 234 KB of memory (max 552 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
setup0.79 ms2.0%
__init____init__:-10.79 ms2.0%
signature<stdlib>/inspect.py:33430.79 ms2.0%
Signature.from_callable<stdlib>/inspect.py:30580.79 ms2.0%
_signature_from_callable<stdlib>/inspect.py:25280.79 ms2.0%
call39 ms97.7%
McpTest.test_list_environmentsapps/mcp/tests.py:184 result = self.call("list_environments")37 ms92.3%
McpTest.callapps/mcp/tests.py:8237 ms92.3%
McpTest.rpcapps/mcp/tests.py:7537 ms92.3%
McpTest.postapps/mcp/tests.py:67 return self.client.post(37 ms92.3%
Client.postdjango/test/client.py:115337 ms92.3%
RequestFactory.postdjango/test/client.py:49937 ms92.3%
RequestFactory.genericdjango/test/client.py:67137 ms92.3%
Client.requestdjango/test/client.py:108237 ms92.3%
ClientHandler.__call__django/test/client.py:18620 ms48.9%
BaseHandler.get_responsedjango/core/handlers/base.py:14120 ms48.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5520 ms48.9%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13020 ms48.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5520 ms48.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30920 ms48.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5520 ms48.9%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12320 ms48.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5520 ms48.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30920 ms48.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5520 ms48.9%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30917 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3417 ms43.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5517 ms43.4%
BaseHandler._get_responsedjango/core/handlers/base.py:19815 ms38.0%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6515 ms38.0%
mcpapps/mcp/urls.py:1259 ms21.7%
authenticateapps/mcp/urls.py:55 project = Project.objects.filter(secrettokens__token=token).first()9 ms21.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms10.9%
QuerySet.filterdjango/db/models/query.py:15422 ms5.4%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms5.4%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms5.4%
Query.add_qdjango/db/models/sql/query.py:16712 ms5.4%
Query._add_qdjango/db/models/sql/query.py:17032 ms5.4%
Query.build_filterdjango/db/models/sql/query.py:15992 ms5.4%
QuerySet.firstdjango/db/models/query.py:11442 ms5.4%
QuerySet.order_bydjango/db/models/query.py:17722 ms5.4%
<unknown function><unknown file>2 ms5.4%
QuerySet.firstdjango/db/models/query.py:11452 ms5.4%
QuerySet.__iter__django/db/models/query.py:3902 ms5.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms5.4%
ModelIterable.__iter__django/db/models/query.py:1282 ms5.4%
Model.from_dbdjango/db/models/base.py:6052 ms5.4%
mcpapps/mcp/urls.py:1477 ms16.3%
handleapps/mcp/urls.py:1157 ms16.3%
call_toolapps/mcp/urls.py:757 ms16.3%
Tools.callapps/mcp/tools.py:1887 ms16.3%
Tools.list_environmentsapps/mcp/tools.py:1917 ms16.3%
environment_rowsapps/projects/analytics.py:221 for row in Profile.objects.filter(project=project, status=Profile.StatusTypes.PROCESSED, started_at__gte=since)2 ms5.4%
QuerySet.__iter__django/db/models/query.py:3902 ms5.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms5.4%
ValuesIterable.__iter__django/db/models/query.py:2222 ms5.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms5.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms5.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms5.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms5.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms5.4%
Cursor.executepsycopg/cursor.py:1132 ms5.4%
Connection.waitpsycopg/connection.py:4952 ms5.4%
environment_rowsapps/projects/analytics.py:234 for row in project.session_set.filter(date_created__gte=since).values("environment").annotate(count=Count("id"))2 ms5.4%
QuerySet.__iter__django/db/models/query.py:3902 ms5.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms5.4%
ValuesIterable.__iter__django/db/models/query.py:2222 ms5.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms5.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms5.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms5.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms5.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms5.4%
Cursor.executepsycopg/cursor.py:1132 ms5.4%
Connection.waitpsycopg/connection.py:4952 ms5.4%
environment_rowsapps/projects/analytics.py:237 for environment in Environment.objects.filter(project=project):2 ms5.4%
QuerySet.__iter__django/db/models/query.py:3902 ms5.4%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms5.4%
ModelIterable.__iter__django/db/models/query.py:952 ms5.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms5.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms5.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms5.4%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms5.4%
Cursor.executepsycopg/cursor.py:1132 ms5.4%
Connection.waitpsycopg/connection.py:4952 ms5.4%
BaseHandler._get_responsedjango/core/handlers/base.py:1822 ms5.4%
BaseHandler.resolve_requestdjango/core/handlers/base.py:3142 ms5.4%
URLResolver.resolvedjango/urls/resolvers.py:6782 ms5.4%
URLResolver.resolvedjango/urls/resolvers.py:7002 ms5.4%
MiddlewareMixin.__call__django/utils/deprecation.py:3082 ms5.4%
CommonMiddleware.process_requestdjango/middleware/common.py:482 ms5.4%
HttpRequest.get_hostdjango/http/request.py:1952 ms5.4%
validate_hostdjango/http/request.py:8412 ms5.4%
ClientHandler.__call__django/test/client.py:17317 ms43.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6215 ms38.0%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10413 ms32.6%
WhiteNoise.add_fileswhitenoise/base.py:10813 ms32.6%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1209 ms21.7%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1319 ms21.7%
WhiteNoise.get_static_filewhitenoise/base.py:2084 ms10.9%
StaticFile.__init__whitenoise/responders.py:762 ms5.4%
StaticFile.__init__whitenoise/responders.py:732 ms5.4%
StaticFile.get_headerswhitenoise/responders.py:1762 ms5.4%
formatdate<stdlib>/email/utils.py:2662 ms5.4%
WhiteNoise.get_static_filewhitenoise/base.py:2102 ms5.4%
Headers.items<stdlib>/wsgiref/headers.py:1392 ms5.4%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms5.4%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms5.4%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms5.4%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms5.4%
URLMixin.urldebug_toolbar/panels/staticfiles.py:212 ms5.4%
<GC>~2 ms5.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1154 ms10.9%
scantreewhitenoise/base.py:2624 ms10.9%
scantreewhitenoise/base.py:2622 ms5.4%
scantreewhitenoise/base.py:2622 ms5.4%
scantreewhitenoise/base.py:2622 ms5.4%
scantreewhitenoise/base.py:2622 ms5.4%
scantreewhitenoise/base.py:2642 ms5.4%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1112 ms5.4%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms5.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1202 ms5.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1312 ms5.4%
WhiteNoise.get_static_filewhitenoise/base.py:2082 ms5.4%
StaticFile.__init__whitenoise/responders.py:732 ms5.4%
StaticFile.get_headerswhitenoise/responders.py:1762 ms5.4%
formatdate<stdlib>/email/utils.py:2662 ms5.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:962 ms5.4%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms5.4%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms5.4%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms5.4%
CursorWrapper.executedjango/db/backends/utils.py:792 ms5.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms5.4%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms5.4%
Cursor.executepsycopg/cursor.py:1132 ms5.4%
Connection.waitpsycopg/connection.py:4952 ms5.4%
Estimated from 19 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/mcp/tests.py:67
return self.client.post(
McpTest.post
· Libraries
|
22 ms |
|
apps/mcp/urls.py:55
project = Project.objects.filter(secrettokens__token=token).first()
authenticate
· Database
|
9 ms |
|
apps/projects/analytics.py:221
for row in Profile.objects.filter(project=project, status=Profile.StatusTypes.PROCESSED, started_at__gte=since)
environment_rows
· Database
|
2 ms |
|
apps/projects/analytics.py:234
for row in project.session_set.filter(date_created__gte=since).values("environment").annotate(count=Count("id"))
environment_rows
· Database
|
2 ms |
|
apps/projects/analytics.py:237
for environment in Environment.objects.filter(project=project):
environment_rows
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.05 ms |
| _template_string_if_invalid_marker function | 0.03 ms |
| _django_db_marker function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.02 ms |
| monkeypatch function | 0.02 ms |
Database
10 queries · 4 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/mcp/tests.py:184
|
37 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
|
setup __init__
__init__:-1
|
0.79 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 | 40 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 20 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 41 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 36 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 45 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 26 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 42 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 41 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 41 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 45 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 20 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 41 ms | Profile |