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

IngestEnvironmentTest::test_same_environment_is_reused

First seen 8 hours ago in 78a4357
CI github-actions:test 5 runs
Average
76 ms
median 74 ms
max 104 ms
Phases
Setup 0.75 ms Call 73 ms Teardown 2 ms
Categories
Database 39 ms Test code 0.34 ms Other (Libraries, Unsampled, pytest) 36 ms

61 database queries per run

Needs 2 KB of memory (max 12 KB)

Duration per run

Where the time goes

Latest run in ci:github-actions:test, an hour ago · open run
Hide pytest frames
call72 ms98.1%
CallInfo.from_call_pytest/runner.py:35372 ms98.1%
call_and_report.<locals>.<lambda>_pytest/runner.py:24572 ms98.1%
HookCaller.__call__pluggy/_hooks.py:51272 ms98.1%
PluginManager._hookexecpluggy/_manager.py:12072 ms98.1%
_multicallpluggy/_callers.py:12172 ms98.1%
pytest_runtest_call_pytest/runner.py:17972 ms98.1%
_django_setup_unittest.<locals>.non_debugging_runtestpytest_django/plugin.py:57372 ms98.1%
SimpleTestCase.__call__django/test/testcases.py:31372 ms98.1%
SimpleTestCase._setup_and_calldjango/test/testcases.py:36870 ms95.7%
TestCase.__call__<stdlib>/unittest/case.py:74770 ms95.7%
TestCase.run<stdlib>/unittest/case.py:69170 ms95.7%
TestCase._callTestMethod<stdlib>/unittest/case.py:63770 ms95.7%
IngestEnvironmentTest.test_same_environment_is_reusedapps/api/tests.py:389 first = self.ingest_start({"environment": environment})50 ms68.7%
IngestEnvironmentTest.ingest_startapps/api/tests.py:352 response = self.client.post(49 ms66.2%
Client.postdjango/test/client.py:115349 ms66.2%
RequestFactory.postdjango/test/client.py:49949 ms66.2%
RequestFactory.genericdjango/test/client.py:67149 ms66.2%
Client.requestdjango/test/client.py:108249 ms66.2%
ClientHandler.__call__django/test/client.py:18625 ms34.3%
BaseHandler.get_responsedjango/core/handlers/base.py:14125 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13025 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12325 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3425 ms34.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms34.3%
BaseHandler._get_responsedjango/core/handlers/base.py:19825 ms34.3%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6525 ms34.3%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3725 ms34.3%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6425 ms34.3%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:7520 ms27.0%
ingest_startapps/api/urls.py:100 process_ingest_start(ingest.id)16 ms22.1%
_SharedTaskProxy.__call__potatoq/app.py:76316 ms22.1%
Task.__call__potatoq/task.py:18916 ms22.1%
ContextDecorator.__call__.<locals>.inner<stdlib>/contextlib.py:11616 ms22.1%
process_ingest_startapps/api/tasks.py:89 Session.objects.get_or_create(5 ms7.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:875 ms7.4%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.5%
QuerySet.getdjango/db/models/query.py:6252 ms2.5%
QuerySet.filterdjango/db/models/query.py:15422 ms2.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.5%
Query.build_filterdjango/db/models/sql/query.py:15772 ms2.5%
Query.setup_joinsdjango/db/models/sql/query.py:19172 ms2.5%
QuerySet.get_or_createdjango/db/models/query.py:9922 ms2.5%
Atomic.__enter__django/db/transaction.py:2112 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3662 ms2.5%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:774 ms4.9%
get_or_create_numberedapps/projects/models.py:21 number = next_number(model, project.pk)2 ms2.5%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms2.5%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.5%
Query.get_aggregationdjango/db/models/sql/query.py:4862 ms2.5%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Run.saveapps/projects/models.py:188 super().save(*args, **kwargs)2 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:10672 ms2.5%
Model._is_pk_setdjango/db/models/base.py:6892 ms2.5%
process_ingest_startapps/api/tasks.py:54 data = ingest.data2 ms2.5%
DeferredAttribute.__get__django/db/models/query_utils.py:2712 ms2.5%
Model.refresh_from_dbdjango/db/models/base.py:7582 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:79 ingest.project,2 ms2.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.5%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2202 ms2.5%
ForwardManyToOneDescriptor.get_querysetdjango/db/models/fields/related_descriptors.py:1702 ms2.5%
BaseManager.db_managerdjango/db/models/manager.py:1372 ms2.5%
copy<stdlib>/copy.py:1002 ms2.5%
process_ingest_startapps/api/tasks.py:842 ms2.5%
get_or_create_environmentapps/projects/environments.py:63 obj, created = Environment.objects.get_or_create(2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.5%
QuerySet.getdjango/db/models/query.py:6252 ms2.5%
QuerySet.filterdjango/db/models/query.py:15422 ms2.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.5%
Query.build_filterdjango/db/models/sql/query.py:15602 ms2.5%
Query.resolve_lookup_valuedjango/db/models/sql/query.py:13242 ms2.5%
process_ingest_startapps/api/tasks.py:105 ingest.save(update_fields=["date_processed"])2 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11102 ms2.5%
Model._do_updatedjango/db/models/base.py:12112 ms2.5%
QuerySet._updatedjango/db/models/query.py:13272 ms2.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
ingest_startapps/api/urls.py:90 ingest = Ingest.objects.create(project=project, source="ingest_start", data=json.loads(request.body))2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.5%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.5%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms2.5%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms2.5%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms2.5%
ingest_startapps/api/urls.py:95 "muted_tests": [{"name": test.name} for test in muted_tests],2 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16222 ms2.5%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))4 ms4.9%
ContextDecorator.__call__.<locals>.inner<stdlib>/contextlib.py:1164 ms4.9%
touch_tokenapps/api/urls.py:56 .filter(Q(date_last_used__lt=now - TOKEN_TOUCH_INTERVAL) | Q(date_last_used=None), token=token)2 ms2.5%
QuerySet.filterdjango/db/models/query.py:15422 ms2.5%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms2.5%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms2.5%
Query.add_qdjango/db/models/sql/query.py:16712 ms2.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.5%
Query.build_filterdjango/db/models/sql/query.py:15282 ms2.5%
Query._add_qdjango/db/models/sql/query.py:17032 ms2.5%
Query.build_filterdjango/db/models/sql/query.py:16132 ms2.5%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms2.5%
QuerySet.updatedjango/db/models/query.py:13002 ms2.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.5%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.5%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))2 ms2.5%
get_object_or_404django/shortcuts.py:902 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
ClientHandler.__call__django/test/client.py:17323 ms31.9%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6223 ms31.9%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10422 ms29.4%
WhiteNoise.add_fileswhitenoise/base.py:10822 ms29.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12018 ms24.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13118 ms24.5%
WhiteNoise.get_static_filewhitenoise/base.py:20311 ms14.7%
WhiteNoise.add_cache_headerswhitenoise/base.py:22411 ms14.7%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:17611 ms14.7%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:19711 ms14.7%
URLMixin.urldebug_toolbar/panels/staticfiles.py:2011 ms14.7%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2059 ms12.3%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1865 ms7.4%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2122 ms2.5%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1844 ms4.9%
WhiteNoise.get_static_filewhitenoise/base.py:2087 ms9.8%
StaticFile.__init__whitenoise/responders.py:774 ms4.9%
StaticFile.get_alternativeswhitenoise/responders.py:2032 ms2.5%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms2.5%
Headers.__init__<stdlib>/wsgiref/headers.py:402 ms2.5%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms2.5%
StaticFile.__init__whitenoise/responders.py:742 ms2.5%
parsedate<stdlib>/email/_parseaddr.py:1852 ms2.5%
StaticFile.__init__whitenoise/responders.py:732 ms2.5%
StaticFile.get_headerswhitenoise/responders.py:1802 ms2.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1154 ms4.9%
scantreewhitenoise/base.py:2624 ms4.9%
scantreewhitenoise/base.py:2622 ms2.5%
scantreewhitenoise/base.py:2622 ms2.5%
scantreewhitenoise/base.py:2622 ms2.5%
scantreewhitenoise/base.py:2622 ms2.5%
scantreewhitenoise/base.py:2642 ms2.5%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1112 ms2.5%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms2.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1202 ms2.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1312 ms2.5%
WhiteNoise.get_static_filewhitenoise/base.py:2082 ms2.5%
StaticFile.__init__whitenoise/responders.py:742 ms2.5%
parsedate<stdlib>/email/_parseaddr.py:1852 ms2.5%
IngestEnvironmentTest.ingest_startapps/api/tests.py:359 return Session.objects.get(ingest_id=response.json()["ingest_id"])2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.5%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:9382 ms2.5%
IngestEnvironmentTest.test_same_environment_is_reusedapps/api/tests.py:39018 ms24.5%
IngestEnvironmentTest.ingest_startapps/api/tests.py:352 response = self.client.post(16 ms22.1%
Client.postdjango/test/client.py:115316 ms22.1%
RequestFactory.postdjango/test/client.py:49916 ms22.1%
RequestFactory.genericdjango/test/client.py:67116 ms22.1%
Client.requestdjango/test/client.py:108216 ms22.1%
ClientHandler.__call__django/test/client.py:18616 ms22.1%
BaseHandler.get_responsedjango/core/handlers/base.py:14116 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13016 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12316 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30916 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3416 ms22.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5516 ms22.1%
BaseHandler._get_responsedjango/core/handlers/base.py:19816 ms22.1%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6516 ms22.1%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3716 ms22.1%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6416 ms22.1%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:7514 ms19.6%
ingest_startapps/api/urls.py:100 process_ingest_start(ingest.id)14 ms19.6%
_SharedTaskProxy.__call__potatoq/app.py:76314 ms19.6%
Task.__call__potatoq/task.py:18914 ms19.6%
ContextDecorator.__call__.<locals>.inner<stdlib>/contextlib.py:11614 ms19.6%
process_ingest_startapps/api/tasks.py:775 ms7.4%
get_or_create_numberedapps/projects/models.py:18 existing = model.objects.filter(project=project, **lookup).first()2 ms2.5%
QuerySet.firstdjango/db/models/query.py:11452 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
get_or_create_numberedapps/projects/models.py:21 number = next_number(model, project.pk)2 ms2.5%
next_numberapps/projects/models.py:35 return (model.objects.filter(project_id=project_id).aggregate(last=models.Max("number"))["last"] or 0) + 12 ms2.5%
QuerySet.aggregatedjango/db/models/query.py:5942 ms2.5%
Query.get_aggregationdjango/db/models/sql/query.py:6332 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
get_or_create_numberedapps/projects/models.py:24 return model.objects.create(project=project, number=number, **lookup, **(defaults or {})), True2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Run.saveapps/projects/models.py:188 super().save(*args, **kwargs)2 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:53 ingest = Ingest.objects.only("id").select_for_update().get(id=ingest_id)2 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:79 ingest.project,2 ms2.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.5%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:842 ms2.5%
get_or_create_environmentapps/projects/environments.py:79 obj.save(update_fields=update_fields)2 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11102 ms2.5%
Model._do_updatedjango/db/models/base.py:12112 ms2.5%
QuerySet._updatedjango/db/models/query.py:13272 ms2.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:89 Session.objects.get_or_create(2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
process_ingest_startapps/api/tasks.py:105 ingest.save(update_fields=["date_processed"])2 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11102 ms2.5%
Model._do_updatedjango/db/models/base.py:12112 ms2.5%
QuerySet._updatedjango/db/models/query.py:13272 ms2.5%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.5%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms2.5%
ContextDecorator.__call__.<locals>.inner<stdlib>/contextlib.py:1152 ms2.5%
Atomic.__enter__django/db/transaction.py:2112 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
IngestEnvironmentTest.ingest_startapps/api/tests.py:359 return Session.objects.get(ingest_id=response.json()["ingest_id"])2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.5%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms2.5%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms2.5%
IngestEnvironmentTest.test_same_environment_is_reusedapps/api/tests.py:3912 ms2.5%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms2.5%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
SimpleTestCase._setup_and_calldjango/test/testcases.py:3712 ms2.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms2.5%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms2.5%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
Estimated from 40 samples; phase durations are exact. Frames from pytest and pluggy are shown .

Hot lines in your code

apps/api/tests.py:352
response = self.client.post(
IngestEnvironmentTest.ingest_start · Libraries
23 ms
apps/api/tasks.py:89
Session.objects.get_or_create(
process_ingest_start · Database
7 ms
apps/api/tasks.py:79
ingest.project,
process_ingest_start · Database
4 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
4 ms
apps/projects/models.py:188
super().save(*args, **kwargs)
Run.save · Database
4 ms
apps/api/tasks.py:105
ingest.save(update_fields=["date_processed"])
process_ingest_start · Database
4 ms
apps/api/tests.py:359
return Session.objects.get(ingest_id=response.json()["ingest_id"])
IngestEnvironmentTest.ingest_start · Database
4 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:56
.filter(Q(date_last_used__lt=now - TOKEN_TOUCH_INTERVAL) | Q(date_last_used=None), token=token)
touch_token · 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

Fixtures

Exact setup time
_dj_autoclear_mailbox function 0.08 ms
_django_db_marker function 0.04 ms
_template_string_if_invalid_marker function 0.04 ms
_django_clear_site_cache function 0.03 ms
_django_set_urlconf function 0.03 ms
_live_server_helper function 0.03 ms
monkeypatch function 0.02 ms

Database

61 queries · 21 ms

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

4×
SELECT "projects_project"."id", "projects_project"."organization_id", "projects_project"."name", "projects_project"."slug", "projects_project"."public", "projects_project"."description", "projects_project"."date_created", "projects_project"."date_updated", "projects_project"."created_by_id" FROM "p…
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…
4×
SELECT "projects_session"."id", "projects_session"."project_id", "projects_session"."run_id", "projects_session"."status", "projects_session"."exit_status", "projects_session"."date_created", "projects_session"."date_finished", "projects_session"."ingest_id", "projects_session"."environment_id", "p…

Biggest pieces of work

call test body
apps/api/tests.py:389
70 ms
call _post_teardown
django/test/testcases.py:1240
2 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
an hour ago CI github-actions:test passed 73 ms 9caa567 main Profile
an hour ago CI github-actions:test passed 74 ms ec75501 main Profile
8 hours ago CI github-actions:test passed 104 ms d2c12e5 main Profile
8 hours ago CI github-actions:test passed 44 ms 0b902f6 main Profile
8 hours ago CI github-actions:test passed 82 ms 78a4357 main Profile