Esempio n. 1
0
class TestSentryLogObserver(VumiTestCase):
    def setUp(self):
        self.client = DummySentryClient()
        self.obs = SentryLogObserver(self.client, 'test', "worker-1")

    def test_level_for_event(self):
        for expected_level, event in [
            (logging.WARN, {'logLevel': logging.WARN}),
            (logging.ERROR, {'isError': 1}),
            (logging.INFO, {}),
        ]:
            self.assertEqual(self.obs.level_for_event(event), expected_level)

    def test_logger_for_event(self):
        self.assertEqual(self.obs.logger_for_event({'system': 'foo,bar'}),
                         'test.foo.bar')
        self.assertEqual(self.obs.logger_for_event({}), 'test')

    def test_log_failure(self):
        e = ValueError("foo error")
        f = Failure(e)
        self.obs({'failure': f, 'system': 'foo', 'isError': 1})
        self.assertEqual(self.client.exceptions, [
            (((type(e), e, None),),
             {'data': {'level': 40, 'logger': 'test.foo'},
              'tags': {'worker-id': 'worker-1'}}),
        ])

    def test_log_traceback(self):
        try:
            raise ValueError("foo")
        except ValueError:
            f = Failure(*sys.exc_info())
        self.obs({'failure': f, 'isError': 1})
        [call_args] = self.client.exceptions
        exc_info = call_args[0][0]
        tb = ''.join(traceback.format_exception(*exc_info))
        self.assertTrue('raise ValueError("foo")' in tb)

    def test_log_warning(self):
        self.obs({'message': ["a"], 'system': 'foo',
                  'logLevel': logging.WARN})
        self.assertEqual(self.client.messages, [
            (('a',),
             {'data': {'level': 30, 'logger': 'test.foo'},
              'tags': {'worker-id': 'worker-1'}})
        ])

    def test_log_info(self):
        self.obs({'message': ["a"], 'system': 'test.log'})
        self.assertEqual(self.client.messages, [])  # should be filtered out
Esempio n. 2
0
 def setUp(self):
     self.client = DummySentryClient()
     self.obs = SentryLogObserver(self.client, 'test', "worker-1")
Esempio n. 3
0
 def setUp(self):
     self.client = DummySentryClient()
     self.obs = SentryLogObserver(self.client, 'test', "worker-1")
Esempio n. 4
0
class TestSentryLogObserver(VumiTestCase):
    def setUp(self):
        self.client = DummySentryClient()
        self.obs = SentryLogObserver(self.client, 'test', "worker-1")

    def test_level_for_event(self):
        for expected_level, event in [
            (logging.WARN, {
                'logLevel': logging.WARN
            }),
            (logging.ERROR, {
                'isError': 1
            }),
            (logging.INFO, {}),
        ]:
            self.assertEqual(self.obs.level_for_event(event), expected_level)

    def test_logger_for_event(self):
        self.assertEqual(self.obs.logger_for_event({'system': 'foo,bar'}),
                         'test.foo.bar')
        self.assertEqual(self.obs.logger_for_event({}), 'test')

    def test_log_failure(self):
        e = ValueError("foo error")
        f = Failure(e)
        self.obs({'failure': f, 'system': 'foo', 'isError': 1})
        self.assertEqual(self.client.exceptions, [
            (((type(e), e, None), ), {
                'data': {
                    'level': 40,
                    'logger': 'test.foo'
                },
                'tags': {
                    'worker-id': 'worker-1'
                }
            }),
        ])

    def test_log_traceback(self):
        try:
            raise ValueError("foo")
        except ValueError:
            f = Failure(*sys.exc_info())
        self.obs({'failure': f, 'isError': 1})
        [call_args] = self.client.exceptions
        exc_info = call_args[0][0]
        tb = ''.join(traceback.format_exception(*exc_info))
        self.assertTrue('raise ValueError("foo")' in tb)

    def test_log_warning(self):
        self.obs({'message': ["a"], 'system': 'foo', 'logLevel': logging.WARN})
        self.assertEqual(self.client.messages, [(('a', ), {
            'data': {
                'level': 30,
                'logger': 'test.foo'
            },
            'tags': {
                'worker-id': 'worker-1'
            }
        })])

    def test_log_info(self):
        self.obs({'message': ["a"], 'system': 'test.log'})
        self.assertEqual(self.client.messages, [])  # should be filtered out