Tests / apps/projects/tests.py
ProfilePagePaginationTest::test_slowest_tests_first_then_the_next_page
First seen 7 hours ago in 78a4357
CI
github-actions:test
4 runs
Average
385 ms
median 422 ms
max 484 ms
max 484 ms
Phases
Setup 211 ms
Call 172 ms
Teardown 1 ms
Categories
Database 270 ms
App code 22 ms
Factories 0.93 ms
Other (Libraries, Templates, Serialization, pytest, ...) 91 ms
101 database queries per run
Needs 3 MB of memory (max 5 MB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, a minute ago ·
open run
setup222 ms53.4%
TestCase.setUpClassdjango/test/testcases.py:1439 cls.setUpTestData()209 ms50.5%
ProfilePagePaginationTest.setUpTestDataapps/projects/tests.py:1332198 ms47.8%
store_profileapps/projects/testing.py:373151 ms36.5%
process_profile_partapps/projects/profiles.py:34689 ms21.4%
write_snapshotsapps/projects/profiles.py:313 cursor.executemany(SNAPSHOT_UPSERT, batch)54 ms13.1%
CursorWrapper.executemanydjango/db/backends/utils.py:8454 ms13.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9254 ms13.1%
CursorWrapper._executemanydjango/db/backends/utils.py:11454 ms13.1%
Cursor.executemanypsycopg/cursor.py:13850 ms12.2%
Connection.waitpsycopg/connection.py:49550 ms12.2%
BaseCursor._executemany_gen_pipelinepsycopg/_cursor_base.py:23936 ms8.6%
BasePipeline._communicate_genpsycopg/_pipeline_base.py:11236 ms8.6%
BaseCursor._executemany_gen_pipelinepsycopg/_cursor_base.py:23612 ms3.0%
PostgresClientQuery.dumppsycopg/_queries.py:29912 ms3.0%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:30011 ms2.7%
Dumper.quotepsycopg/adapt.py:597 ms1.8%
_JsonDumper.dumppsycopg/types/json.py:2186 ms1.5%
dumps<stdlib>/json/__init__.py:2346 ms1.5%
JSONEncoder.encode<stdlib>/json/encoder.py:2026 ms1.5%
JSONEncoder.iterencode<stdlib>/json/encoder.py:2635 ms1.2%
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
Cursor.executemanypsycopg/cursor.py:1372 ms0.6%
Connection._pipeline_nolockpsycopg/connection.py:4722 ms0.6%
Pipeline.__exit__psycopg/_pipeline.py:732 ms0.6%
Connection.waitpsycopg/connection.py:4952 ms0.6%
write_snapshotsapps/projects/profiles.py:31234 ms8.3%
write_snapshots.<locals>.<genexpr>apps/projects/profiles.py:31034 ms8.3%
write_snapshots.<locals>.rowapps/projects/profiles.py:306 compress(json.dumps(snapshot_document(document, entry), separators=(",", ":")).encode()),33 ms8.0%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)15 ms3.6%
compress<stdlib>/gzip.py:66815 ms3.6%
dumps<stdlib>/json/__init__.py:24110 ms2.4%
JSONEncoder.encode<stdlib>/json/encoder.py:20210 ms2.4%
JSONEncoder.iterencode<stdlib>/json/encoder.py:2639 ms2.1%
snapshot_documentapps/projects/profiles.py:2505 ms1.2%
snapshot_document.<locals>.node_idapps/projects/profiles.py:241 node = pair[0] if isinstance(pair, list | tuple) and len(pair) == PAIR else -12 ms0.6%
1 smaller frames hidden
2 smaller frames hidden
1 smaller frames hidden
process_profile_partapps/projects/profiles.py:34425 ms5.9%
upsert_testsapps/projects/profiles.py:45125 ms5.9%
TestManager.upsertapps/projects/models.py:230 self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order11 ms2.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:8711 ms2.7%
QuerySet.bulk_createdjango/db/models/query.py:83310 ms2.4%
QuerySet._batched_insertdjango/db/models/query.py:195610 ms2.4%
QuerySet._insertdjango/db/models/query.py:191810 ms2.4%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:192510 ms2.4%
CursorWrapper.executedjango/db/backends/utils.py:7910 ms2.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9210 ms2.4%
CursorWrapper._executedjango/db/backends/utils.py:10510 ms2.4%
Cursor.executepsycopg/cursor.py:11310 ms2.4%
Connection.waitpsycopg/connection.py:49510 ms2.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2054 ms0.9%
BaseCursor._convert_querypsycopg/_cursor_base.py:4654 ms0.9%
PostgresClientQuery.convertpsycopg/_queries.py:2894 ms0.9%
PostgresClientQuery.dumppsycopg/_queries.py:2994 ms0.9%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms0.6%
Dumper.quotepsycopg/adapt.py:592 ms0.6%
ListDumper.dumppsycopg/types/array.py:1842 ms0.6%
ListDumper.dump.<locals>.dump_listpsycopg/types/array.py:1712 ms0.6%
1 smaller frames hidden
TestManager.upsertapps/projects/models.py:2296 ms1.5%
TestManager.slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))2 ms0.6%
QuerySet.__iter__django/db/models/query.py:3902 ms0.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms0.6%
ValuesListIterable.__iter__django/db/models/query.py:2382 ms0.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms0.6%
TestManager.slugs_forapps/projects/models.py:242 taken = set(self.filter(project_id=project_id, slug__in=set(new.values())).values_list("slug", flat=True))2 ms0.6%
QuerySet.__iter__django/db/models/query.py:3902 ms0.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms0.6%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms0.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms0.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms0.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms0.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms0.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms0.6%
Cursor.executepsycopg/cursor.py:1132 ms0.6%
Connection.waitpsycopg/connection.py:4952 ms0.6%
1 smaller frames hidden
TestManager.upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}6 ms1.5%
QuerySet.__iter__django/db/models/query.py:3905 ms1.2%
QuerySet._fetch_alldjango/db/models/query.py:20005 ms1.2%
ModelIterable.__iter__django/db/models/query.py:954 ms0.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16622 ms0.6%
cursor_iterdjango/db/models/sql/compiler.py:22542 ms0.6%
cursor_iter.<locals>.<lambda>django/db/models/sql/compiler.py:22542 ms0.6%
DatabaseErrorWrapper.__call__.<locals>.innerdjango/db/utils.py:1012 ms0.6%
Cursor.fetchmanypsycopg/cursor.py:2682 ms0.6%
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
process_profile_partapps/projects/profiles.py:345 write_perfs(profile, part, entries, tests)23 ms5.6%
write_perfsapps/projects/profiles.py:458 TestPerf.objects.bulk_create(16 ms3.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:8716 ms3.9%
QuerySet.bulk_createdjango/db/models/query.py:83315 ms3.6%
QuerySet._batched_insertdjango/db/models/query.py:195615 ms3.6%
QuerySet._insertdjango/db/models/query.py:191815 ms3.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19257 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:797 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:927 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1057 ms1.8%
Cursor.executepsycopg/cursor.py:1137 ms1.8%
Connection.waitpsycopg/connection.py:4957 ms1.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms0.6%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms0.6%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms0.6%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms0.6%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms0.6%
Dumper.quotepsycopg/adapt.py:592 ms0.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19246 ms1.5%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18135 ms1.2%
SQLInsertCompiler.prepare_valuedjango/db/models/sql/compiler.py:17422 ms0.6%
1 smaller frames hidden
1 smaller frames hidden
write_perfsapps/projects/profiles.py:4604 ms0.9%
Model.__init__django/db/models/base.py:5664 ms0.9%
ForwardManyToOneDescriptor.__set__django/db/models/fields/related_descriptors.py:3372 ms0.6%
write_perfsapps/projects/profiles.py:4672 ms0.6%
1 smaller frames hidden
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)7 ms1.8%
claim_partapps/projects/profiles.py:3782 ms0.6%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(2 ms0.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms0.6%
claim_partapps/projects/profiles.py:383 commit, _ = Commit.objects.get_or_create(2 ms0.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms0.6%
2 smaller frames hidden
process_profile_partapps/projects/profiles.py:3415 ms1.2%
load_documentapps/projects/profiles.py:112 return json.loads(gzip.decompress(bytes(part.document)))5 ms1.2%
loads<stdlib>/json/__init__.py:3714 ms0.9%
JSONDecoder.decode<stdlib>/json/decoder.py:3584 ms0.9%
JSONDecoder.raw_decode<stdlib>/json/decoder.py:3744 ms0.9%
1 smaller frames hidden
2 smaller frames hidden
store_profileapps/projects/testing.py:374 finalize_profile(profile.id)36 ms8.6%
finalize_profileapps/projects/profiles.py:49628 ms6.8%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(15 ms3.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:8715 ms3.6%
QuerySet.bulk_createdjango/db/models/query.py:83314 ms3.3%
QuerySet._batched_insertdjango/db/models/query.py:195614 ms3.3%
QuerySet._insertdjango/db/models/query.py:191814 ms3.3%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19259 ms2.1%
CursorWrapper.executedjango/db/backends/utils.py:799 ms2.1%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:929 ms2.1%
CursorWrapper._executedjango/db/backends/utils.py:1059 ms2.1%
Cursor.executepsycopg/cursor.py:1139 ms2.1%
Connection.waitpsycopg/connection.py:4959 ms2.1%
BaseCursor._execute_genpsycopg/_cursor_base.py:2054 ms0.9%
BaseCursor._convert_querypsycopg/_cursor_base.py:4654 ms0.9%
PostgresClientQuery.convertpsycopg/_queries.py:2894 ms0.9%
PostgresClientQuery.dumppsycopg/_queries.py:2994 ms0.9%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3004 ms0.9%
Dumper.quotepsycopg/adapt.py:594 ms0.9%
ListDumper.dumppsycopg/types/array.py:1844 ms0.9%
ListDumper.dump.<locals>.dump_listpsycopg/types/array.py:1712 ms0.6%
1 smaller frames hidden
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19245 ms1.2%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18134 ms0.9%
SQLInsertCompiler.pre_save_valdjango/db/models/sql/compiler.py:17512 ms0.6%
1 smaller frames hidden
1 smaller frames hidden
add_perfsapps/projects/rollups.py:30 for perf in perfs:5 ms1.2%
QuerySet.__iter__django/db/models/query.py:3905 ms1.2%
QuerySet._fetch_alldjango/db/models/query.py:20005 ms1.2%
ModelIterable.__iter__django/db/models/query.py:1282 ms0.6%
Model.from_dbdjango/db/models/base.py:6052 ms0.6%
ModelIterable.__iter__django/db/models/query.py:952 ms0.6%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(4 ms0.9%
QuerySet.__iter__django/db/models/query.py:3902 ms0.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms0.6%
ModelIterable.__iter__django/db/models/query.py:952 ms0.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms0.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms0.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms0.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms0.6%
Cursor.executepsycopg/cursor.py:1132 ms0.6%
Connection.waitpsycopg/connection.py:4952 ms0.6%
1 smaller frames hidden
add_perfsapps/projects/rollups.py:722 ms0.6%
1 smaller frames hidden
6 smaller frames hidden
store_profileapps/projects/testing.py:370 data = json.dumps(document).encode()4 ms0.9%
dumps<stdlib>/json/__init__.py:2344 ms0.9%
JSONEncoder.encode<stdlib>/json/encoder.py:2024 ms0.9%
JSONEncoder.iterencode<stdlib>/json/encoder.py:2634 ms0.9%
store_profileapps/projects/testing.py:372 part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))4 ms0.9%
compressapps/projects/profiles.py:108 return gzip.compress(data, compresslevel=6)2 ms0.6%
compress<stdlib>/gzip.py:6682 ms0.6%
1 smaller frames hidden
store_profileapps/projects/testing.py:3712 ms0.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms0.6%
QuerySet.createdjango/db/models/query.py:6692 ms0.6%
1 smaller frames hidden
ProfilePagePaginationTest.setUpTestDataapps/projects/tests.py:13315 ms1.2%
ProfilePagePaginationTest.setUpTestDataapps/projects/tests.py:13302 ms0.6%
add_memberapps/projects/testing.py:76 membership, _ = Membership.objects.get_or_create(2 ms0.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms0.6%
2 smaller frames hidden
TestCase.setUpClassdjango/test/testcases.py:1423 cls.cls_atomics = cls._enter_atomics()10 ms2.4%
TestCase._enter_atomicsdjango/test/testcases.py:139610 ms2.4%
Atomic.__enter__django/db/transaction.py:19810 ms2.4%
BaseDatabaseWrapper.get_autocommitdjango/db/backends/base/base.py:45410 ms2.4%
SimpleTestCase.ensure_connection_patch_method.<locals>.patched_ensure_connectiondjango/test/testcases.py:30310 ms2.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms2.4%
BaseDatabaseWrapper.ensure_connectiondjango/db/backends/base/base.py:27910 ms2.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms2.4%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:2569 ms2.1%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:269 ms2.1%
DatabaseWrapper.get_new_connectiondjango/db/backends/postgresql/base.py:3339 ms2.1%
Connection.connectpsycopg/connection.py:1099 ms2.1%
wait_connpsycopg/waiting.py:1455 ms1.2%
BaseConnection._connect_genpsycopg/_connection_base.py:4395 ms1.2%
wait_connpsycopg/waiting.py:1414 ms0.9%
EpollSelector.select<stdlib>/selectors.py:4524 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
call192 ms46.4%
ProfilePagePaginationTest.test_slowest_tests_first_then_the_next_pageapps/projects/tests.py:1338 response = self.client.get(url)122 ms29.3%
Client.getdjango/test/client.py:1124122 ms29.3%
RequestFactory.getdjango/test/client.py:475122 ms29.3%
RequestFactory.genericdjango/test/client.py:671122 ms29.3%
Client.requestdjango/test/client.py:1082122 ms29.3%
ClientHandler.__call__django/test/client.py:18692 ms22.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14192 ms22.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5592 ms22.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13092 ms22.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5592 ms22.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30992 ms22.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5592 ms22.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12392 ms22.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5592 ms22.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30990 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3490 ms21.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5590 ms21.8%
BaseHandler._get_responsedjango/core/handlers/base.py:19890 ms21.8%
project_profileapps/projects/urls.py:498 return render(73 ms17.5%
renderdjango/shortcuts.py:2573 ms17.5%
render_to_stringdjango/template/loader.py:6273 ms17.5%
Template.renderdjango/template/backends/django.py:10773 ms17.5%
Template.renderdjango/template/base.py:17473 ms17.5%
instrumented_test_renderdjango/test/utils.py:11473 ms17.5%
NodeList.renderdjango/template/base.py:109173 ms17.5%
Node.render_annotateddjango/template/base.py:105273 ms17.5%
ExtendsNode.renderdjango/template/loader_tags.py:16073 ms17.5%
instrumented_test_renderdjango/test/utils.py:11473 ms17.5%
NodeList.renderdjango/template/base.py:109173 ms17.5%
Node.render_annotateddjango/template/base.py:105273 ms17.5%
ExtendsNode.renderdjango/template/loader_tags.py:16073 ms17.5%
instrumented_test_renderdjango/test/utils.py:11473 ms17.5%
NodeList.renderdjango/template/base.py:109173 ms17.5%
Node.render_annotateddjango/template/base.py:105273 ms17.5%
BlockNode.renderdjango/template/loader_tags.py:6673 ms17.5%
NodeList.renderdjango/template/base.py:109173 ms17.5%
Node.render_annotateddjango/template/base.py:105273 ms17.5%
BlockNode.renderdjango/template/loader_tags.py:6667 ms16.1%
NodeList.renderdjango/template/base.py:109167 ms16.1%
Node.render_annotateddjango/template/base.py:105267 ms16.1%
IfNode.renderdjango/template/defaulttags.py:33367 ms16.1%
NodeList.renderdjango/template/base.py:109167 ms16.1%
Node.render_annotateddjango/template/base.py:105265 ms15.6%
ForNode.renderdjango/template/defaulttags.py:24963 ms15.1%
Node.render_annotateddjango/template/base.py:105263 ms15.1%
IncludeNode.renderdjango/template/loader_tags.py:21139 ms9.5%
Template.renderdjango/template/base.py:17635 ms8.5%
instrumented_test_renderdjango/test/utils.py:11429 ms7.1%
NodeList.renderdjango/template/base.py:109126 ms6.2%
Node.render_annotateddjango/template/base.py:105226 ms6.2%
ForNode.renderdjango/template/defaulttags.py:24920 ms4.7%
Node.render_annotateddjango/template/base.py:105216 ms3.8%
VariableNode.renderdjango/template/base.py:11568 ms1.9%
render_value_in_contextdjango/template/base.py:11346 ms1.4%
conditional_escapedjango/utils/html.py:1274 ms0.9%
keep_lazy.<locals>.decorator.<locals>.wrapperdjango/utils/functional.py:2314 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
VariableNode.renderdjango/template/base.py:11506 ms1.4%
FilterExpression.resolvedjango/template/base.py:8154 ms0.9%
1 smaller frames hidden
IfNode.renderdjango/template/defaulttags.py:3264 ms0.9%
TemplateLiteral.evaldjango/template/defaulttags.py:9184 ms0.9%
FilterExpression.resolvedjango/template/base.py:7884 ms0.9%
Variable.resolvedjango/template/base.py:9284 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
instrumented_test_renderdjango/test/utils.py:1134 ms0.9%
SimpleNode.renderdjango/template/library.py:3258 ms1.9%
testnameft/templatetags/helpers.py:1264 ms0.9%
purlft/templatetags/helpers.py:294 ms0.9%
VariableNode.renderdjango/template/base.py:11568 ms1.9%
render_value_in_contextdjango/template/base.py:11346 ms1.4%
conditional_escapedjango/utils/html.py:1276 ms1.4%
keep_lazy.<locals>.decorator.<locals>.wrapperdjango/utils/functional.py:2264 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
IfNode.renderdjango/template/defaulttags.py:3334 ms0.9%
NodeList.renderdjango/template/base.py:10914 ms0.9%
VariableNode.renderdjango/template/base.py:11504 ms0.9%
1 smaller frames hidden
IfNode.renderdjango/template/defaulttags.py:3334 ms0.9%
NodeList.renderdjango/template/base.py:10914 ms0.9%
1 smaller frames hidden
project_profileapps/projects/urls.py:490 for perf in perfs:8 ms1.9%
Sequence.__iter__<frozen _collections_abc>:10208 ms1.9%
Page.__getitem__django/core/paginator.py:3308 ms1.9%
QuerySet.__iter__django/db/models/query.py:3908 ms1.9%
QuerySet._fetch_alldjango/db/models/query.py:20008 ms1.9%
ModelIterable.__iter__django/db/models/query.py:956 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16244 ms0.9%
CursorWrapper.executedjango/db/backends/utils.py:794 ms0.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:924 ms0.9%
CursorWrapper._executedjango/db/backends/utils.py:1054 ms0.9%
Cursor.executepsycopg/cursor.py:1134 ms0.9%
Connection.waitpsycopg/connection.py:4954 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
project_profileapps/projects/urls.py:477 profile = get_object_or_404(4 ms0.9%
get_object_or_404django/shortcuts.py:904 ms0.9%
QuerySet.getdjango/db/models/query.py:6354 ms0.9%
QuerySet.__len__django/db/models/query.py:3724 ms0.9%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms0.9%
ModelIterable.__iter__django/db/models/query.py:954 ms0.9%
project_profileapps/projects/urls.py:5024 ms0.9%
1 smaller frames hidden
1 smaller frames hidden
ClientHandler.__call__django/test/client.py:17329 ms7.1%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6229 ms7.1%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10429 ms7.1%
WhiteNoise.add_fileswhitenoise/base.py:10829 ms7.1%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12024 ms5.7%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13124 ms5.7%
WhiteNoise.get_static_filewhitenoise/base.py:20818 ms4.3%
StaticFile.__init__whitenoise/responders.py:778 ms1.9%
StaticFile.get_alternativeswhitenoise/responders.py:2004 ms0.9%
2 smaller frames hidden
StaticFile.__init__whitenoise/responders.py:724 ms0.9%
StaticFile.get_file_statswhitenoise/responders.py:1614 ms0.9%
3 smaller frames hidden
WhiteNoise.get_static_filewhitenoise/base.py:2034 ms0.9%
WhiteNoise.add_cache_headerswhitenoise/base.py:2244 ms0.9%
1 smaller frames hidden
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms1.4%
scantreewhitenoise/base.py:2626 ms1.4%
scantreewhitenoise/base.py:2626 ms1.4%
scantreewhitenoise/base.py:2624 ms0.9%
scantreewhitenoise/base.py:2624 ms0.9%
1 smaller frames hidden
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()33 ms8.0%
TestCase._fixture_teardowndjango/test/testcases.py:149531 ms7.6%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:48331 ms7.6%
CursorWrapper.executedjango/db/backends/utils.py:7931 ms7.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9231 ms7.6%
CursorWrapper._executedjango/db/backends/utils.py:10331 ms7.6%
Cursor.executepsycopg/cursor.py:11331 ms7.6%
Connection.waitpsycopg/connection.py:49531 ms7.6%
1 smaller frames hidden
ProfilePagePaginationTest.test_slowest_tests_first_then_the_next_pageapps/projects/tests.py:134222 ms5.2%
Client.getdjango/test/client.py:112422 ms5.2%
RequestFactory.getdjango/test/client.py:47522 ms5.2%
RequestFactory.genericdjango/test/client.py:67122 ms5.2%
Client.requestdjango/test/client.py:108222 ms5.2%
ClientHandler.__call__django/test/client.py:18622 ms5.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14122 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13022 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12322 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3422 ms5.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms5.2%
BaseHandler._get_responsedjango/core/handlers/base.py:19822 ms5.2%
project_profileapps/projects/urls.py:4746 ms1.4%
find_projectapps/projects/urls.py:526 ms1.4%
can_viewapps/projects/urls.py:336 ms1.4%
can_manage_projectapps/projects/urls.py:38 if not user.is_authenticated:4 ms0.9%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2514 ms0.9%
SimpleLazyObject._setupdjango/utils/functional.py:4044 ms0.9%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:404 ms0.9%
get_userdjango/contrib/auth/middleware.py:204 ms0.9%
1 smaller frames hidden
project_profileapps/projects/urls.py:498 return render(6 ms1.4%
renderdjango/shortcuts.py:256 ms1.4%
render_to_stringdjango/template/loader.py:626 ms1.4%
Template.renderdjango/template/backends/django.py:1076 ms1.4%
Template.renderdjango/template/base.py:1746 ms1.4%
instrumented_test_renderdjango/test/utils.py:1146 ms1.4%
NodeList.renderdjango/template/base.py:10916 ms1.4%
Node.render_annotateddjango/template/base.py:10526 ms1.4%
ExtendsNode.renderdjango/template/loader_tags.py:1606 ms1.4%
instrumented_test_renderdjango/test/utils.py:1146 ms1.4%
NodeList.renderdjango/template/base.py:10916 ms1.4%
Node.render_annotateddjango/template/base.py:10526 ms1.4%
ExtendsNode.renderdjango/template/loader_tags.py:1606 ms1.4%
instrumented_test_renderdjango/test/utils.py:1146 ms1.4%
NodeList.renderdjango/template/base.py:10916 ms1.4%
Node.render_annotateddjango/template/base.py:10526 ms1.4%
BlockNode.renderdjango/template/loader_tags.py:666 ms1.4%
NodeList.renderdjango/template/base.py:10916 ms1.4%
Node.render_annotateddjango/template/base.py:10526 ms1.4%
project_profileapps/projects/urls.py:477 profile = get_object_or_404(4 ms0.9%
get_object_or_404django/shortcuts.py:904 ms0.9%
QuerySet.getdjango/db/models/query.py:6354 ms0.9%
QuerySet.__len__django/db/models/query.py:3724 ms0.9%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms0.9%
ModelIterable.__iter__django/db/models/query.py:954 ms0.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16244 ms0.9%
CursorWrapper.executedjango/db/backends/utils.py:794 ms0.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:924 ms0.9%
project_profileapps/projects/urls.py:490 for perf in perfs:4 ms0.9%
Sequence.__iter__<frozen _collections_abc>:10204 ms0.9%
Page.__getitem__django/core/paginator.py:3304 ms0.9%
QuerySet.__iter__django/db/models/query.py:3904 ms0.9%
QuerySet._fetch_alldjango/db/models/query.py:20004 ms0.9%
1 smaller frames hidden
ProfilePagePaginationTest.test_slowest_tests_first_then_the_next_pageapps/projects/tests.py:1335 self.client.force_login(self.user)10 ms2.4%
ClientMixin.force_logindjango/test/client.py:85510 ms2.4%
ClientMixin._logindjango/test/client.py:8816 ms1.4%
logindjango/contrib/auth/__init__.py:1874 ms0.9%
1 smaller frames hidden
2 smaller frames hidden
3 smaller frames hidden
teardown0.80 ms0.2%
Estimated from 279 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/urls.py:498
return render(
project_profile
· Templates
|
69 ms |
|
apps/projects/profiles.py:313
cursor.executemany(SNAPSHOT_UPSERT, batch)
write_snapshots
· Database
|
54 ms |
|
apps/projects/tests.py:1338
response = self.client.get(url)
ProfilePagePaginationTest.test_slowest_tests_first_then_the_next_page
· Libraries
|
31 ms |
|
apps/projects/profiles.py:108
return gzip.compress(data, compresslevel=6)
compress
· Libraries
|
17 ms |
|
apps/projects/profiles.py:458
TestPerf.objects.bulk_create(
write_perfs
· Database
|
16 ms |
|
apps/projects/rollups.py:88
TestDailyStats.objects.bulk_create(
add_perfs
· Database
|
15 ms |
|
apps/projects/urls.py:490
for perf in perfs:
project_profile
· Database
|
12 ms |
|
apps/projects/profiles.py:306
compress(json.dumps(snapshot_document(document, entry), separators=(",", ":")).encode()),
write_snapshots.<locals>.row
· Serialization
|
11 ms |
|
apps/projects/models.py:230
self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order
TestManager.upsert
· Database
|
11 ms |
|
apps/projects/tests.py:1335
self.client.force_login(self.user)
ProfilePagePaginationTest.test_slowest_tests_first_then_the_next_page
· Database
|
10 ms |
Fixtures
Exact setup time| _unittest_setUpClass_fixture_ProfilePagePaginationTest class | 220 ms |
| _django_setup_unittest class | 0.55 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _template_string_if_invalid_marker function | 0.05 ms |
| _django_set_urlconf 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
101 queries · 132 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
5×
SELECT "projects_profile"."id", "projects_profile"."project_id", "projects_profile"."number", "projects_profile"."environment_id", "projects_profile"."session_id", "projects_profile"."run_id", "projects_profile"."commit_id", "projects_profile"."ingest_id", "projects_profile"."external_id", "project…
4×
SELECT %s AS "a" FROM "orgs_membership" WHERE ("orgs_membership"."organization_id" = %s AND "orgs_membership"."user_id" = %s) LIMIT ?
4×
SELECT "projects_testperf"."id", "projects_testperf"."project_id", "projects_testperf"."test_id", "projects_testperf"."profile_id", "projects_testperf"."part", "projects_testperf"."environment_id", "projects_testperf"."outcome", "projects_testperf"."duration", "projects_testperf"."setup", "projects…
3×
SELECT "projects_project"."id", "projects_project"."organization_id", "projects_project"."name", "projects_project"."slug", "projects_project"."public", "projects_project"."description", "projects_project"."date_created", "projects_project"."date_updated", "projects_project"."created_by_id" FROM "p…
3×
SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > %s AND "django_session"."session_key" = %s) LIMIT ?
Biggest pieces of work
|
setup setUpClass
django/test/testcases.py:1439
|
219 ms |
|
call test body
apps/projects/tests.py:1338
|
159 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
33 ms |
|
setup _gt_from_lt
<stdlib>/functools.py:94
|
1 ms |
| setup pytest internals | 1 ms |
Reliability
4 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.