CI
github-actions:test
5 runs
Average
51 ms
median 56 ms
max 61 ms
max 61 ms
Phases
Setup 0.74 ms
Call 50 ms
Teardown 0.16 ms
Categories
Database 24 ms
App code 2 ms
Other (Libraries, Unsampled) 25 ms
17 database queries per run
Needs 0 KB of memory (max 0 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, an hour ago ·
open run
call56 ms98.3%
CallInfo.from_call_pytest/runner.py:35356 ms98.3%
call_and_report.<locals>.<lambda>_pytest/runner.py:24556 ms98.3%
HookCaller.__call__pluggy/_hooks.py:51256 ms98.3%
PluginManager._hookexecpluggy/_manager.py:12056 ms98.3%
_multicallpluggy/_callers.py:12156 ms98.3%
pytest_runtest_call_pytest/runner.py:17956 ms98.3%
_django_setup_unittest.<locals>.non_debugging_runtestpytest_django/plugin.py:57356 ms98.3%
SimpleTestCase.__call__django/test/testcases.py:31356 ms98.3%
SimpleTestCase._setup_and_calldjango/test/testcases.py:36851 ms88.7%
TestCase.__call__<stdlib>/unittest/case.py:74751 ms88.7%
TestCase.run<stdlib>/unittest/case.py:69151 ms88.7%
TestCase._callTestMethod<stdlib>/unittest/case.py:63751 ms88.7%
McpTest.test_get_test_by_substringapps/mcp/tests.py:234 self.assertEqual(self.call("get_test", nodeid="test_monthly_report")["nodeid"], SLOW)51 ms88.7%
McpTest.callapps/mcp/tests.py:8151 ms88.7%
McpTest.rpcapps/mcp/tests.py:7451 ms88.7%
McpTest.postapps/mcp/tests.py:66 return self.client.post(51 ms88.7%
Client.postdjango/test/client.py:115351 ms88.7%
RequestFactory.postdjango/test/client.py:49951 ms88.7%
RequestFactory.genericdjango/test/client.py:67151 ms88.7%
Client.requestdjango/test/client.py:108251 ms88.7%
ClientHandler.__call__django/test/client.py:17329 ms50.7%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6229 ms50.7%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10429 ms50.7%
WhiteNoise.add_fileswhitenoise/base.py:10829 ms50.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12022 ms38.0%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13122 ms38.0%
WhiteNoise.get_static_filewhitenoise/base.py:20818 ms31.7%
StaticFile.__init__whitenoise/responders.py:737 ms12.7%
StaticFile.get_headerswhitenoise/responders.py:1784 ms6.3%
parsedate<stdlib>/email/_parseaddr.py:1854 ms6.3%
StaticFile.get_headerswhitenoise/responders.py:1672 ms3.2%
StaticFile.get_headerswhitenoise/responders.py:1762 ms3.2%
formatdate<stdlib>/email/utils.py:2662 ms3.2%
StaticFile.__init__whitenoise/responders.py:765 ms9.5%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1894 ms6.3%
Headers.__getitem__<stdlib>/wsgiref/headers.py:834 ms6.3%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms3.2%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms3.2%
Headers.get<stdlib>/wsgiref/headers.py:1062 ms3.2%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms3.2%
StaticFile.__init__whitenoise/responders.py:774 ms6.3%
StaticFile.get_alternativeswhitenoise/responders.py:2014 ms6.3%
StaticFile.__init__whitenoise/responders.py:722 ms3.2%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms3.2%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms3.2%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms3.2%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms3.2%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms3.2%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms3.2%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms3.2%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1862 ms3.2%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms3.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1155 ms9.5%
scantreewhitenoise/base.py:2625 ms9.5%
scantreewhitenoise/base.py:2625 ms9.5%
scantreewhitenoise/base.py:2644 ms6.3%
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:18622 ms38.0%
BaseHandler.get_responsedjango/core/handlers/base.py:14122 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13022 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12322 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3422 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms38.0%
BaseHandler._get_responsedjango/core/handlers/base.py:19822 ms38.0%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6522 ms38.0%
mcpapps/mcp/urls.py:14720 ms34.9%
handleapps/mcp/urls.py:11520 ms34.9%
call_toolapps/mcp/urls.py:7520 ms34.9%
Tools.callapps/mcp/tools.py:18120 ms34.9%
Tools.get_testapps/mcp/tools.py:32313 ms22.2%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()13 ms22.2%
QuerySet.firstdjango/db/models/query.py:114513 ms22.2%
QuerySet.__iter__django/db/models/query.py:39013 ms22.2%
QuerySet._fetch_alldjango/db/models/query.py:200013 ms22.2%
ModelIterable.__iter__django/db/models/query.py:9513 ms22.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:161111 ms19.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:76711 ms19.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:879 ms15.8%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:4919 ms15.8%
SQLCompiler._order_by_pairsdjango/db/models/sql/compiler.py:4749 ms15.8%
SQLCompiler.find_ordering_namedjango/db/models/sql/compiler.py:10799 ms15.8%
SQLCompiler._setup_joinsdjango/db/models/sql/compiler.py:11349 ms15.8%
Query.setup_joinsdjango/db/models/sql/query.py:18769 ms15.8%
<GC>~9 ms15.8%
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:3002 ms3.2%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12592 ms3.2%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10312 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
Tools.get_testapps/mcp/tools.py:3635 ms9.5%
flakiness_for_testapps/projects/flakiness.py:326 history = observations_for(test.project, [test.id], since).get(test.id, [])5 ms9.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms3.2%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms3.2%
QuerySet.getdjango/db/models/query.py:6352 ms3.2%
QuerySet.__len__django/db/models/query.py:3722 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
observations_forapps/projects/flakiness.py:165 test_runs = list(test_runs)2 ms3.2%
QuerySet.__iter__django/db/models/query.py:3902 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.2%
ValuesListIterable.__iter__django/db/models/query.py:2382 ms3.2%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms3.2%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms3.2%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms3.2%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms3.2%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms3.2%
observations_forapps/projects/flakiness.py:189 for row in Profile.objects.filter(id__in={row[3] for row in perfs}).values_list(2 ms3.2%
QuerySet.__iter__django/db/models/query.py:3902 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.2%
ValuesListIterable.__iter__django/db/models/query.py:2382 ms3.2%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
Tools.get_testapps/mcp/tools.py:2972 ms3.2%
environment_stats_for_testapps/projects/analytics.py:748 for perf in TestPerf.objects.filter(test=test, date__gte=since).select_related("environment").order_by("date"):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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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:1252 ms3.2%
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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.2%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms3.2%
BaseCursor._set_resultspsycopg/_cursor_base.py:5352 ms3.2%
BaseCursor._select_current_resultpsycopg/_cursor_base.py:5142 ms3.2%
SimpleTestCase._setup_and_calldjango/test/testcases.py:3715 ms9.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()5 ms9.5%
TestCase._fixture_teardowndjango/test/testcases.py:14942 ms3.2%
TestCase._should_check_constraintsdjango/test/testcases.py:15032 ms3.2%
DatabaseWrapper.is_usabledjango/db/backends/postgresql/base.py:4922 ms3.2%
Cursor.executepsycopg/cursor.py:1132 ms3.2%
Connection.waitpsycopg/connection.py:4952 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms3.2%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms3.2%
Atomic.__exit__django/db/transaction.py:2862 ms3.2%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.2%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms3.2%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.2%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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
shown
.
Hot lines in your code
|
apps/mcp/tests.py:66
return self.client.post(
McpTest.post
· Libraries
|
29 ms |
|
apps/projects/analytics.py:846
return perfs.select_related("profile", "environment").order_by("-date").first()
latest_perf
· Database
|
13 ms |
|
apps/mcp/urls.py:55
project = Project.objects.filter(secrettokens__token=token).first()
authenticate
· Database
|
2 ms |
|
apps/projects/analytics.py:748
for perf in TestPerf.objects.filter(test=test, date__gte=since).select_related("environment").order_by("date"):
environment_stats_for_test
· Database
|
2 ms |
|
apps/projects/flakiness.py:326
history = observations_for(test.project, [test.id], since).get(test.id, [])
flakiness_for_test
· Database
|
2 ms |
|
apps/projects/flakiness.py:165
test_runs = list(test_runs)
observations_for
· Database
|
2 ms |
|
apps/projects/flakiness.py:189
for row in Profile.objects.filter(id__in={row[3] for row in perfs}).values_list(
observations_for
· Database
|
2 ms |
Fixtures
Exact setup time| _template_string_if_invalid_marker function | 0.07 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.04 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
17 queries · 8 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/mcp/tests.py:234
|
51 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 | |
|---|---|---|---|---|
| an hour ago | CI github-actions:test | passed | 57 ms | Profile |
| an hour ago | CI github-actions:test | passed | 56 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 61 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 25 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 54 ms | Profile |