CI
github-actions:test
12 runs
Average
40 ms
median 44 ms
max 60 ms
max 60 ms
Phases
Setup 0.63 ms
Call 39 ms
Teardown 0.16 ms
Categories
Database 13 ms
Other (Libraries, Unsampled, pytest) 27 ms
13 database queries per run
Needs 250 KB of memory (max 608 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call50 ms98.5%
McpTest.test_get_test_not_foundapps/mcp/tests.py:238 body = self.rpc("tools/call", {"name": "get_test", "arguments": {"nodeid": "test_other"}})40 ms78.8%
McpTest.rpcapps/mcp/tests.py:7540 ms78.8%
McpTest.postapps/mcp/tests.py:67 return self.client.post(40 ms78.8%
Client.postdjango/test/client.py:115340 ms78.8%
RequestFactory.postdjango/test/client.py:49940 ms78.8%
RequestFactory.genericdjango/test/client.py:67140 ms78.8%
Client.requestdjango/test/client.py:108240 ms78.8%
ClientHandler.__call__django/test/client.py:17338 ms73.9%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6238 ms73.9%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10438 ms73.9%
WhiteNoise.add_fileswhitenoise/base.py:10838 ms73.9%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12035 ms68.9%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13133 ms64.0%
WhiteNoise.get_static_filewhitenoise/base.py:20818 ms34.5%
StaticFile.__init__whitenoise/responders.py:768 ms14.8%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1895 ms9.8%
Headers.__getitem__<stdlib>/wsgiref/headers.py:835 ms9.8%
Headers.get<stdlib>/wsgiref/headers.py:1063 ms4.9%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1883 ms4.9%
Headers.__contains__<stdlib>/wsgiref/headers.py:873 ms4.9%
StaticFile.__init__whitenoise/responders.py:725 ms9.8%
StaticFile.get_file_statswhitenoise/responders.py:1613 ms4.9%
StaticFile.__init__whitenoise/responders.py:775 ms9.8%
StaticFile.get_alternativeswhitenoise/responders.py:2003 ms4.9%
__init____init__:-13 ms4.9%
Headers.__init__<stdlib>/wsgiref/headers.py:443 ms4.9%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:503 ms4.9%
WhiteNoise.get_static_filewhitenoise/base.py:2038 ms14.8%
WhiteNoise.add_cache_headerswhitenoise/base.py:2243 ms4.9%
Headers.__setitem__<stdlib>/wsgiref/headers.py:623 ms4.9%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1763 ms4.9%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1973 ms4.9%
URLMixin.urldebug_toolbar/panels/staticfiles.py:203 ms4.9%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2053 ms4.9%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1783 ms4.9%
WhiteNoise.get_static_filewhitenoise/base.py:2025 ms9.8%
ClientHandler.__call__django/test/client.py:1863 ms4.9%
BaseHandler.get_responsedjango/core/handlers/base.py:1413 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1303 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1233 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3093 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:343 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:553 ms4.9%
BaseHandler._get_responsedjango/core/handlers/base.py:1983 ms4.9%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:653 ms4.9%
mcpapps/mcp/urls.py:1253 ms4.9%
authenticateapps/mcp/urls.py:55 project = Project.objects.filter(secrettokens__token=token).first()3 ms4.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms4.9%
QuerySet.filterdjango/db/models/query.py:15423 ms4.9%
QuerySet._filter_or_excludedjango/db/models/query.py:15603 ms4.9%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15703 ms4.9%
Query.add_qdjango/db/models/sql/query.py:16713 ms4.9%
Query._add_qdjango/db/models/sql/query.py:17033 ms4.9%
Query.build_filterdjango/db/models/sql/query.py:16113 ms4.9%
Query._get_coldjango/db/models/sql/query.py:4513 ms4.9%
McpTest.test_get_test_not_foundapps/mcp/tests.py:2405 ms9.8%
McpTest.rpcapps/mcp/tests.py:755 ms9.8%
McpTest.postapps/mcp/tests.py:67 return self.client.post(5 ms9.8%
Client.postdjango/test/client.py:11535 ms9.8%
RequestFactory.postdjango/test/client.py:4995 ms9.8%
RequestFactory.genericdjango/test/client.py:6715 ms9.8%
Client.requestdjango/test/client.py:10825 ms9.8%
ClientHandler.__call__django/test/client.py:1865 ms9.8%
BaseHandler.get_responsedjango/core/handlers/base.py:1415 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1305 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1235 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:345 ms9.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms9.8%
BaseHandler._get_responsedjango/core/handlers/base.py:1985 ms9.8%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:655 ms9.8%
mcpapps/mcp/urls.py:1475 ms9.8%
handleapps/mcp/urls.py:1155 ms9.8%
call_toolapps/mcp/urls.py:755 ms9.8%
Tools.callapps/mcp/tools.py:1885 ms9.8%
Tools.get_testapps/mcp/tools.py:3025 ms9.8%
Tools.find_testapps/mcp/tools.py:288 test = tests.filter(name=nodeid).first()3 ms4.9%
QuerySet.firstdjango/db/models/query.py:11453 ms4.9%
QuerySet.__iter__django/db/models/query.py:3903 ms4.9%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.9%
ModelIterable.__iter__django/db/models/query.py:953 ms4.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms4.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.9%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms4.9%
Cursor.executepsycopg/cursor.py:1133 ms4.9%
Connection.waitpsycopg/connection.py:4953 ms4.9%
Tools.find_testapps/mcp/tools.py:291 matches = list(tests.filter(name__contains=nodeid).order_by("name")[:11])3 ms4.9%
QuerySet.__iter__django/db/models/query.py:3903 ms4.9%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms4.9%
ModelIterable.__iter__django/db/models/query.py:953 ms4.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms4.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.9%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()5 ms9.8%
TestCase._fixture_teardowndjango/test/testcases.py:14953 ms4.9%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4833 ms4.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.9%
CursorWrapper._executedjango/db/backends/utils.py:1033 ms4.9%
Cursor.executepsycopg/cursor.py:1133 ms4.9%
Connection.waitpsycopg/connection.py:4953 ms4.9%
TestCase._fixture_teardowndjango/test/testcases.py:14973 ms4.9%
TestCase._rollback_atomicsdjango/test/testcases.py:14053 ms4.9%
Atomic.__exit__django/db/transaction.py:2833 ms4.9%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:263 ms4.9%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4133 ms4.9%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3713 ms4.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms4.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms4.9%
CursorWrapper._executedjango/db/backends/utils.py:1033 ms4.9%
Cursor.executepsycopg/cursor.py:1133 ms4.9%
Connection.waitpsycopg/connection.py:4953 ms4.9%
Estimated from 20 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
|
38 ms |
|
apps/mcp/urls.py:55
project = Project.objects.filter(secrettokens__token=token).first()
authenticate
· Database
|
3 ms |
|
apps/mcp/tools.py:288
test = tests.filter(name=nodeid).first()
Tools.find_test
· Database
|
3 ms |
|
apps/mcp/tools.py:291
matches = list(tests.filter(name__contains=nodeid).order_by("name")[:11])
Tools.find_test
· Database
|
3 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.05 ms |
| _django_set_urlconf function | 0.04 ms |
| _django_db_marker function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
13 queries · 5 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
4×
SELECT "projects_test"."id", "projects_test"."name", "projects_test"."project_id", "projects_test"."slug", "projects_test"."date_last_run", "projects_test"."date_first_seen", "projects_test"."first_commit_id", "projects_test"."muted" FROM "projects_test" WHERE ("projects_test"."project_id" = %s AND…
Biggest pieces of work
|
call test body
apps/mcp/tests.py:238
|
45 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 | 51 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 24 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 46 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 33 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 60 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 22 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 46 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 43 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 44 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 49 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 20 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 44 ms | Profile |