Skip to content

Conversation

@beniwohli
Copy link
Contributor

@beniwohli beniwohli commented Nov 20, 2019

What does this pull request do?

It adds an instrumentation module for Django management commands.

Other than all other instrumentation modules, we override
call_if_sampling, not call. The reason for this is that
call excpects an already running transaction, which we don't
have in this case.

To give the user some influence on which commands are instrumented,
a new configuration option django_commands_exclude is introduced.

Why is it important?

Management commands are often used in cron jobs or during deployment.
Capturing this data can be very helpful.

Related issues

fixes #627

@beniwohli beniwohli marked this pull request as ready for review November 20, 2019 23:12
@beniwohli beniwohli force-pushed the autoinstrument-django-commands branch from 1a27631 to ebbf500 Compare November 20, 2019 23:28
Copy link
Contributor

@basepi basepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good. 👍

As discussed in our meeting this morning, my biggest concern is having this enabled by default. Collecting sensitive data accidentally is an obvious potential bad case. But there are lots of unknowns around third party management commands and unexpected behavior, since these are not "normal" transactions.

My current favorite solution is to make the config an include instead of exclude -- that would make this much safer, but would add friction to the use of the feature, which isn't ideal.

Comment on lines +753 to +763
[float]
[[config-django-commands-exclude]]
==== `django_commands_exclude`
|============
| Environment | Django | Default
| `ELASTIC_APM_DJANGO_COMMANDS_EXCLUDE` | `DJANGO_COMMANDS_EXCLUDE` | `runserver*,migrate,createsuperuser,\*shell*,testserver`
|============

By default, Elastic APM instruments Django management commands.
You can supply a list of commands that should not be instrumented.
To disable instrumenting of management commands, set it to `*`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would you think about making this a whitelist (with globbing included)? That would also make this much safer. (More thoughts in the review body)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A whitelist would definitely be the safest method, but it creates a lot of work for the user. Large Django projects can easily have dozens of management commands, and gain new ones if new 3rd party Django apps are added to the project. Keeping the white list up-to-date could be tedious work.

Another draw-back of a whitelist is that we can't provide a blacklist of commands that we should absolutely not instrument in code.

How about adding a second option, which is a flag, and disable it by default? Add some specific documentation in the Django docs, and include the NOTE there. That way, people will see the note when they read up on how to enable management command instrumentation.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds reasonable to me. 👍

Copy link
Member

@bmorelli25 bmorelli25 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits, otherwise Docs LGTM.

Lastly, the agent will also collect performance data for Django management commands.
You can disable instrumenting for certain commands using the
<<config-django-commands-exclude,`django_commands_exclude`>> setting.
Transactions for management commands can be accessed in the APM app in Kibana by choosing `django_command` in the "transaction type" filter.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APM app 😍

Co-Authored-By: Brandon Morelli <brandon.morelli@elastic.co>
@ghost
Copy link

ghost commented Apr 30, 2020

💔 Tests Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2022-02-08T16:27:24.558+0000

  • Duration: 17 min 15 sec

Test stats 🧪

Test Results
Failed 134
Passed 4207
Skipped 1354
Total 5695

Test errors 134

Expand to view the tests failures

> Show only the first 10 test failures

Initializing / Test / Python-python-3.6-2 / test_user_info – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_user_info>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_user_info_raises_database_error – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_user_info_raises_database_error>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_user_info_with_custom_user – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_user_info_with_custom_user>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_user_info_with_custom_user_non_string_username>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_request_metrics_contrib_redirect>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_request_metrics_streaming – tests.contrib.django.django_tests
    Expand to view the error details

     failed on setup with "LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?" 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    request = <SubRequest '_django_db_marker' for <Function test_request_metrics_streaming>>
    
        @pytest.fixture(autouse=True)
        def _django_db_marker(request) -> None:
            """Implement the django_db marker, internal to pytest-django.
        
            This will dynamically request the ``db``, ``transactional_db`` or
            ``django_db_reset_sequences`` fixtures as required by the django_db marker.
            """
            marker = request.node.get_closest_marker("django_db")
            if marker:
                transaction, reset_sequences, databases = validate_django_db(marker)
        
                # TODO: Use pytest Store (item.store) once that's stable.
                request.node._pytest_django_databases = databases
        
                if reset_sequences:
                    request.getfixturevalue("django_db_reset_sequences")
                elif transaction:
                    request.getfixturevalue("transactional_db")
                else:
    >               request.getfixturevalue("db")
    
    /usr/local/lib/python3.6/site-packages/pytest_django/plugin.py:470: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/local/lib/python3.6/site-packages/pytest_django/fixtures.py:120: in django_db_setup
        **setup_databases_args
    /home/user/.local/lib/python3.6/site-packages/django/test/utils.py:187: in setup_databases
        serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
    /home/user/.local/lib/python3.6/site-packages/django/db/backends/base/creation.py:69: in create_test_db
        run_syncdb=True,
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_subcommand_not_known – tests.contrib.django.django_tests
    Expand to view the error details

     LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'? 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
    argv_mock = <MagicMock name='_get_argv' id='139820666907896'>
    
        @mock.patch("elasticapm.contrib.django.management.commands.elasticapm.Command._get_argv")
        def test_subcommand_not_known(argv_mock):
            stdout = compat.StringIO()
            argv_mock.return_value = ["manage.py", "elasticapm"]
    >       call_command("elasticapm", "foo", stdout=stdout)
    
    tests/contrib/django/django_tests.py:1215: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
    Expand to view the error details

     LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'? 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
        def test_settings_missing_secret_token_no_https():
            stdout = compat.StringIO()
            with override_settings(ELASTIC_APM={"SERVER_URL": "http://foo"}):
    >           call_command("elasticapm", "check", stdout=stdout)
    
    tests/contrib/django/django_tests.py:1223: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_settings_secret_token_https – tests.contrib.django.django_tests
    Expand to view the error details

     LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'? 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
        def test_settings_secret_token_https():
            stdout = compat.StringIO()
            with override_settings(ELASTIC_APM={"SECRET_TOKEN": "foo", "SERVER_URL": "https://foo"}):
    >           call_command("elasticapm", "check", stdout=stdout)
    
    tests/contrib/django/django_tests.py:1231: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Initializing / Test / Python-python-3.6-2 / test_middleware_not_set – tests.contrib.django.django_tests
    Expand to view the error details

     LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'? 
    

    Expand to view the stacktrace

     self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
    >           return self.app_configs[app_label]
    E           KeyError: 'elasticapm.contrib.django'
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:149: KeyError
    
    During handling of the above exception, another exception occurred:
    
        def test_middleware_not_set():
            stdout = compat.StringIO()
            with override_settings(**middleware_setting(django.VERSION, ())):
    >           call_command("elasticapm", "check", stdout=stdout)
    
    tests/contrib/django/django_tests.py:1239: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /home/user/.local/lib/python3.6/site-packages/django/core/management/__init__.py:131: in call_command
        return command.execute(*args, **defaults)
    elasticapm/utils/wrapt/wrappers.py:562: in __call__
        args, kwargs)
    elasticapm/instrumentation/packages/django/commands.py:44: in call_if_sampling
        app = apps.get_app_config("elasticapm.contrib.django")
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <django.apps.registry.Apps object at 0x7f2a8aca3710>
    app_label = 'elasticapm.contrib.django'
    
        def get_app_config(self, app_label):
            """
            Imports applications and returns an app config for the given label.
        
            Raises LookupError if no application exists with this label.
            """
            self.check_apps_ready()
            try:
                return self.app_configs[app_label]
            except KeyError:
                message = "No installed app with label '%s'." % app_label
                for app_config in self.get_app_configs():
                    if app_config.name == app_label:
                        message += " Did you mean '%s'?" % app_config.label
                        break
    >           raise LookupError(message)
    E           LookupError: No installed app with label 'elasticapm.contrib.django'. Did you mean 'elasticapm'?
    
    /home/user/.local/lib/python3.6/site-packages/django/apps/registry.py:156: LookupError 
    

Steps errors 60

Expand to view the steps failures

Show only the first 10 steps failures

Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-mysql_connector-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-pymysql-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-mysqlclient-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-asyncpg-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-tornado-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-pymemcache-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-prometheus_client-newest
Restore files previously stashed
  • Took 0 min 0 sec . View more details here
  • Description: coverage-python-3.10-sanic-newest
Archive the artifacts
  • Took 0 min 0 sec . View more details here
  • Description: [2022-02-08T16:44:37.417Z] Archiving artifacts Python-python-3.6-django-1.11 tests failed : hudson.
Error signal
  • Took 0 min 0 sec . View more details here
  • Description: Python-python-3.6-django-1.11 tests failed : hudson.AbortException: script returned exit code 2

🐛 Flaky test report

❕ There are test failures but not known flaky tests.

Expand to view the summary

Genuine test errors 134

💔 There are test failures but not known flaky tests, most likely a genuine test failure.

  • Name: Initializing / Test / Python-python-3.6-2 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_django_1_10_uses_deprecated_MIDDLEWARE_CLASSES – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-2 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-2 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-4 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-3 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.6-0 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-3 / test_test_exception_fails – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_user_info – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_user_info_raises_database_error – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_user_info_with_custom_user – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_user_info_with_custom_user_non_string_username – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_request_metrics_contrib_redirect – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_request_metrics_streaming – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_subcommand_not_known – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_missing_secret_token_no_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_secret_token_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_middleware_not_set – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_middleware_not_first – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_default – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_is_empty_string – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_not_http_nor_https – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_uppercase_http – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_with_at – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_settings_server_url_with_credentials – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_test_exception – tests.contrib.django.django_tests
  • Name: Initializing / Test / Python-python-3.10-4 / test_test_exception_fails – tests.contrib.django.django_tests

🤖 GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

  • /test linters : Run the Python linters only.

  • /test full : Run the full matrix of tests.

  • /test benchmark : Run the APM Agent Python benchmarks tests.

  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

@ghost
Copy link

ghost commented Oct 27, 2020

💚 Flaky test report

Tests succeeded.

Expand to view the summary

Test stats 🧪

Test Results
Failed 0
Passed 11407
Skipped 8638
Total 20045

@basepi basepi closed this Jul 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add instrumented Django management command base class

4 participants