CI
github-actions:test
12 runs
Average
78 ms
median 84 ms
max 94 ms
max 94 ms
Phases
Setup 0.69 ms
Call 77 ms
Teardown 0.19 ms
Categories
Database 73 ms
App code 1 ms
Test code 0.14 ms
Other (Libraries, Unsampled, Serialization, pytest, ...) 3 ms
107 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, 16 hours ago ·
open run
call77 ms98.9%
StorageTest.test_prune_old_dataapps/projects/tests.py:1251 newer_local = store_profile(31 ms40.3%
store_profileapps/projects/testing.py:37316 ms20.1%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)9 ms11.0%
claim_partapps/projects/profiles.py:4673 ms3.7%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)3 ms3.7%
Model.savedjango/db/models/base.py:8743 ms3.7%
Model.save_basedjango/db/models/base.py:9663 ms3.7%
Model._save_tabledjango/db/models/base.py:11103 ms3.7%
Model._do_updatedjango/db/models/base.py:12113 ms3.7%
QuerySet._updatedjango/db/models/query.py:13273 ms3.7%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21403 ms3.7%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21113 ms3.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLUpdateCompiler.as_sqldjango/db/models/sql/compiler.py:20881 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
WhereNode.as_sqldjango/db/models/sql/where.py:1511 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
Exact.as_sqldjango/db/models/lookups.py:4071 ms1.8%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2381 ms1.8%
BuiltinLookup.process_lhsdjango/db/models/lookups.py:2301 ms1.8%
Lookup.process_lhsdjango/db/models/lookups.py:1091 ms1.8%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:3071 ms1.8%
BaseExpression.resolve_expression.<locals>.<genexpr>django/db/models/expressions.py:3071 ms1.8%
<GC>~1 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
claim_partapps/projects/profiles.py:379 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)1 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
claim_partapps/projects/profiles.py:397 project = profile.project1 ms1.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2571 ms1.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2221 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:1271 ms1.8%
claim_partapps/projects/profiles.py:3991 ms1.8%
get_or_create_environmentapps/projects/environments.py:79 obj.save(update_fields=update_fields)1 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11101 ms1.8%
Model._do_updatedjango/db/models/base.py:12111 ms1.8%
QuerySet._updatedjango/db/models/query.py:13271 ms1.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21401 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLUpdateCompiler.as_sqldjango/db/models/sql/compiler.py:20881 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
WhereNode.as_sqldjango/db/models/sql/where.py:1511 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
claim_partapps/projects/profiles.py:404 commit, _ = Commit.objects.get_or_create(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.get_or_createdjango/db/models/query.py:9871 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
process_profile_partapps/projects/profiles.py:3653 ms3.7%
upsert_testsapps/projects/profiles.py:4723 ms3.7%
TestManager.upsertapps/projects/models.py:2291 ms1.8%
TestManager.slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ValuesListIterable.__iter__django/db/models/query.py:2381 ms1.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15731 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
TestManager.upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.filterdjango/db/models/query.py:15421 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15551 ms1.8%
process_profile_partapps/projects/profiles.py:356 part = ProfilePart.objects.filter(pk=part.pk).first()1 ms1.8%
QuerySet.firstdjango/db/models/query.py:11451 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
process_profile_partapps/projects/profiles.py:3661 ms1.8%
write_perfsapps/projects/profiles.py:479 TestPerf.objects.bulk_create(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.bulk_createdjango/db/models/query.py:8331 ms1.8%
QuerySet._batched_insertdjango/db/models/query.py:19561 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
store_profileapps/projects/testing.py:374 finalize_profile(profile.id)9 ms11.0%
finalize_profileapps/projects/profiles.py:5173 ms3.7%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.filterdjango/db/models/query.py:15421 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15601 ms1.8%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15701 ms1.8%
Query.add_qdjango/db/models/sql/query.py:16711 ms1.8%
Query._add_qdjango/db/models/sql/query.py:17031 ms1.8%
Query.build_filterdjango/db/models/sql/query.py:15511 ms1.8%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.bulk_createdjango/db/models/query.py:8331 ms1.8%
QuerySet._batched_insertdjango/db/models/query.py:19561 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19241 ms1.8%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18831 ms1.8%
DatabaseOperations.bulk_insert_sqldjango/db/backends/postgresql/operations.py:1561 ms1.8%
finalize_profileapps/projects/profiles.py:5111 ms1.8%
QuerySet.deletedjango/db/models/query.py:12381 ms1.8%
Collector.deletedjango/db/models/deletion.py:4711 ms1.8%
QuerySet._raw_deletedjango/db/models/query.py:12601 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLDeleteCompiler.as_sqldjango/db/models/sql/compiler.py:20061 ms1.8%
SQLDeleteCompiler._as_sqldjango/db/models/sql/compiler.py:19921 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
finalize_profileapps/projects/profiles.py:513 for duplicate in duplicates:1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ValuesIterable.__iter__django/db/models/query.py:2221 ms1.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15731 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
finalize_profileapps/projects/profiles.py:516 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()1 ms1.8%
QuerySet.firstdjango/db/models/query.py:11451 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
finalize_profileapps/projects/profiles.py:5251 ms1.8%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)1 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11101 ms1.8%
Model._do_updatedjango/db/models/base.py:12111 ms1.8%
QuerySet._updatedjango/db/models/query.py:13271 ms1.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21401 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
store_profileapps/projects/testing.py:3714 ms5.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms5.5%
QuerySet.createdjango/db/models/query.py:6694 ms5.5%
Profile.saveapps/projects/models.py:4653 ms3.7%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 13 ms3.7%
QuerySet.aggregatedjango/db/models/query.py:5943 ms3.7%
Query.get_aggregationdjango/db/models/sql/query.py:6333 ms3.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms3.7%
CursorWrapper.executedjango/db/backends/utils.py:793 ms3.7%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms3.7%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms3.7%
Cursor.executepsycopg/cursor.py:1133 ms3.7%
Connection.waitpsycopg/connection.py:4953 ms3.7%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)1 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11671 ms1.8%
Model._do_insertdjango/db/models/base.py:12181 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
store_profileapps/projects/testing.py:372 part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.createdjango/db/models/query.py:6691 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11671 ms1.8%
Model._do_insertdjango/db/models/base.py:12181 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
store_profileapps/projects/testing.py:375 profile.refresh_from_db()1 ms1.8%
Model.refresh_from_dbdjango/db/models/base.py:7581 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:124723 ms29.3%
store_profileapps/projects/testing.py:37314 ms18.3%
process_profile_partapps/projects/profiles.py:363 profile = claim_part(part, document)7 ms9.2%
claim_partapps/projects/profiles.py:3993 ms3.7%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(3 ms3.7%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms3.7%
QuerySet.get_or_createdjango/db/models/query.py:9871 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
QuerySet.get_or_createdjango/db/models/query.py:9941 ms1.8%
QuerySet.createdjango/db/models/query.py:6691 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11671 ms1.8%
Model._do_insertdjango/db/models/base.py:12181 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
claim_partapps/projects/profiles.py:397 project = profile.project1 ms1.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2571 ms1.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2221 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7671 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:861 ms1.8%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:751 ms1.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2551 ms1.8%
claim_partapps/projects/profiles.py:404 commit, _ = Commit.objects.get_or_create(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.get_or_createdjango/db/models/query.py:9871 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
claim_partapps/projects/profiles.py:4671 ms1.8%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)1 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11101 ms1.8%
Model._do_updatedjango/db/models/base.py:12111 ms1.8%
QuerySet._updatedjango/db/models/query.py:13271 ms1.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21401 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
process_profile_partapps/projects/profiles.py:3654 ms5.5%
upsert_testsapps/projects/profiles.py:4724 ms5.5%
TestManager.upsertapps/projects/models.py:2291 ms1.8%
TestManager.slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ValuesListIterable.__iter__django/db/models/query.py:2381 ms1.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15731 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7671 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:881 ms1.8%
WhereNode.split_having_qualifydjango/db/models/sql/where.py:471 ms1.8%
TestManager.upsertapps/projects/models.py:230 self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.bulk_createdjango/db/models/query.py:8331 ms1.8%
QuerySet._batched_insertdjango/db/models/query.py:19561 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2051 ms1.8%
BaseCursor._convert_querypsycopg/_cursor_base.py:4651 ms1.8%
PostgresClientQuery.convertpsycopg/_queries.py:2891 ms1.8%
PostgresClientQuery.dumppsycopg/_queries.py:2991 ms1.8%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3001 ms1.8%
TestManager.upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
process_profile_partapps/projects/profiles.py:3661 ms1.8%
write_perfsapps/projects/profiles.py:478 TestPerf.objects.filter(profile=profile, part=part.index).delete()1 ms1.8%
QuerySet.deletedjango/db/models/query.py:12381 ms1.8%
Collector.deletedjango/db/models/deletion.py:4711 ms1.8%
QuerySet._raw_deletedjango/db/models/query.py:12601 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
process_profile_partapps/projects/profiles.py:368 ProfilePart.objects.filter(pk=part.pk).update(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.filterdjango/db/models/query.py:15421 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15551 ms1.8%
QuerySet._chaindjango/db/models/query.py:19731 ms1.8%
store_profileapps/projects/testing.py:374 finalize_profile(profile.id)6 ms7.3%
finalize_profileapps/projects/profiles.py:5173 ms3.7%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.8%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.bulk_createdjango/db/models/query.py:8331 ms1.8%
QuerySet._batched_insertdjango/db/models/query.py:19561 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
finalize_profileapps/projects/profiles.py:500 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)1 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7671 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:861 ms1.8%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:751 ms1.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3171 ms1.8%
store_profileapps/projects/testing.py:3711 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.createdjango/db/models/query.py:6691 ms1.8%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)1 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11671 ms1.8%
Model._do_insertdjango/db/models/base.py:12181 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19241 ms1.8%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18691 ms1.8%
SQLInsertCompiler.assemble_as_sqldjango/db/backends/postgresql/compiler.py:641 ms1.8%
SQLInsertCompiler.assemble_as_sqldjango/db/models/sql/compiler.py:17701 ms1.8%
store_profileapps/projects/testing.py:372 part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))1 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.createdjango/db/models/query.py:6691 ms1.8%
Model.savedjango/db/models/base.py:8741 ms1.8%
Model.save_basedjango/db/models/base.py:9661 ms1.8%
Model._save_tabledjango/db/models/base.py:11671 ms1.8%
Model._do_insertdjango/db/models/base.py:12181 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet._insertdjango/db/models/query.py:19181 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19231 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12786 ms7.3%
_SharedTaskProxy.__call__potatoq/app.py:7636 ms7.3%
Task.__call__potatoq/task.py:1896 ms7.3%
prune_old_dataapps/api/tasks.py:307 .update(document=b"", document_size=0)1 ms1.8%
QuerySet.updatedjango/db/models/query.py:13001 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLUpdateCompiler.as_sqldjango/db/models/sql/compiler.py:20311 ms1.8%
SQLUpdateCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:21941 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:871 ms1.8%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:5281 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.8%
prune_old_dataapps/api/tasks.py:3091 ms1.8%
prune_old_dataapps/api/tasks.py:318 while ids := list(rows.values_list("id", flat=True)[:batch_size]):1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
FlatValuesListIterable.__iter__django/db/models/query.py:2771 ms1.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15731 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
prune_old_dataapps/api/tasks.py:3191 ms1.8%
QuerySet.deletedjango/db/models/query.py:12381 ms1.8%
Collector.deletedjango/db/models/deletion.py:4711 ms1.8%
QuerySet._raw_deletedjango/db/models/query.py:12601 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12654 ms5.5%
_SharedTaskProxy.__call__potatoq/app.py:7634 ms5.5%
Task.__call__potatoq/task.py:1894 ms5.5%
prune_old_dataapps/api/tasks.py:3001 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.annotatedjango/db/models/query.py:16991 ms1.8%
QuerySet._annotatedjango/db/models/query.py:17511 ms1.8%
prune_old_dataapps/api/tasks.py:306 .exclude(profile_id__in=list(keep))1 ms1.8%
QuerySet.__iter__django/db/models/query.py:3901 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
FlatValuesListIterable.__iter__django/db/models/query.py:2771 ms1.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15731 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
prune_old_dataapps/api/tasks.py:318 while ids := list(rows.values_list("id", flat=True)[:batch_size]):1 ms1.8%
QuerySet.values_listdjango/db/models/query.py:14581 ms1.8%
QuerySet._valuesdjango/db/models/query.py:14001 ms1.8%
QuerySet._chaindjango/db/models/query.py:19731 ms1.8%
QuerySet._clonedjango/db/models/query.py:19861 ms1.8%
Query.chaindjango/db/models/sql/query.py:4331 ms1.8%
Query.clonedjango/db/models/sql/query.py:3971 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:1277 TestDailyStats.objects.filter(test=self.test, environment=self.first.environment).update(day=two_years_ago)3 ms3.7%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2571 ms1.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2221 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7671 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:861 ms1.8%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:751 ms1.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2551 ms1.8%
QuerySet.updatedjango/db/models/query.py:13001 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()3 ms3.7%
TestCase._fixture_teardowndjango/test/testcases.py:14951 ms1.8%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4831 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
TestCase._fixture_teardowndjango/test/testcases.py:14971 ms1.8%
TestCase._rollback_atomicsdjango/test/testcases.py:14051 ms1.8%
Atomic.__exit__django/db/transaction.py:2861 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.8%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4311 ms1.8%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3751 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12621 ms1.8%
QuerySet.updatedjango/db/models/query.py:13001 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12691 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:1071 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12711 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.8%
QuerySet.getdjango/db/models/query.py:6351 ms1.8%
QuerySet.__len__django/db/models/query.py:3721 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.8%
ModelIterable.__iter__django/db/models/query.py:951 ms1.8%
StorageTest.test_prune_old_dataapps/projects/tests.py:12731 ms1.8%
QuerySet.existsdjango/db/models/query.py:13371 ms1.8%
Query.has_resultsdjango/db/models/sql/query.py:6811 ms1.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15921 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.8%
Cursor.executepsycopg/cursor.py:1131 ms1.8%
Connection.waitpsycopg/connection.py:4951 ms1.8%
Estimated from 54 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save
· Database
|
9 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
|
3 ms |
|
apps/projects/testing.py:372
part = ProfilePart.objects.create(profile=profile, index=0, document=compress(data), document_size=len(data))
store_profile
· Database
|
3 ms |
|
apps/projects/profiles.py:397
project = profile.project
claim_part
· Database
|
3 ms |
|
apps/projects/environments.py:63
obj, created = Environment.objects.get_or_create(
get_or_create_environment
· Database
|
3 ms |
|
apps/projects/profiles.py:404
commit, _ = Commit.objects.get_or_create(
claim_part
· Database
|
3 ms |
|
apps/projects/models.py:240
existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))
TestManager.slugs_for
· Database
|
3 ms |
|
apps/projects/models.py:236
return {test.name: test for test in self.filter(project=project, name__in=names)}
TestManager.upsert
· Database
|
3 ms |
|
apps/projects/rollups.py:64
for row in TestDailyStats.objects.filter(
add_perfs
· Database
|
3 ms |
|
apps/projects/rollups.py:88
TestDailyStats.objects.bulk_create(
add_perfs
· Database
|
3 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.04 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
107 queries · 35 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
8×
SELECT "projects_profilepart"."id", "projects_profilepart"."profile_id", "projects_profilepart"."index", "projects_profilepart"."count", "projects_profilepart"."checksum", "projects_profilepart"."status", "projects_profilepart"."error", "projects_profilepart"."tests_count", "projects_profilepart"."…
6×
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…
5×
SELECT "projects_environment"."id", "projects_environment"."project_id", "projects_environment"."name", "projects_environment"."kind", "projects_environment"."provider", "projects_environment"."details", "projects_environment"."date_first_seen", "projects_environment"."date_last_seen" FROM "project…
3×
SELECT "projects_testperf"."id" AS "id" FROM "projects_testperf" WHERE "projects_testperf"."date" < %s LIMIT ?
3×
SELECT "projects_testdailystats"."id" AS "id" FROM "projects_testdailystats" WHERE "projects_testdailystats"."day" < %s LIMIT ?
Biggest pieces of work
|
call test body
apps/projects/tests.py:1251
|
73 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
3 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 | 78 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 57 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 84 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 67 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 85 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 59 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 93 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 85 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 84 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 94 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 53 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 93 ms | Profile |