Changeset View
Changeset View
Standalone View
Standalone View
swh/core/api/tests/test_gunicorn.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import os | import os | ||||
import pkg_resources | import pkg_resources | ||||
from unittest.mock import patch | from unittest.mock import patch | ||||
import swh.core.api.gunicorn_config as gunicorn_config | import swh.core.api.gunicorn_config as gunicorn_config | ||||
def test_post_fork_default(): | def test_post_fork_default(): | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
gunicorn_config.post_fork(None, None) | gunicorn_config.post_fork(None, None) | ||||
sentry_sdk_init.assert_not_called() | sentry_sdk_init.assert_not_called() | ||||
def test_post_fork_with_dsn_env(): | def test_post_fork_with_dsn_env(): | ||||
flask_integration = object() # unique object to check for equality | flask_integration = object() # unique object to check for equality | ||||
with patch('sentry_sdk.integrations.flask.FlaskIntegration', | with patch( | ||||
new=lambda: flask_integration): | "sentry_sdk.integrations.flask.FlaskIntegration", new=lambda: flask_integration | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | ): | ||||
with patch.dict(os.environ, {'SWH_SENTRY_DSN': 'test_dsn'}): | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
with patch.dict(os.environ, {"SWH_SENTRY_DSN": "test_dsn"}): | |||||
gunicorn_config.post_fork(None, None) | gunicorn_config.post_fork(None, None) | ||||
sentry_sdk_init.assert_called_once_with( | sentry_sdk_init.assert_called_once_with( | ||||
dsn='test_dsn', | dsn="test_dsn", | ||||
integrations=[flask_integration], | integrations=[flask_integration], | ||||
debug=False, | debug=False, | ||||
release=None, | release=None, | ||||
environment=None, | environment=None, | ||||
) | ) | ||||
def test_post_fork_with_package_env(): | def test_post_fork_with_package_env(): | ||||
flask_integration = object() # unique object to check for equality | flask_integration = object() # unique object to check for equality | ||||
with patch('sentry_sdk.integrations.flask.FlaskIntegration', | with patch( | ||||
new=lambda: flask_integration): | "sentry_sdk.integrations.flask.FlaskIntegration", new=lambda: flask_integration | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | ): | ||||
with patch.dict(os.environ, {'SWH_SENTRY_DSN': 'test_dsn', | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
'SWH_SENTRY_ENVIRONMENT': 'tests', | with patch.dict( | ||||
'SWH_MAIN_PACKAGE': 'swh.core'}): | os.environ, | ||||
{ | |||||
"SWH_SENTRY_DSN": "test_dsn", | |||||
"SWH_SENTRY_ENVIRONMENT": "tests", | |||||
"SWH_MAIN_PACKAGE": "swh.core", | |||||
}, | |||||
): | |||||
gunicorn_config.post_fork(None, None) | gunicorn_config.post_fork(None, None) | ||||
version = pkg_resources.get_distribution('swh.core').version | version = pkg_resources.get_distribution("swh.core").version | ||||
sentry_sdk_init.assert_called_once_with( | sentry_sdk_init.assert_called_once_with( | ||||
dsn='test_dsn', | dsn="test_dsn", | ||||
integrations=[flask_integration], | integrations=[flask_integration], | ||||
debug=False, | debug=False, | ||||
release='swh.core@' + version, | release="swh.core@" + version, | ||||
environment='tests', | environment="tests", | ||||
) | ) | ||||
def test_post_fork_debug(): | def test_post_fork_debug(): | ||||
flask_integration = object() # unique object to check for equality | flask_integration = object() # unique object to check for equality | ||||
with patch('sentry_sdk.integrations.flask.FlaskIntegration', | with patch( | ||||
new=lambda: flask_integration): | "sentry_sdk.integrations.flask.FlaskIntegration", new=lambda: flask_integration | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | ): | ||||
with patch.dict(os.environ, {'SWH_SENTRY_DSN': 'test_dsn', | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
'SWH_SENTRY_DEBUG': '1'}): | with patch.dict( | ||||
os.environ, {"SWH_SENTRY_DSN": "test_dsn", "SWH_SENTRY_DEBUG": "1"} | |||||
): | |||||
gunicorn_config.post_fork(None, None) | gunicorn_config.post_fork(None, None) | ||||
sentry_sdk_init.assert_called_once_with( | sentry_sdk_init.assert_called_once_with( | ||||
dsn='test_dsn', | dsn="test_dsn", | ||||
integrations=[flask_integration], | integrations=[flask_integration], | ||||
debug=True, | debug=True, | ||||
release=None, | release=None, | ||||
environment=None, | environment=None, | ||||
) | ) | ||||
def test_post_fork_no_flask(): | def test_post_fork_no_flask(): | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
with patch.dict(os.environ, {'SWH_SENTRY_DSN': 'test_dsn'}): | with patch.dict(os.environ, {"SWH_SENTRY_DSN": "test_dsn"}): | ||||
gunicorn_config.post_fork(None, None, flask=False) | gunicorn_config.post_fork(None, None, flask=False) | ||||
sentry_sdk_init.assert_called_once_with( | sentry_sdk_init.assert_called_once_with( | ||||
dsn='test_dsn', | dsn="test_dsn", integrations=[], debug=False, release=None, environment=None | ||||
integrations=[], | |||||
debug=False, | |||||
release=None, | |||||
environment=None, | |||||
) | ) | ||||
def test_post_fork_extras(): | def test_post_fork_extras(): | ||||
flask_integration = object() # unique object to check for equality | flask_integration = object() # unique object to check for equality | ||||
with patch('sentry_sdk.integrations.flask.FlaskIntegration', | with patch( | ||||
new=lambda: flask_integration): | "sentry_sdk.integrations.flask.FlaskIntegration", new=lambda: flask_integration | ||||
with patch('sentry_sdk.init') as sentry_sdk_init: | ): | ||||
with patch.dict(os.environ, {'SWH_SENTRY_DSN': 'test_dsn'}): | with patch("sentry_sdk.init") as sentry_sdk_init: | ||||
with patch.dict(os.environ, {"SWH_SENTRY_DSN": "test_dsn"}): | |||||
gunicorn_config.post_fork( | gunicorn_config.post_fork( | ||||
None, None, sentry_integrations=['foo'], | None, | ||||
extra_sentry_kwargs={'bar': 'baz'}) | None, | ||||
sentry_integrations=["foo"], | |||||
extra_sentry_kwargs={"bar": "baz"}, | |||||
) | |||||
sentry_sdk_init.assert_called_once_with( | sentry_sdk_init.assert_called_once_with( | ||||
dsn='test_dsn', | dsn="test_dsn", | ||||
integrations=['foo', flask_integration], | integrations=["foo", flask_integration], | ||||
debug=False, | debug=False, | ||||
bar='baz', | bar="baz", | ||||
release=None, | release=None, | ||||
environment=None, | environment=None, | ||||
) | ) |