flakytest.dev anze3db flakytest
Tests / apps/api/tests.py

ProfileUploadTest::test_upload_json

First seen 7 hours ago in 78a4357
CI github-actions:test 5 runs
Average
110 ms
median 97 ms
max 158 ms
Phases
Setup 0.72 ms Call 109 ms Teardown 0.19 ms
Categories
Database 53 ms App code 3 ms Test code 0.40 ms Other (Libraries, Serialization, pytest, Unsampled) 53 ms

71 database queries per run

Needs 262 KB of memory (max 604 KB)

Duration per run

Where the time goes

Latest run in ci:github-actions:test, 12 minutes ago · open run
Show pytest frames
setup0.92 ms0.9%
call103 ms98.9%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:515 response = self.upload(document)84 ms81.0%
ProfileUploadTest.uploadapps/api/tests.py:49545 ms43.8%
_SharedTaskProxy.__call__potatoq/app.py:76345 ms43.8%
Task.__call__potatoq/task.py:18945 ms43.8%
process_profileapps/api/tasks.py:23924 ms22.7%
process_profile_partapps/projects/profiles.py:342 profile = claim_part(part, document)10 ms9.7%
claim_partapps/projects/profiles.py:4463 ms3.2%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)3 ms3.2%
Model.savedjango/db/models/base.py:8743 ms3.2%
Model.save_basedjango/db/models/base.py:9663 ms3.2%
Model._save_tabledjango/db/models/base.py:10862 ms1.6%
Model._save_tabledjango/db/models/base.py:11102 ms1.6%
Model._do_updatedjango/db/models/base.py:12112 ms1.6%
QuerySet._updatedjango/db/models/query.py:13272 ms1.6%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms1.6%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
claim_partapps/projects/profiles.py:358 profile = Profile.objects.select_for_update(no_key=True).get(pk=part.profile_id)2 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
claim_partapps/projects/profiles.py:359 ProfilePart.objects.filter(pk=part.pk).update(status=ProfilePart.StatusTypes.PENDING)2 ms1.6%
QuerySet.updatedjango/db/models/query.py:13002 ms1.6%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
claim_partapps/projects/profiles.py:376 project = profile.project2 ms1.6%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms1.6%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms1.6%
QuerySet.getdjango/db/models/query.py:6252 ms1.6%
QuerySet.filterdjango/db/models/query.py:15422 ms1.6%
QuerySet._filter_or_excludedjango/db/models/query.py:15552 ms1.6%
claim_partapps/projects/profiles.py:383 commit, _ = Commit.objects.get_or_create(2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms1.6%
QuerySet.createdjango/db/models/query.py:6672 ms1.6%
Model.__init__django/db/models/base.py:5362 ms1.6%
process_profile_partapps/projects/profiles.py:3447 ms6.5%
upsert_testsapps/projects/profiles.py:4517 ms6.5%
TestManager.upsertapps/projects/models.py:2293 ms3.2%
TestManager.slugs_forapps/projects/models.py:240 existing = dict(self.filter(project_id=project_id, name__in=names).values_list("name", "slug"))2 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ValuesListIterable.__iter__django/db/models/query.py:2382 ms1.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.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 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms1.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
TestManager.upsertapps/projects/models.py:230 self.bulk_create( # sorted, so uploads sharing tests lock their rows in the same order2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms1.6%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms1.6%
QuerySet._insertdjango/db/models/query.py:19182 ms1.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
TestManager.upsertapps/projects/models.py:236 return {test.name: test for test in self.filter(project=project, name__in=names)}2 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
process_profile_partapps/projects/profiles.py:345 write_perfs(profile, part, entries, tests)3 ms3.2%
write_perfsapps/projects/profiles.py:457 TestPerf.objects.filter(profile=profile, part=part.index).delete()2 ms1.6%
QuerySet.deletedjango/db/models/query.py:12382 ms1.6%
Collector.deletedjango/db/models/deletion.py:4712 ms1.6%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
write_perfsapps/projects/profiles.py:458 TestPerf.objects.bulk_create(2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms1.6%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms1.6%
QuerySet._insertdjango/db/models/query.py:19182 ms1.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19242 ms1.6%
SQLInsertCompiler.as_sqldjango/db/models/sql/compiler.py:18692 ms1.6%
SQLInsertCompiler.assemble_as_sqldjango/db/backends/postgresql/compiler.py:652 ms1.6%
Field.db_typedjango/db/models/fields/__init__.py:8772 ms1.6%
Field.db_type_parametersdjango/db/models/fields/__init__.py:8412 ms1.6%
DictWrapper.__init__django/utils/datastructures.py:2702 ms1.6%
process_profile_partapps/projects/profiles.py:335 part = ProfilePart.objects.filter(pk=part.pk).first()2 ms1.6%
QuerySet.firstdjango/db/models/query.py:11452 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
process_profile_partapps/projects/profiles.py:338 or ProfilePart.objects.filter(profile_id=part.profile_id, index=part.index, id__gt=part.id).exists()2 ms1.6%
QuerySet.existsdjango/db/models/query.py:13372 ms1.6%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.6%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
process_profileapps/api/tasks.py:25319 ms17.8%
_SharedTaskProxy.__call__potatoq/app.py:76319 ms17.8%
Task.__call__potatoq/task.py:18919 ms17.8%
finalize_profile_partsapps/api/tasks.py:259 if finalize_profile(profile_id):17 ms16.2%
finalize_profileapps/projects/profiles.py:4965 ms4.9%
add_perfsapps/projects/rollups.py:88 TestDailyStats.objects.bulk_create(3 ms3.2%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.bulk_createdjango/db/models/query.py:8332 ms1.6%
QuerySet._batched_insertdjango/db/models/query.py:19562 ms1.6%
QuerySet._insertdjango/db/models/query.py:19182 ms1.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
add_perfsapps/projects/rollups.py:64 for row in TestDailyStats.objects.filter(2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.filterdjango/db/models/query.py:15422 ms1.6%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.6%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms1.6%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.6%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.6%
Query.build_filterdjango/db/models/sql/query.py:16132 ms1.6%
Query.build_lookupdjango/db/models/sql/query.py:14402 ms1.6%
Atomic.__enter__django/db/transaction.py:2112 ms1.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.6%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms1.6%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
finalize_profileapps/projects/profiles.py:479 profile = Profile.objects.select_for_update(no_key=True).get(pk=profile_id)2 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
finalize_profileapps/projects/profiles.py:483 for part in ProfilePart.objects.filter(profile=profile).defer("document").order_by("index", "id"):2 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
finalize_profileapps/projects/profiles.py:488 ProfilePart.objects.filter(profile=profile).exclude(pk__in=[part.pk for part in current]).delete()2 ms1.6%
QuerySet.deletedjango/db/models/query.py:12382 ms1.6%
Collector.deletedjango/db/models/deletion.py:4712 ms1.6%
QuerySet._raw_deletedjango/db/models/query.py:12602 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
finalize_profileapps/projects/profiles.py:492 for duplicate in duplicates:2 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ValuesIterable.__iter__django/db/models/query.py:2222 ms1.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
finalize_profileapps/projects/profiles.py:495 Environment.objects.select_for_update(no_key=True).filter(pk=profile.environment_id).first()2 ms1.6%
QuerySet.firstdjango/db/models/query.py:11452 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:1282 ms1.6%
finalize_profileapps/projects/profiles.py:5042 ms1.6%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms1.6%
Model.savedjango/db/models/base.py:8742 ms1.6%
Model.save_basedjango/db/models/base.py:9662 ms1.6%
Model._save_tabledjango/db/models/base.py:11102 ms1.6%
Model._do_updatedjango/db/models/base.py:12112 ms1.6%
QuerySet._updatedjango/db/models/query.py:13272 ms1.6%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms1.6%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
finalize_profile_partsapps/api/tasks.py:2602 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms1.6%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
process_profileapps/api/tasks.py:237 part = ProfilePart.objects.select_related("profile").get(id=part_id)3 ms3.2%
QuerySet.getdjango/db/models/query.py:6353 ms3.2%
QuerySet.__len__django/db/models/query.py:3723 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms3.2%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms1.6%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms1.6%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms1.6%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3302 ms1.6%
BaseExpression.select_formatdjango/db/models/expressions.py:4992 ms1.6%
ModelIterable.__iter__django/db/models/query.py:1092 ms1.6%
ProfileUploadTest.uploadapps/api/tests.py:487 response = self.client.post(39 ms37.3%
Client.postdjango/test/client.py:115339 ms37.3%
RequestFactory.postdjango/test/client.py:49939 ms37.3%
RequestFactory.genericdjango/test/client.py:67139 ms37.3%
Client.requestdjango/test/client.py:108239 ms37.3%
ClientHandler.__call__django/test/client.py:17324 ms22.7%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6224 ms22.7%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10424 ms22.7%
WhiteNoise.add_fileswhitenoise/base.py:10824 ms22.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12019 ms17.8%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13119 ms17.8%
WhiteNoise.get_static_filewhitenoise/base.py:20817 ms16.2%
StaticFile.__init__whitenoise/responders.py:7210 ms9.7%
StaticFile.get_file_statswhitenoise/responders.py:1638 ms8.1%
<GC>~8 ms8.1%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms1.6%
__init____init__:-12 ms1.6%
FileEntry.__init__whitenoise/responders.py:2632 ms1.6%
FileEntry.stat_regular_filewhitenoise/responders.py:2762 ms1.6%
<GC>~2 ms1.6%
StaticFile.__init__whitenoise/responders.py:773 ms3.2%
StaticFile.get_alternativeswhitenoise/responders.py:2003 ms3.2%
StaticFile.__init__whitenoise/responders.py:742 ms1.6%
parsedate<stdlib>/email/_parseaddr.py:1852 ms1.6%
StaticFile.__init__whitenoise/responders.py:732 ms1.6%
StaticFile.get_headerswhitenoise/responders.py:1762 ms1.6%
formatdate<stdlib>/email/utils.py:2662 ms1.6%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms1.6%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms1.6%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms1.6%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms1.6%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms1.6%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms1.6%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1862 ms1.6%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1155 ms4.9%
scantreewhitenoise/base.py:2623 ms3.2%
scantreewhitenoise/base.py:2623 ms3.2%
scantreewhitenoise/base.py:2622 ms1.6%
scantreewhitenoise/base.py:2622 ms1.6%
scantreewhitenoise/base.py:2602 ms1.6%
scantreewhitenoise/base.py:2642 ms1.6%
ClientHandler.__call__django/test/client.py:18615 ms14.6%
BaseHandler.get_responsedjango/core/handlers/base.py:14115 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13015 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12315 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
MiddlewareMixin.__call__django/utils/deprecation.py:30915 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3415 ms14.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5515 ms14.6%
BaseHandler._get_responsedjango/core/handlers/base.py:19815 ms14.6%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6515 ms14.6%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3715 ms14.6%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6415 ms14.6%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:7512 ms11.3%
profile_uploadapps/api/urls.py:1505 ms4.9%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()2 ms1.6%
QuerySet.firstdjango/db/models/query.py:11452 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms1.6%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms1.6%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms1.6%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms1.6%
get_or_create_numberedapps/projects/models.py:21 number = next_number(model, project.pk)2 ms1.6%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms1.6%
QuerySet.aggregatedjango/db/models/query.py:5942 ms1.6%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.createdjango/db/models/query.py:6692 ms1.6%
Profile.saveapps/projects/models.py:466 super().save(*args, **kwargs)2 ms1.6%
Model.savedjango/db/models/base.py:8742 ms1.6%
Model.save_basedjango/db/models/base.py:9662 ms1.6%
Model._save_tabledjango/db/models/base.py:11672 ms1.6%
Model._do_insertdjango/db/models/base.py:12182 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet._insertdjango/db/models/query.py:19182 ms1.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms1.6%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms1.6%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms1.6%
profile_uploadapps/api/urls.py:151 checksum = hashlib.sha256(data).hexdigest()2 ms1.6%
profile_uploadapps/api/urls.py:152 part = ProfilePart.objects.filter(profile=profile, index=index).order_by("-id").first()2 ms1.6%
QuerySet.firstdjango/db/models/query.py:11452 ms1.6%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:1272 ms1.6%
profile_uploadapps/api/urls.py:154 part = ProfilePart.objects.create(2 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.createdjango/db/models/query.py:6692 ms1.6%
Model.savedjango/db/models/base.py:8742 ms1.6%
Model.save_basedjango/db/models/base.py:9662 ms1.6%
Model._save_tabledjango/db/models/base.py:11672 ms1.6%
Model._do_insertdjango/db/models/base.py:12182 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet._insertdjango/db/models/query.py:19182 ms1.6%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
profile_uploadapps/api/urls.py:1632 ms1.6%
Project.urlapps/projects/models.py:59 return reverse(name, args=[self.organization.slug, self.slug, *args])2 ms1.6%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms1.6%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.6%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms1.6%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))2 ms1.6%
get_object_or_404django/shortcuts.py:902 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms1.6%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms1.6%
QuerySet.updatedjango/db/models/query.py:13002 ms1.6%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:549 perfs = {perf.test.name: perf for perf in TestPerf.objects.filter(profile=profile)}5 ms4.9%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2573 ms3.2%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2223 ms3.2%
QuerySet.getdjango/db/models/query.py:6353 ms3.2%
QuerySet.__len__django/db/models/query.py:3723 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms3.2%
ModelIterable.__iter__django/db/models/query.py:953 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms3.2%
CursorWrapper.executedjango/db/backends/utils.py:793 ms3.2%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms3.2%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms3.2%
Cursor.executepsycopg/cursor.py:1133 ms3.2%
Connection.waitpsycopg/connection.py:4953 ms3.2%
QuerySet.__iter__django/db/models/query.py:3902 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:532 self.assertEqual(profile.environment.name, "ci:github-actions:test")3 ms3.2%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2573 ms3.2%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2223 ms3.2%
QuerySet.getdjango/db/models/query.py:6353 ms3.2%
QuerySet.__len__django/db/models/query.py:3723 ms3.2%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms3.2%
ModelIterable.__iter__django/db/models/query.py:953 ms3.2%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms1.6%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms1.6%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms1.6%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms1.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.6%
Col.as_sqldjango/db/models/expressions.py:13262 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.6%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms1.6%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms1.6%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()3 ms3.2%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms1.6%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms1.6%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms1.6%
Atomic.__exit__django/db/transaction.py:2832 ms1.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.6%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4132 ms1.6%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3712 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:5172 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.6%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.6%
Cursor.executepsycopg/cursor.py:1132 ms1.6%
Connection.waitpsycopg/connection.py:4952 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:5252 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms1.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.6%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms1.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.6%
RelatedLookupMixin.as_sqldjango/db/models/fields/related_lookups.py:1282 ms1.6%
Exact.as_sqldjango/db/models/lookups.py:4072 ms1.6%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2412 ms1.6%
BuiltinLookup.get_rhs_opdjango/db/models/lookups.py:2452 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:5312 ms1.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.6%
QuerySet.getdjango/db/models/query.py:6352 ms1.6%
QuerySet.__len__django/db/models/query.py:3722 ms1.6%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.6%
ModelIterable.__iter__django/db/models/query.py:952 ms1.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms1.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.6%
ProfileUploadTest.test_upload_jsonapps/api/tests.py:5752 ms1.6%
QuerySet.countdjango/db/models/query.py:6102 ms1.6%
Query.get_countdjango/db/models/sql/query.py:6512 ms1.6%
Query.get_aggregationdjango/db/models/sql/query.py:4862 ms1.6%
Expression.__hash__django/db/models/expressions.py:5622 ms1.6%
cached_property.__get__django/utils/functional.py:472 ms1.6%
Expression.identitydjango/db/models/expressions.py:5522 ms1.6%
Expression._identitydjango/db/models/expressions.py:5382 ms1.6%
teardown0.24 ms0.2%
Estimated from 63 samples; phase durations are exact. Frames from pytest and pluggy are hidden .

Hot lines in your code

apps/api/tests.py:487
response = self.client.post(
ProfileUploadTest.upload · Libraries
24 ms
apps/projects/models.py:466
super().save(*args, **kwargs)
Profile.save · Database
7 ms
apps/api/tests.py:549
perfs = {perf.test.name: perf for perf in TestPerf.objects.filter(profile=profile)}
ProfileUploadTest.test_upload_json · Database
5 ms
apps/api/tasks.py:237
part = ProfilePart.objects.select_related("profile").get(id=part_id)
process_profile · Database
3 ms
apps/projects/rollups.py:88
TestDailyStats.objects.bulk_create(
add_perfs · App code
3 ms
apps/api/tests.py:532
self.assertEqual(profile.environment.name, "ci:github-actions:test")
ProfileUploadTest.test_upload_json · Database
3 ms
apps/api/urls.py:72
project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))
api_request.<locals>.decorator.<locals>.wrapped_view · Database
2 ms
apps/api/urls.py:59
SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)
touch_token · 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
_django_set_urlconf function 0.07 ms
_dj_autoclear_mailbox function 0.06 ms
_template_string_if_invalid_marker function 0.06 ms
_django_db_marker function 0.05 ms
_live_server_helper function 0.05 ms
_django_clear_site_cache function 0.04 ms
monkeypatch function 0.02 ms

Database

71 queries · 29 ms

Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).

6×
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"."…
4×
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 "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_test"."id", "projects_test"."name", "projects_test"."project_id", "projects_test"."slug", "projects_test"."date_last_run", "projects_test"."date_first_seen", "projects_test"."first_commit_id", "projects_test"."muted" FROM "projects_test" WHERE "projects_test"."id" = %s LIMIT ?

Biggest pieces of work

call test body
apps/api/tests.py:515
99 ms
call _post_teardown
django/test/testcases.py:1240
3 ms
setup pytest internals 0.92 ms
teardown pytest internals 0.24 ms

Reliability

5 results · 0 CI failures · 0 local failures

This test hasn't failed recently.

History

Latest 5 results, oldest first in the strip
When Environment Outcome Duration Commit
12 minutes ago CI github-actions:test passed 104 ms 9caa567 main Profile
37 minutes ago CI github-actions:test passed 92 ms ec75501 main Profile
7 hours ago CI github-actions:test passed 97 ms d2c12e5 main Profile
7 hours ago CI github-actions:test passed 158 ms 0b902f6 main Profile
7 hours ago CI github-actions:test passed 97 ms 78a4357 main Profile