Tests / apps/api/tests.py
IngestEnvironmentTest::test_old_client_on_github_actions
First seen 8 hours ago in 78a4357
CI
github-actions:test
5 runs
Average
55 ms
median 54 ms
max 81 ms
max 81 ms
Phases
Setup 0.79 ms
Call 54 ms
Teardown 0.17 ms
Categories
Database 27 ms
Other (Libraries, Unsampled, pytest) 28 ms
34 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
call53 ms97.9%
IngestEnvironmentTest.test_old_client_on_github_actionsapps/api/tests.py:396 session = self.ingest_start(47 ms86.6%
IngestEnvironmentTest.ingest_startapps/api/tests.py:352 response = self.client.post(47 ms86.6%
Client.postdjango/test/client.py:115347 ms86.6%
RequestFactory.postdjango/test/client.py:49947 ms86.6%
RequestFactory.genericdjango/test/client.py:67147 ms86.6%
Client.requestdjango/test/client.py:108247 ms86.6%
ClientHandler.__call__django/test/client.py:18624 ms45.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14124 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13024 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12324 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30924 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3424 ms45.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5524 ms45.2%
BaseHandler._get_responsedjango/core/handlers/base.py:19824 ms45.2%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6524 ms45.2%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3724 ms45.2%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6424 ms45.2%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:7522 ms41.4%
ingest_startapps/api/urls.py:100 process_ingest_start(ingest.id)20 ms37.7%
_SharedTaskProxy.__call__potatoq/app.py:76320 ms37.7%
Task.__call__potatoq/task.py:18920 ms37.7%
process_ingest_startapps/api/tasks.py:776 ms11.3%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()2 ms3.8%
QuerySet.firstdjango/db/models/query.py:11452 ms3.8%
QuerySet.__iter__django/db/models/query.py:3902 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.8%
get_or_create_numberedapps/projects/models.py:21 number = next_number(model, project.pk)2 ms3.8%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms3.8%
QuerySet.aggregatedjango/db/models/query.py:5942 ms3.8%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet.createdjango/db/models/query.py:6692 ms3.8%
Run.saveapps/projects/models.py:188 super().save(*args, **kwargs)2 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:844 ms7.5%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(4 ms7.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms7.5%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms3.8%
QuerySet.createdjango/db/models/query.py:6692 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:89 Session.objects.get_or_create(4 ms7.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms7.5%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms3.8%
QuerySet.createdjango/db/models/query.py:6692 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19242 ms3.8%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18492 ms3.8%
Atomic.__enter__django/db/transaction.py:2112 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms3.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:53 ingest = Ingest.objects.only("id").select_for_update().get(id=ingest_id)2 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:79 ingest.project,2 ms3.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2442 ms3.8%
ForeignObject.get_local_related_valuedjango/db/models/fields/related.py:8122 ms3.8%
ForeignObject.get_instance_value_for_fieldsdjango/db/models/fields/related.py:8342 ms3.8%
DeferredAttribute.__get__django/db/models/query_utils.py:2712 ms3.8%
Model.refresh_from_dbdjango/db/models/base.py:7582 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
ingest_startapps/api/urls.py:91 muted_tests = Test.objects.filter(project=project, mute__date_unmuted__isnull=True, mute__until__gte=timezone.now())2 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet.filterdjango/db/models/query.py:15422 ms3.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms3.8%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms3.8%
Query.add_qdjango/db/models/sql/query.py:16712 ms3.8%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms3.8%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms3.8%
QuerySet.__iter__django/db/models/query.py:3902 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms3.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
ClientHandler.__call__django/test/client.py:17322 ms41.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6222 ms41.4%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10422 ms41.4%
WhiteNoise.add_fileswhitenoise/base.py:10822 ms41.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12016 ms30.1%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13116 ms30.1%
WhiteNoise.get_static_filewhitenoise/base.py:20812 ms22.6%
StaticFile.__init__whitenoise/responders.py:724 ms7.5%
StaticFile.get_file_statswhitenoise/responders.py:1614 ms7.5%
__init____init__:-12 ms3.8%
FileEntry.__init__whitenoise/responders.py:2632 ms3.8%
FileEntry.stat_regular_filewhitenoise/responders.py:2762 ms3.8%
<GC>~2 ms3.8%
StaticFile.__init__whitenoise/responders.py:772 ms3.8%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms3.8%
__init____init__:-12 ms3.8%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:492 ms3.8%
StaticFile.__init__whitenoise/responders.py:742 ms3.8%
parsedate<stdlib>/email/_parseaddr.py:1852 ms3.8%
StaticFile.__init__whitenoise/responders.py:732 ms3.8%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms3.8%
WhiteNoise.add_mime_headerswhitenoise/base.py:2212 ms3.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms11.3%
scantreewhitenoise/base.py:2624 ms7.5%
scantreewhitenoise/base.py:2624 ms7.5%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()2 ms3.8%
TestCase._fixture_setupdjango/test/testcases.py:14782 ms3.8%
TestCase._enter_atomicsdjango/test/testcases.py:13962 ms3.8%
Atomic.__enter__django/db/transaction.py:2112 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms3.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
IngestEnvironmentTest.test_old_client_on_github_actionsapps/api/tests.py:399 self.assertEqual(session.environment.name, "ci:github-actions")2 ms3.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms3.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms3.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms3.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms3.8%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms3.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms3.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms3.8%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms3.8%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
Estimated from 26 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/api/tests.py:352
response = self.client.post(
IngestEnvironmentTest.ingest_start
· Libraries
|
22 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
4 ms |
|
apps/api/tasks.py:89
Session.objects.get_or_create(
process_ingest_start
· Database
|
4 ms |
|
apps/api/urls.py:59
SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)
touch_token
· Database
|
2 ms |
|
apps/api/urls.py:91
muted_tests = Test.objects.filter(project=project, mute__date_unmuted__isnull=True, mute__until__gte=timezone.now())
ingest_start
· Database
|
2 ms |
|
apps/api/urls.py:100
process_ingest_start(ingest.id)
ingest_start
· Database
|
2 ms |
|
apps/api/tasks.py:53
ingest = Ingest.objects.only("id").select_for_update().get(id=ingest_id)
process_ingest_start
· Database
|
2 ms |
|
apps/api/tasks.py:79
ingest.project,
process_ingest_start
· Database
|
2 ms |
|
apps/projects/models.py:18
existing = model.objects.filter(project=project, **lookup).first()
get_or_create_numbered
· Database
|
2 ms |
|
apps/projects/models.py:35
return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 1
next_number
· Database
|
2 ms |
Fixtures
Exact setup time| _template_string_if_invalid_marker function | 0.09 ms |
| _django_db_marker function | 0.05 ms |
| _live_server_helper function | 0.05 ms |
| _django_set_urlconf function | 0.05 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_clear_site_cache function | 0.04 ms |
| monkeypatch function | 0.02 ms |
Database
34 queries · 11 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/api/tests.py:396
|
49 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
2 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 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 | 54 ms | Profile |
| an hour ago | CI github-actions:test | passed | 54 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 81 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 29 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 57 ms | Profile |