def test_talisker_client_defaults(monkeypatch, log): monkeypatch.setitem(os.environ, 'TALISKER_ENV', 'production') monkeypatch.setitem(os.environ, 'TALISKER_UNIT', 'talisker-1') monkeypatch.setitem(os.environ, 'TALISKER_DOMAIN', 'example.com') client = talisker.sentry.get_client.uncached( dsn=conftest.DSN, transport=conftest.DummyTransport) assert 'configured raven' in log[-1].msg # check client side assert (list(sorted(client.processors)) == list( sorted(talisker.sentry.default_processors))) # this is unpleasant, but it saves us mocking assert raven.breadcrumbs.install_logging_hook.called is False assert raven.breadcrumbs._hook_requests.called is False assert raven.breadcrumbs._install_httplib.called is False # check message try: raise Exception('test') except Exception: client.captureException() messages = conftest.sentry_messages(client) data = messages[0] assert data['release'] == talisker.revision.get() assert data['environment'] == 'production' assert data['server_name'] == 'talisker-1' assert data['tags']['site'] == 'example.com'
def test_talisker_client_defaults_none(monkeypatch, log): monkeypatch.setitem(os.environ, 'TALISKER_ENV', 'production') monkeypatch.setitem(os.environ, 'TALISKER_UNIT', 'talisker-1') monkeypatch.setitem(os.environ, 'TALISKER_DOMAIN', 'example.com') # raven flask integration passes in all possible kwargs as None kwargs = { 'release': None, 'hook_libraries': None, 'site': None, 'environment': None, 'name': None, } client = talisker.sentry.get_client.uncached( dsn=conftest.DSN, transport=conftest.DummyTransport, **kwargs) # this is unpleasant, but it saves us mocking assert raven.breadcrumbs.install_logging_hook.called is False assert raven.breadcrumbs._hook_requests.called is False assert raven.breadcrumbs._install_httplib.called is False # check message try: raise Exception('test') except Exception: client.captureException() messages = conftest.sentry_messages(client) data = messages[0] assert data['release'] == talisker.revision.get() assert data['environment'] == 'production' assert data['server_name'] == 'talisker-1' assert data['tags']['site'] == 'example.com'
def test_flask_sentry_app_tag(): sentry = talisker.flask.sentry(app) response = get_url(app, '/') assert response.status_code == 500 messages = conftest.sentry_messages(sentry.client) msg = messages[0] assert msg['tags']['flask_app'] == app.name
def test_flask_sentry_sends_message(): sentry = talisker.flask.sentry(app) response = get_url('/') assert response.status_code == 500 messages = conftest.sentry_messages(sentry.client) assert len(messages) == 1 msg = messages[0] assert msg['culprit'] == '/'
def test_flask_sentry_uses_app_config_to_set_name(monkeypatch): monkeypatch.setitem(app.config, 'SENTRY_NAME', 'SomeName') sentry = talisker.flask.sentry(app) assert sentry.client.name == 'SomeName' response = get_url(app, '/') assert response.status_code == 500 messages = conftest.sentry_messages(sentry.client) assert len(messages) == 1 msg = messages[0] assert msg['server_name'] == 'SomeName'
def test_flask_sentry_uses_app_config_to_ingnore_exc(monkeypatch): monkeypatch.setitem(app.config, 'SENTRY_CONFIG', {'ignore_exceptions': ['IgnoredException']}) sentry = talisker.flask.sentry(app) assert 'IgnoredException' in sentry.client.ignore_exceptions response = get_url('/ignored') assert response.status_code == 500 messages = conftest.sentry_messages(sentry.client) assert len(messages) == 0
def test_logs_ignored(): client = talisker.sentry.get_client.uncached( dsn=conftest.DSN, transport=conftest.DummyTransport) client.context.clear() logging.getLogger('talisker.slowqueries').info('talisker.slowqueries') logging.getLogger('talisker').info('talisker') try: raise Exception('test') except Exception: client.captureException() messages = conftest.sentry_messages(client) data = messages[0] assert len(data['breadcrumbs']) == 1 crumb = data['breadcrumbs']['values'][0] assert crumb['message'] == 'talisker' assert crumb['category'] == 'talisker'