CI
github-actions:test
12 runs
Average
50 ms
median 57 ms
max 62 ms
max 62 ms
Phases
Setup 0.66 ms
Call 50 ms
Teardown 0.15 ms
Categories
Database 25 ms
App code 1 ms
Other (Libraries, Unsampled, pytest) 24 ms
17 database queries per run
Needs 52 KB of memory (max 612 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call58 ms98.6%
McpTest.test_list_runsapps/mcp/tests.py:271 result = self.call("list_runs", limit=2)37 ms63.6%
McpTest.callapps/mcp/tests.py:8237 ms63.6%
McpTest.rpcapps/mcp/tests.py:7537 ms63.6%
McpTest.postapps/mcp/tests.py:67 return self.client.post(37 ms63.6%
Client.postdjango/test/client.py:115337 ms63.6%
RequestFactory.postdjango/test/client.py:49937 ms63.6%
RequestFactory.genericdjango/test/client.py:67137 ms63.6%
Client.requestdjango/test/client.py:108237 ms63.6%
ClientHandler.__call__django/test/client.py:17330 ms50.9%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6230 ms50.9%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10430 ms50.9%
WhiteNoise.add_fileswhitenoise/base.py:10830 ms50.9%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12026 ms44.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13126 ms44.5%
WhiteNoise.get_static_filewhitenoise/base.py:20822 ms38.2%
StaticFile.__init__whitenoise/responders.py:7711 ms19.1%
StaticFile.get_alternativeswhitenoise/responders.py:2077 ms12.7%
Headers.items<stdlib>/wsgiref/headers.py:1317 ms12.7%
<GC>~7 ms12.7%
StaticFile.get_alternativeswhitenoise/responders.py:2004 ms6.4%
__init____init__:-12 ms3.2%
Headers.__init__<stdlib>/wsgiref/headers.py:432 ms3.2%
StaticFile.__init__whitenoise/responders.py:737 ms12.7%
StaticFile.get_headerswhitenoise/responders.py:1764 ms6.4%
formatdate<stdlib>/email/utils.py:2662 ms3.2%
StaticFile.get_headerswhitenoise/responders.py:1782 ms3.2%
parsedate<stdlib>/email/_parseaddr.py:1862 ms3.2%
StaticFile.get_headerswhitenoise/responders.py:1812 ms3.2%
StaticFile.__init__whitenoise/responders.py:752 ms3.2%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms3.2%
WhiteNoise.get_static_filewhitenoise/base.py:2024 ms6.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms3.2%
scantreewhitenoise/base.py:2622 ms3.2%
scantreewhitenoise/base.py:2622 ms3.2%
scantreewhitenoise/base.py:2622 ms3.2%
scantreewhitenoise/base.py:2622 ms3.2%
scantreewhitenoise/base.py:2622 ms3.2%
scantreewhitenoise/base.py:2642 ms3.2%
ClientHandler.__call__django/test/client.py:1867 ms12.7%
BaseHandler.get_responsedjango/core/handlers/base.py:1417 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1307 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1237 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
MiddlewareMixin.__call__django/utils/deprecation.py:3097 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:347 ms12.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:557 ms12.7%
BaseHandler._get_responsedjango/core/handlers/base.py:1987 ms12.7%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:657 ms12.7%
mcpapps/mcp/urls.py:1254 ms6.4%
authenticateapps/mcp/urls.py:55 project = Project.objects.filter(secrettokens__token=token).first()2 ms3.2%
QuerySet.firstdjango/db/models/query.py:11452 ms3.2%
QuerySet.__iter__django/db/models/query.py:3902 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.2%
ModelIterable.__iter__django/db/models/query.py:952 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.2%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 ms3.2%
authenticateapps/mcp/urls.py:57 SecretTokens.objects.filter(token=token).update(date_last_used=timezone.now())2 ms3.2%
QuerySet.updatedjango/db/models/query.py:13002 ms3.2%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.2%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 ms3.2%
mcpapps/mcp/urls.py:1474 ms6.4%
handleapps/mcp/urls.py:1154 ms6.4%
call_toolapps/mcp/urls.py:754 ms6.4%
Tools.callapps/mcp/tools.py:1884 ms6.4%
Tools.list_runsapps/mcp/tools.py:470 scope.profiles().select_related("commit").defer("summary", "insights").order_by("-started_at")[:limit]4 ms6.4%
QuerySet.__iter__django/db/models/query.py:3904 ms6.4%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms6.4%
ModelIterable.__iter__django/db/models/query.py:954 ms6.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms3.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms3.2%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms3.2%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms3.2%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms3.2%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms3.2%
Col.as_sqldjango/db/models/expressions.py:13252 ms3.2%
SQLCompiler.quote_name_unless_aliasdjango/db/backends/postgresql/compiler.py:342 ms3.2%
SQLCompiler.quote_name_unless_aliasdjango/db/models/sql/compiler.py:5582 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.2%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 ms3.2%
McpTest.test_list_runsapps/mcp/tests.py:27519 ms31.8%
McpTest.callapps/mcp/tests.py:8219 ms31.8%
McpTest.rpcapps/mcp/tests.py:7519 ms31.8%
McpTest.postapps/mcp/tests.py:67 return self.client.post(19 ms31.8%
Client.postdjango/test/client.py:115319 ms31.8%
RequestFactory.postdjango/test/client.py:49919 ms31.8%
RequestFactory.genericdjango/test/client.py:67119 ms31.8%
Client.requestdjango/test/client.py:108219 ms31.8%
ClientHandler.__call__django/test/client.py:18619 ms31.8%
BaseHandler.get_responsedjango/core/handlers/base.py:14119 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13019 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12319 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3419 ms31.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms31.8%
BaseHandler._get_responsedjango/core/handlers/base.py:19819 ms31.8%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6519 ms31.8%
mcpapps/mcp/urls.py:14719 ms31.8%
handleapps/mcp/urls.py:11519 ms31.8%
call_toolapps/mcp/urls.py:7519 ms31.8%
Tools.callapps/mcp/tools.py:18819 ms31.8%
Tools.list_runsapps/mcp/tools.py:470 scope.profiles().select_related("commit").defer("summary", "insights").order_by("-started_at")[:limit]9 ms15.9%
QuerySet.__iter__django/db/models/query.py:3909 ms15.9%
QuerySet._fetch_alldjango/db/models/query.py:20009 ms15.9%
ModelIterable.__iter__django/db/models/query.py:954 ms6.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16244 ms6.4%
CursorWrapper.executedjango/db/backends/utils.py:794 ms6.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:924 ms6.4%
ModelIterable.__iter__django/db/models/query.py:1274 ms6.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15774 ms6.4%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15264 ms6.4%
Col.get_db_convertersdjango/db/models/expressions.py:13392 ms3.2%
Field.__eq__django/db/models/fields/__init__.py:6772 ms3.2%
ModelIterable.__iter__django/db/models/query.py:1282 ms3.2%
Model.from_dbdjango/db/models/base.py:6052 ms3.2%
Model.__init__django/db/models/base.py:5132 ms3.2%
Tools.list_runsapps/mcp/tools.py:4757 ms12.7%
Tools.urlapps/mcp/tools.py:1727 ms12.7%
Project.urlapps/projects/models.py:59 return reverse(name, args=[self.organization.slug, self.slug, *args])7 ms12.7%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2577 ms12.7%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2227 ms12.7%
QuerySet.getdjango/db/models/query.py:6356 ms9.5%
QuerySet.__len__django/db/models/query.py:3726 ms9.5%
QuerySet._fetch_alldjango/db/models/query.py:20006 ms9.5%
ModelIterable.__iter__django/db/models/query.py:956 ms9.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16244 ms6.4%
CursorWrapper.executedjango/db/backends/utils.py:794 ms6.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:924 ms6.4%
CursorWrapper._executedjango/db/backends/utils.py:1054 ms6.4%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 ms3.2%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.2%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.2%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms3.2%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms3.2%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms3.2%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms3.2%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2552 ms3.2%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10092 ms3.2%
QuerySet.getdjango/db/models/query.py:6252 ms3.2%
QuerySet.filterdjango/db/models/query.py:15422 ms3.2%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms3.2%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms3.2%
Query.add_qdjango/db/models/sql/query.py:16712 ms3.2%
Query._add_qdjango/db/models/sql/query.py:17032 ms3.2%
Query.build_filterdjango/db/models/sql/query.py:15282 ms3.2%
Query._add_qdjango/db/models/sql/query.py:17032 ms3.2%
Query.build_filterdjango/db/models/sql/query.py:16132 ms3.2%
Query.build_lookupdjango/db/models/sql/query.py:14402 ms3.2%
Lookup.__init__django/db/models/lookups.py:352 ms3.2%
Tools.list_runsapps/mcp/tools.py:494 for session in sessions:2 ms3.2%
QuerySet.__iter__django/db/models/query.py:3902 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.2%
ModelIterable.__iter__django/db/models/query.py:952 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms3.2%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms3.2%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.2%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 ms3.2%
Estimated from 31 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
|
30 ms |
|
apps/mcp/tools.py:470
scope.profiles().select_related("commit").defer("summary", "insights").order_by("-started_at")[:limit]
Tools.list_runs
· Database
|
13 ms |
|
apps/projects/models.py:59
return reverse(name, args=[self.organization.slug, self.slug, *args])
Project.url
· Database
|
7 ms |
|
apps/mcp/urls.py:55
project = Project.objects.filter(secrettokens__token=token).first()
authenticate
· Database
|
2 ms |
|
apps/mcp/urls.py:57
SecretTokens.objects.filter(token=token).update(date_last_used=timezone.now())
authenticate
· Database
|
2 ms |
|
apps/mcp/tools.py:494
for session in sessions:
Tools.list_runs
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
17 queries · 9 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/mcp/tests.py:271
|
56 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 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 | 59 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 28 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 52 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 48 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 61 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 31 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 62 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 60 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 58 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 61 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 30 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 56 ms | Profile |