Tests / apps/api/tests.py
IngestEnvironmentTest::test_new_client_environment_and_git_changes
First seen 8 hours ago in 78a4357
CI
github-actions:test
5 runs
Average
58 ms
median 56 ms
max 83 ms
max 83 ms
Phases
Setup 0.80 ms
Call 57 ms
Teardown 0.18 ms
Categories
Database 29 ms
Other (Libraries, Unsampled, pytest, Serialization) 29 ms
38 database queries per run
Needs 2 KB of memory (max 8 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 44 minutes ago ·
open run
setup0.86 ms1.5%
call58 ms98.2%
IngestEnvironmentTest.test_new_client_environment_and_git_changesapps/api/tests.py:362 session = self.ingest_start(49 ms83.1%
IngestEnvironmentTest.ingest_startapps/api/tests.py:352 response = self.client.post(49 ms83.1%
Client.postdjango/test/client.py:115349 ms83.1%
RequestFactory.postdjango/test/client.py:49949 ms83.1%
RequestFactory.genericdjango/test/client.py:67149 ms83.1%
Client.requestdjango/test/client.py:108249 ms83.1%
ClientHandler.__call__django/test/client.py:17327 ms45.3%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6227 ms45.3%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10427 ms45.3%
WhiteNoise.add_fileswhitenoise/base.py:10827 ms45.3%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12018 ms30.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13118 ms30.2%
WhiteNoise.get_static_filewhitenoise/base.py:20813 ms22.7%
StaticFile.__init__whitenoise/responders.py:747 ms11.3%
parsedate<stdlib>/email/_parseaddr.py:1857 ms11.3%
StaticFile.__init__whitenoise/responders.py:732 ms3.8%
StaticFile.get_headerswhitenoise/responders.py:1762 ms3.8%
StaticFile.__init__whitenoise/responders.py:762 ms3.8%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms3.8%
StaticFile.__init__whitenoise/responders.py:772 ms3.8%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms3.8%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms3.8%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms3.8%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1762 ms3.8%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1972 ms3.8%
URLMixin.urldebug_toolbar/panels/staticfiles.py:202 ms3.8%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2052 ms3.8%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1842 ms3.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1157 ms11.3%
scantreewhitenoise/base.py:2627 ms11.3%
scantreewhitenoise/base.py:2627 ms11.3%
scantreewhitenoise/base.py:2644 ms7.6%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
ClientHandler.__call__django/test/client.py:18622 ms37.8%
BaseHandler.get_responsedjango/core/handlers/base.py:14122 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13022 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12322 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3422 ms37.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms37.8%
BaseHandler._get_responsedjango/core/handlers/base.py:19822 ms37.8%
csrf_exempt.<locals>._view_wrapperdjango/views/decorators/csrf.py:6522 ms37.8%
jsonify_errors.<locals>.wrapped_viewapps/api/urls.py:3722 ms37.8%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6422 ms37.8%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:7518 ms30.2%
ingest_startapps/api/urls.py:100 process_ingest_start(ingest.id)16 ms26.4%
_SharedTaskProxy.__call__potatoq/app.py:76316 ms26.4%
Task.__call__potatoq/task.py:18916 ms26.4%
process_ingest_startapps/api/tasks.py:89 Session.objects.get_or_create(7 ms11.3%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:877 ms11.3%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9922 ms3.8%
Atomic.__enter__django/db/transaction.py:2112 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms3.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms3.8%
QuerySet.createdjango/db/models/query.py:6692 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
Atomic.__enter__django/db/transaction.py:2112 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms3.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.8%
process_ingest_startapps/api/tasks.py:58 project=ingest.project,2 ms3.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2442 ms3.8%
ForeignObject.get_local_related_valuedjango/db/models/fields/related.py:8122 ms3.8%
ForeignObject.get_instance_value_for_fieldsdjango/db/models/fields/related.py:8342 ms3.8%
DeferredAttribute.__get__django/db/models/query_utils.py:2712 ms3.8%
Model.refresh_from_dbdjango/db/models/base.py:7582 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:57 commit, _ = Commit.objects.get_or_create(2 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms3.8%
QuerySet.createdjango/db/models/query.py:6692 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
process_ingest_startapps/api/tasks.py:105 ingest.save(update_fields=["date_processed"])2 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11102 ms3.8%
Model._do_updatedjango/db/models/base.py:12112 ms3.8%
QuerySet._updatedjango/db/models/query.py:13272 ms3.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms3.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
ingest_startapps/api/urls.py:90 ingest = Ingest.objects.create(project=project, source="ingest_start", data=json.loads(request.body))2 ms3.8%
loads<stdlib>/json/__init__.py:3712 ms3.8%
JSONDecoder.decode<stdlib>/json/decoder.py:3582 ms3.8%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:72 project = get_object_or_404(Project, secrettokens__token=request.headers.get("Authorization"))2 ms3.8%
get_object_or_404django/shortcuts.py:902 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
api_request.<locals>.decorator.<locals>.wrapped_viewapps/api/urls.py:73 touch_token(request.headers.get("Authorization"))2 ms3.8%
touch_tokenapps/api/urls.py:59 SecretTokens.objects.filter(pk__in=list(stale)).update(date_last_used=now)2 ms3.8%
QuerySet.__iter__django/db/models/query.py:3902 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
FlatValuesListIterable.__iter__django/db/models/query.py:2772 ms3.8%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15732 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()4 ms7.6%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms3.8%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms3.8%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms3.8%
Atomic.__exit__django/db/transaction.py:2832 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4132 ms3.8%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3712 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()2 ms3.8%
TestCase._fixture_setupdjango/test/testcases.py:14782 ms3.8%
TestCase._enter_atomicsdjango/test/testcases.py:13962 ms3.8%
Atomic.__enter__django/db/transaction.py:2112 ms3.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms3.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms3.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
IngestEnvironmentTest.test_new_client_environment_and_git_changesapps/api/tests.py:376 environment = session.environment2 ms3.8%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms3.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
Estimated from 27 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/api/tests.py:352
response = self.client.post(
IngestEnvironmentTest.ingest_start
· Libraries
|
27 ms |
|
apps/api/tasks.py:89
Session.objects.get_or_create(
process_ingest_start
· Database
|
7 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/api/urls.py:90
ingest = Ingest.objects.create(project=project, source="ingest_start", data=json.loads(request.body))
ingest_start
· Serialization
|
2 ms |
|
apps/api/urls.py:100
process_ingest_start(ingest.id)
ingest_start
· Database
|
2 ms |
|
apps/api/tasks.py:58
project=ingest.project,
process_ingest_start
· Database
|
2 ms |
|
apps/api/tasks.py:57
commit, _ = Commit.objects.get_or_create(
process_ingest_start
· Database
|
2 ms |
|
apps/api/tasks.py:105
ingest.save(update_fields=["date_processed"])
process_ingest_start
· Database
|
2 ms |
|
apps/api/tests.py:376
environment = session.environment
IngestEnvironmentTest.test_new_client_environment_and_git_changes
· Database
|
2 ms |
Fixtures
Exact setup time| _live_server_helper function | 0.08 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.05 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_clear_site_cache function | 0.04 ms |
| monkeypatch function | 0.03 ms |
Database
38 queries · 13 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/api/tests.py:362
|
51 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
4 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
2 ms |
| setup pytest internals | 0.86 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 | |
|---|---|---|---|---|
| 44 minutes ago | CI github-actions:test | passed | 59 ms | Profile |
| an hour ago | CI github-actions:test | passed | 56 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 83 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 38 ms | Profile |
| 8 hours ago | CI github-actions:test | passed | 56 ms | Profile |