CI
github-actions:test
12 runs
Average
48 ms
median 53 ms
max 65 ms
max 65 ms
Phases
Setup 0.71 ms
Call 48 ms
Teardown 0.17 ms
Categories
Database 24 ms
App code 0.88 ms
Other (Libraries, Unsampled, pytest, Serialization) 24 ms
16 database queries per run
Needs 33 KB of memory (max 356 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call56 ms97.8%
McpTest.test_get_testapps/mcp/tests.py:224 result = self.call("get_test", nodeid=SLOW)54 ms94.8%
McpTest.callapps/mcp/tests.py:8254 ms94.8%
McpTest.rpcapps/mcp/tests.py:7554 ms94.8%
McpTest.postapps/mcp/tests.py:67 return self.client.post(54 ms94.8%
Client.postdjango/test/client.py:115354 ms94.8%
RequestFactory.postdjango/test/client.py:49954 ms94.8%
RequestFactory.genericdjango/test/client.py:67154 ms94.8%
Client.requestdjango/test/client.py:108254 ms94.8%
ClientHandler.__call__django/test/client.py:17335 ms62.2%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6235 ms62.2%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10435 ms62.2%
WhiteNoise.add_fileswhitenoise/base.py:10835 ms62.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12035 ms62.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13135 ms62.2%
WhiteNoise.get_static_filewhitenoise/base.py:20832 ms56.3%
StaticFile.__init__whitenoise/responders.py:7722 ms38.5%
StaticFile.get_alternativeswhitenoise/responders.py:19815 ms26.7%
<GC>~15 ms26.7%
StaticFile.get_alternativeswhitenoise/responders.py:2005 ms8.9%
__init____init__:-13 ms5.9%
Headers.__init__<stdlib>/wsgiref/headers.py:442 ms3.0%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms3.0%
Headers.__init__<stdlib>/wsgiref/headers.py:432 ms3.0%
StaticFile.get_alternativeswhitenoise/responders.py:2012 ms3.0%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms3.0%
Headers.__delitem__<stdlib>/wsgiref/headers.py:722 ms3.0%
<GC>~2 ms3.0%
StaticFile.__init__whitenoise/responders.py:733 ms5.9%
StaticFile.get_headerswhitenoise/responders.py:1762 ms3.0%
formatdate<stdlib>/email/utils.py:2662 ms3.0%
format_datetime<stdlib>/email/utils.py:2842 ms3.0%
StaticFile.get_headerswhitenoise/responders.py:1782 ms3.0%
parsedate<stdlib>/email/_parseaddr.py:1852 ms3.0%
StaticFile.__init__whitenoise/responders.py:723 ms5.9%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms3.0%
StaticFile.__init__whitenoise/responders.py:752 ms3.0%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms3.0%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms3.0%
StaticFile.__init__whitenoise/responders.py:762 ms3.0%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1892 ms3.0%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms3.0%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms3.0%
ClientHandler.__call__django/test/client.py:18619 ms32.6%
BaseHandler.get_responsedjango/core/handlers/base.py:14119 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13019 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12319 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30919 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3419 ms32.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5519 ms32.6%
BaseHandler._get_responsedjango/core/handlers/base.py:19819 ms32.6%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6519 ms32.6%
mcpapps/mcp/urls.py:14719 ms32.6%
handleapps/mcp/urls.py:11519 ms32.6%
call_toolapps/mcp/urls.py:7519 ms32.6%
Tools.callapps/mcp/tools.py:18819 ms32.6%
Tools.get_testapps/mcp/tools.py:33010 ms17.8%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()10 ms17.8%
QuerySet.firstdjango/db/models/query.py:114510 ms17.8%
QuerySet.__iter__django/db/models/query.py:39010 ms17.8%
QuerySet._fetch_alldjango/db/models/query.py:200010 ms17.8%
ModelIterable.__iter__django/db/models/query.py:9510 ms17.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16118 ms14.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7678 ms14.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:868 ms14.8%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:758 ms14.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3173 ms5.9%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5783 ms5.9%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3003 ms5.9%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12592 ms3.0%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10092 ms3.0%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12662 ms3.0%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12812 ms3.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2552 ms3.0%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10292 ms3.0%
Query.join_parent_modeldjango/db/models/sql/query.py:11932 ms3.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.0%
Cursor.executepsycopg/cursor.py:1132 ms3.0%
Connection.waitpsycopg/connection.py:4952 ms3.0%
Tools.get_testapps/mcp/tools.py:3215 ms8.9%
rapps/mcp/tools.py:158 return round(value, digits) if isinstance(value, float) else value2 ms3.0%
latest_perfapps/projects/analytics.py:843 perfs = TestPerf.objects.filter(test=test).exclude(outcome="skipped")2 ms3.0%
QuerySet.excludedjango/db/models/query.py:15502 ms3.0%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms3.0%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15682 ms3.0%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()2 ms3.0%
QuerySet.firstdjango/db/models/query.py:11452 ms3.0%
QuerySet.__getitem__django/db/models/query.py:4272 ms3.0%
QuerySet._chaindjango/db/models/query.py:19732 ms3.0%
QuerySet._clonedjango/db/models/query.py:19862 ms3.0%
Query.chaindjango/db/models/sql/query.py:4332 ms3.0%
Query.clonedjango/db/models/sql/query.py:3972 ms3.0%
Tools.get_testapps/mcp/tools.py:3703 ms5.9%
flakiness_for_testapps/projects/flakiness.py:326 history = observations_for(test.project, [test.id], since).get(test.id, [])3 ms5.9%
observations_forapps/projects/flakiness.py:165 test_runs = list(test_runs)3 ms5.9%
QuerySet.__iter__django/db/models/query.py:3903 ms5.9%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms5.9%
ValuesListIterable.__iter__django/db/models/query.py:2383 ms5.9%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15733 ms5.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms5.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms5.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms5.9%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms5.9%
Cursor.executepsycopg/cursor.py:1133 ms5.9%
Connection.waitpsycopg/connection.py:4953 ms5.9%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms3.0%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms3.0%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms3.0%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms3.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.0%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.0%
Cursor.executepsycopg/cursor.py:1132 ms3.0%
Connection.waitpsycopg/connection.py:4952 ms3.0%
Estimated from 33 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
|
35 ms |
|
apps/projects/analytics.py:846
return perfs.select_related("profile", "environment").order_by("-date").first()
latest_perf
· Database
|
12 ms |
|
apps/projects/flakiness.py:165
test_runs = list(test_runs)
observations_for
· Database
|
3 ms |
|
apps/mcp/tools.py:158
return round(value, digits) if isinstance(value, float) else value
r
· App code
|
2 ms |
|
apps/projects/analytics.py:843
perfs = TestPerf.objects.filter(test=test).exclude(outcome="skipped")
latest_perf
· Database
|
2 ms |
Fixtures
Exact setup time| _template_string_if_invalid_marker function | 0.06 ms |
| _dj_autoclear_mailbox function | 0.06 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.05 ms |
| _live_server_helper function | 0.05 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.03 ms |
Database
16 queries · 7 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/mcp/tests.py:224
|
54 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 | 57 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 27 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 53 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 45 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 64 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 32 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 54 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 52 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 52 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 65 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 27 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 55 ms | Profile |