Tests / confs/tests.py
TestSyncAnnouncements::test_variation_is_stable_across_resyncs
First seen 14 hours ago in 0c23747
CI
github-actions:test
4 runs
Average
46 ms
median 43 ms
max 70 ms
max 70 ms
Phases
Setup 3 ms
Call 40 ms
Teardown 3 ms
Categories
Database 28 ms
Factories 0.78 ms
Other (Libraries, pytest, Mocking, Unsampled) 16 ms
17 database queries per run
Needs 39 KB of memory (max 40 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 8 hours ago ·
open run
call23 ms85.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:9797 ms27.0%
TestSyncAnnouncements._syncconfs/tests.py:937 call_command("syncannouncements")6 ms22.5%
call_commanddjango/core/management/__init__.py:1955 ms18.0%
RichCommand.executedjango_rich/management/__init__.py:345 ms18.0%
BaseCommand.executedjango/core/management/base.py:4665 ms18.0%
Command.handleconfs/management/commands/syncannouncements.py:13 sync_upcoming(Conference, Announcement, timezone.now().date())5 ms18.0%
sync_upcomingconfs/conference_announcements.py:1084 ms13.5%
sync_conferenceconfs/conference_announcements.py:94 announcement.save(update_fields=["content", "post_at"])4 ms13.5%
Model.savedjango/db/models/base.py:9044 ms13.5%
Model.save_basedjango/db/models/base.py:9964 ms13.5%
Model._save_tabledjango/db/models/base.py:11402 ms9.0%
Model._do_updatedjango/db/models/base.py:12442 ms9.0%
QuerySet._updatedjango/db/models/query.py:14482 ms9.0%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21502 ms9.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21212 ms9.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16252 ms9.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms9.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms9.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms4.5%
Model._save_tabledjango/db/models/base.py:11001 ms4.5%
sync_upcomingconfs/conference_announcements.py:107 for conference in upcoming:1 ms4.5%
QuerySet.__iter__django/db/models/query.py:4391 ms4.5%
QuerySet._fetch_alldjango/db/models/query.py:22621 ms4.5%
ModelIterable.__iter__django/db/models/query.py:1031 ms4.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:791 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
call_commanddjango/core/management/__init__.py:1731 ms4.5%
CommandParser.parse_argsdjango/core/management/base.py:741 ms4.5%
ArgumentParser.parse_args<stdlib>/argparse.py:21491 ms4.5%
ArgumentParser.parse_known_args<stdlib>/argparse.py:21591 ms4.5%
ArgumentParser._parse_known_args2<stdlib>/argparse.py:21881 ms4.5%
ArgumentParser._parse_known_args<stdlib>/argparse.py:21991 ms4.5%
<GC>~1 ms4.5%
TestSyncAnnouncements._syncconfs/tests.py:936 with mock.patch("confs.management.commands.syncannouncements.timezone.now", return_value=self.NOW):1 ms4.5%
_patch.__enter__<stdlib>/unittest/mock.py:15681 ms4.5%
MagicMixin.__init__<stdlib>/unittest/mock.py:21831 ms4.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:9754 ms13.5%
TestSyncAnnouncements._syncconfs/tests.py:937 call_command("syncannouncements")4 ms13.5%
call_commanddjango/core/management/__init__.py:1952 ms9.0%
RichCommand.executedjango_rich/management/__init__.py:342 ms9.0%
BaseCommand.executedjango/core/management/base.py:4662 ms9.0%
Command.handleconfs/management/commands/syncannouncements.py:13 sync_upcoming(Conference, Announcement, timezone.now().date())2 ms9.0%
sync_upcomingconfs/conference_announcements.py:1082 ms9.0%
sync_conferenceconfs/conference_announcements.py:85 announcement = announcement_model.objects.create(1 ms4.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms4.5%
QuerySet.createdjango/db/models/query.py:7361 ms4.5%
Model.savedjango/db/models/base.py:9041 ms4.5%
Model.save_basedjango/db/models/base.py:9961 ms4.5%
Model._save_tabledjango/db/models/base.py:11991 ms4.5%
Model._do_insertdjango/db/models/base.py:12511 ms4.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms4.5%
QuerySet._insertdjango/db/models/query.py:21411 ms4.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19361 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:791 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms4.5%
sync_conferenceconfs/conference_announcements.py:97 conference.save(update_fields=changed)1 ms4.5%
Model.savedjango/db/models/base.py:9041 ms4.5%
Model.save_basedjango/db/models/base.py:9961 ms4.5%
Model._save_tabledjango/db/models/base.py:11401 ms4.5%
Model._do_updatedjango/db/models/base.py:12441 ms4.5%
QuerySet._updatedjango/db/models/query.py:14481 ms4.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21501 ms4.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21211 ms4.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:791 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms4.5%
call_commanddjango/core/management/__init__.py:1221 ms4.5%
BaseCommand.create_parserdjango/core/management/base.py:3101 ms4.5%
CommandParser.__init__django/core/management/base.py:661 ms4.5%
ArgumentParser.__init__<stdlib>/argparse.py:20471 ms4.5%
gettext<stdlib>/gettext.py:6291 ms4.5%
dgettext<stdlib>/gettext.py:5901 ms4.5%
translation<stdlib>/gettext.py:5331 ms4.5%
find<stdlib>/gettext.py:5051 ms4.5%
_expand_lang<stdlib>/gettext.py:2341 ms4.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:976 conference.refresh_from_db()2 ms9.0%
Model.refresh_from_dbdjango/db/models/base.py:7882 ms9.0%
QuerySet.getdjango/db/models/query.py:7022 ms9.0%
QuerySet.__len__django/db/models/query.py:4212 ms9.0%
QuerySet._fetch_alldjango/db/models/query.py:22622 ms9.0%
ModelIterable.__iter__django/db/models/query.py:1032 ms9.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16252 ms9.0%
CursorWrapper.executedjango/db/backends/utils.py:792 ms9.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms9.0%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms9.0%
Cursor.executepsycopg/cursor.py:1132 ms9.0%
Connection.waitpsycopg/connection.py:4952 ms9.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms9.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms9.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms9.0%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:9742 ms9.0%
TestSyncAnnouncements._conferenceconfs/tests.py:933 return baker.make(Conference, **defaults)2 ms9.0%
makemodel_bakery/baker.py:1752 ms9.0%
Baker.makemodel_bakery/baker.py:4542 ms9.0%
Baker._makemodel_bakery/baker.py:5011 ms4.5%
Baker._makemodel_bakery/baker.py:5421 ms4.5%
Baker.instancemodel_bakery/baker.py:6591 ms4.5%
Model.savedjango/db/models/base.py:9041 ms4.5%
Model.save_basedjango/db/models/base.py:9961 ms4.5%
Model._save_tabledjango/db/models/base.py:11991 ms4.5%
Model._do_insertdjango/db/models/base.py:12511 ms4.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms4.5%
QuerySet._insertdjango/db/models/query.py:21411 ms4.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19361 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:791 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms4.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:980 conference.refresh_from_db()2 ms9.0%
Model.refresh_from_dbdjango/db/models/base.py:7882 ms9.0%
QuerySet.getdjango/db/models/query.py:7022 ms9.0%
QuerySet.__len__django/db/models/query.py:4212 ms9.0%
QuerySet._fetch_alldjango/db/models/query.py:22622 ms9.0%
ModelIterable.__iter__django/db/models/query.py:1031 ms4.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16121 ms4.5%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7681 ms4.5%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:891 ms4.5%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:781 ms4.5%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3191 ms4.5%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms4.5%
Col.as_sqldjango/db/models/expressions.py:13691 ms4.5%
ModelIterable.__iter__django/db/models/query.py:1351 ms4.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1243 self._fixture_teardown()2 ms9.0%
TestCase._fixture_teardowndjango/test/testcases.py:14971 ms4.5%
TestCase._should_check_constraintsdjango/test/testcases.py:15061 ms4.5%
DatabaseWrapper.is_usabledjango/db/backends/postgresql/base.py:5041 ms4.5%
Cursor.executepsycopg/cursor.py:1131 ms4.5%
Connection.waitpsycopg/connection.py:4951 ms4.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms4.5%
TestCase._fixture_teardowndjango/test/testcases.py:15001 ms4.5%
TestCase._rollback_atomicsdjango/test/testcases.py:14081 ms4.5%
Atomic.__exit__django/db/transaction.py:2981 ms4.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms4.5%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4311 ms4.5%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3741 ms4.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms4.5%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3201 ms4.5%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2981 ms4.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms4.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:977 first = conference.start_announcement.content1 ms4.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2661 ms4.5%
FetchOne.fetchdjango/db/models/fetch_modes.py:171 ms4.5%
ForwardManyToOneDescriptor.fetch_onedjango/db/models/fields/related_descriptors.py:2791 ms4.5%
ForwardOneToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:4091 ms4.5%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2291 ms4.5%
ForwardManyToOneDescriptor.get_querysetdjango/db/models/fields/related_descriptors.py:1721 ms4.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms4.5%
QuerySet.fetch_modedjango/db/models/query.py:20021 ms4.5%
QuerySet._chaindjango/db/models/query.py:22341 ms4.5%
QuerySet._clonedjango/db/models/query.py:22531 ms4.5%
TestSyncAnnouncements.test_variation_is_stable_across_resyncsconfs/tests.py:982 self.assertEqual(conference.start_announcement.content, first)1 ms4.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2661 ms4.5%
FetchOne.fetchdjango/db/models/fetch_modes.py:171 ms4.5%
ForwardManyToOneDescriptor.fetch_onedjango/db/models/fields/related_descriptors.py:2791 ms4.5%
ForwardOneToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:4091 ms4.5%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2311 ms4.5%
QuerySet.getdjango/db/models/query.py:6921 ms4.5%
teardown3 ms11.4%
TestCase.tearDownClassdjango/test/testcases.py:1458 conn.close()3 ms11.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:263 ms11.4%
BaseDatabaseWrapper.closedjango/db/backends/base/base.py:3553 ms11.4%
DatabaseWrapper._closedjango/db/backends/postgresql/base.py:4083 ms11.4%
Connection.closepsycopg/connection.py:2013 ms11.4%
Estimated from 22 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
confs/conference_announcements.py:94
announcement.save(update_fields=["content", "post_at"])
sync_conference
· Database
|
4 ms |
|
confs/tests.py:976
conference.refresh_from_db()
TestSyncAnnouncements.test_variation_is_stable_across_resyncs
· Database
|
2 ms |
|
confs/tests.py:933
return baker.make(Conference, **defaults)
TestSyncAnnouncements._conference
· Factories
|
2 ms |
|
confs/tests.py:937
call_command("syncannouncements")
TestSyncAnnouncements._sync
· Libraries
|
2 ms |
|
confs/tests.py:980
conference.refresh_from_db()
TestSyncAnnouncements.test_variation_is_stable_across_resyncs
· Database
|
2 ms |
|
confs/conference_announcements.py:85
announcement = announcement_model.objects.create(
sync_conference
· Database
|
1 ms |
|
confs/conference_announcements.py:97
conference.save(update_fields=changed)
sync_conference
· Database
|
1 ms |
|
confs/tests.py:977
first = conference.start_announcement.content
TestSyncAnnouncements.test_variation_is_stable_across_resyncs
· Database
|
1 ms |
|
confs/tests.py:936
with mock.patch("confs.management.commands.syncannouncements.timezone.now", return_value=self.NOW):
TestSyncAnnouncements._sync
· Mocking
|
1 ms |
|
confs/conference_announcements.py:107
for conference in upcoming:
sync_upcoming
· Database
|
1 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_isolate_apps function | 0.03 ms |
| _django_db_marker function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.02 ms |
| monkeypatch function | 0.02 ms |
Database
17 queries · 9 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
4×
SELECT "confs_conference"."id", "confs_conference"."name", "confs_conference"."slug", "confs_conference"."location", "confs_conference"."start_date", "confs_conference"."end_date", "confs_conference"."time_zone", "confs_conference"."archived_date", "confs_conference"."approved_at", "confs_conferenc…
Biggest pieces of work
|
call test body
confs/tests.py:976
|
21 ms |
|
teardown tearDownClass
django/test/testcases.py:1458
|
3 ms |
|
call _post_teardown
django/test/testcases.py:1243
|
2 ms |
Reliability
5 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 5 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 8 hours ago | CI github-actions:test | passed | 27 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 36 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 49 ms | Profile |
| 13 hours ago | CI github-actions:test | passed | 70 ms | Profile |
| 14 hours ago | CI github-actions:test | passed | 20 ms | Run |