Tests / confs/tests.py
TestCreateConference::test_slug_collision_is_resolved
First seen 3 weeks ago in 0c23747
CI
github-actions:test
11 runs
Average
708 ms
median 593 ms
max 1.34 s
max 1.34 s
Phases
Setup 7 ms
Call 701 ms
Teardown 0.32 ms
Categories
Password hashing 564 ms
Database 50 ms
Factories 0.76 ms
Test code 0.21 ms
Other (Libraries, pytest, Deep copies, Unsampled, ...) 93 ms
29 database queries per run
Needs 31 KB of memory (max 132 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 7 hours ago ·
open run
setup1 ms0.2%
call602 ms99.8%
TestCreateConference.setUpconfs/tests.py:1044 self.user = User.objects.create_user("alice", password="pw")487 ms80.7%
UserManager.create_userdjango/contrib/auth/models.py:180487 ms80.7%
UserManager._create_userdjango/contrib/auth/models.py:167486 ms80.5%
UserManager._create_user_objectdjango/contrib/auth/models.py:160486 ms80.5%
make_passworddjango/contrib/auth/hashers.py:118486 ms80.5%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:333486 ms80.5%
pbkdf2django/utils/crypto.py:93486 ms80.5%
1 smaller frames hidden
TestCreateConference.test_slug_collision_is_resolvedconfs/tests.py:1111 self.client.post(reverse("create_conference"), self.form_data)102 ms17.0%
Client.postdjango/test/client.py:1162102 ms17.0%
RequestFactory.postdjango/test/client.py:499102 ms17.0%
RequestFactory.genericdjango/test/client.py:671102 ms17.0%
Client.requestdjango/test/client.py:1091102 ms17.0%
ClientHandler.__call__django/test/client.py:17352 ms8.7%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6352 ms8.7%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10452 ms8.7%
WhiteNoise.add_fileswhitenoise/base.py:10852 ms8.7%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12046 ms7.6%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13146 ms7.6%
WhiteNoise.get_static_filewhitenoise/base.py:21742 ms6.9%
StaticFile.__init__whitenoise/responders.py:7634 ms5.7%
StaticFile.get_not_modified_responsewhitenoise/responders.py:19033 ms5.5%
1 smaller frames hidden
StaticFile.__init__whitenoise/responders.py:735 ms0.9%
StaticFile.get_headerswhitenoise/responders.py:1784 ms0.7%
parsedate<stdlib>/email/_parseaddr.py:1854 ms0.7%
parsedate_tz<stdlib>/email/_parseaddr.py:504 ms0.7%
_parsedate_tz<stdlib>/email/_parseaddr.py:1173 ms0.5%
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
2 smaller frames hidden
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms1.0%
scantreewhitenoise/base.py:2715 ms0.9%
scantreewhitenoise/base.py:2713 ms0.5%
scantreewhitenoise/base.py:2733 ms0.5%
1 smaller frames hidden
ClientHandler.__call__django/test/client.py:18650 ms8.3%
BaseHandler.get_responsedjango/core/handlers/base.py:14250 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12350 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:14550 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38050 ms8.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5650 ms8.3%
BaseHandler._get_responsedjango/core/handlers/base.py:19950 ms8.3%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:6250 ms8.3%
create_conferenceconfs/views.py:48744 ms7.3%
unique_conference_slugconfs/views.py:475 while Conference.objects.filter(slug=slug).exists():44 ms7.3%
QuerySet.existsdjango/db/models/query.py:145842 ms6.9%
Query.has_resultsdjango/db/models/sql/query.py:68542 ms6.9%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:159341 ms6.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:161240 ms6.6%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:79640 ms6.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:57940 ms6.6%
WhereNode.as_sqldjango/db/models/sql/where.py:15140 ms6.6%
SQLCompiler.compiledjango/db/models/sql/compiler.py:57940 ms6.6%
Exact.as_sqldjango/db/models/lookups.py:40740 ms6.6%
BuiltinLookup.as_sqldjango/db/models/lookups.py:24340 ms6.6%
BuiltinLookup.process_lhsdjango/db/models/lookups.py:23540 ms6.6%
Lookup.process_lhsdjango/db/models/lookups.py:10940 ms6.6%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:30740 ms6.6%
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
create_conferenceconfs/views.py:485 if form.is_valid():4 ms0.7%
BaseForm.is_validdjango/forms/forms.py:2064 ms0.7%
BaseForm.errorsdjango/forms/forms.py:2014 ms0.7%
2 smaller frames hidden
TestCreateConference.test_slug_collision_is_resolvedconfs/tests.py:1106 self.client.force_login(self.user)6 ms1.0%
ClientMixin.force_logindjango/test/client.py:8586 ms1.0%
TestCreateConference.test_slug_collision_is_resolvedconfs/tests.py:1105 baker.make(Conference, slug="pycon-test")3 ms0.5%
makemodel_bakery/baker.py:1753 ms0.5%
Baker.makemodel_bakery/baker.py:4543 ms0.5%
3 smaller frames hidden
Estimated from 577 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
confs/tests.py:1044
self.user = User.objects.create_user("alice", password="pw")
TestCreateConference.setUp
· Password hashing
|
487 ms |
|
confs/tests.py:1111
self.client.post(reverse("create_conference"), self.form_data)
TestCreateConference.test_slug_collision_is_resolved
· Libraries
|
52 ms |
|
confs/views.py:475
while Conference.objects.filter(slug=slug).exists():
unique_conference_slug
· Database
|
44 ms |
|
confs/tests.py:1106
self.client.force_login(self.user)
TestCreateConference.test_slug_collision_is_resolved
· Database
|
6 ms |
|
confs/tests.py:1105
baker.make(Conference, slug="pycon-test")
TestCreateConference.test_slug_collision_is_resolved
· Database
|
3 ms |
|
confs/views.py:485
if form.is_valid():
create_conference
· Libraries
|
3 ms |
|
confs/views.py:428
if tags and len(tags) > MAX_CONFERENCE_TAGS:
ConferenceForm.clean_conference_tags
· Database
|
1 ms |
|
confs/views.py:497
conference.save()
create_conference
· Database
|
1 ms |
|
confs/views.py:498
form.save_m2m() # persist the selected conference_tags (icons)
create_conference
· Database
|
1 ms |
|
confs/tests.py:1109
self.captureOnCommitCallbacks(execute=True),
TestCreateConference.test_slug_collision_is_resolved
· Libraries
|
1 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.33 ms |
| _template_string_if_invalid_marker function | 0.05 ms |
| _django_db_marker function | 0.04 ms |
| _django_isolate_apps function | 0.04 ms |
| _django_set_urlconf function | 0.04 ms |
| _live_server_helper function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
29 queries · 12 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
3×
SELECT %s AS "a" FROM "confs_conference" WHERE "confs_conference"."slug" = %s LIMIT ?
Biggest pieces of work
|
call setUp
confs/tests.py:1044
|
487 ms |
|
call test body
confs/tests.py:1111
|
114 ms |
| setup pytest internals | 1 ms |
|
call _post_teardown
django/test/testcases.py:1243
|
1 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 | |
|---|---|---|---|---|
| 7 hours ago | CI github-actions:test | passed | 603 ms | Profile |
| 16 hours ago | CI github-actions:test | passed | 331 ms | Profile |
| 22 hours ago | CI github-actions:test | passed | 585 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 694 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 490 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 564 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 593 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 457 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 1.34 s | Profile |
| 3 weeks ago | CI github-actions:test | passed | 1.04 s | Profile |
| 3 weeks ago | CI github-actions:test | passed | 1.09 s | Profile |
| 3 weeks ago | CI github-actions:test | passed | 811 ms | Run |