Exemplo n.º 1
0
        def fn(*_, **__):
            thread_data[
                'first_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'first_action'] = PySOALogContextFilter.get_logging_action_name(
                )

            PySOALogContextFilter.set_logging_request_context(foo='bar',
                                                              **{'baz': 'qux'})
            PySOALogContextFilter.set_logging_action_name('status')

            thread_data[
                'second_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'second_action'] = PySOALogContextFilter.get_logging_action_name(
                )

            if thread_data.get('do_clear'):
                PySOALogContextFilter.clear_logging_request_context()
                PySOALogContextFilter.clear_logging_action_name()

            thread_data[
                'third_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'third_action'] = PySOALogContextFilter.get_logging_action_name(
                )
Exemplo n.º 2
0
    def test_threading(self):
        thread_data = {}  # type: Dict[six.text_type, Any]

        def fn(*_, **__):
            thread_data[
                'first_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'first_action'] = PySOALogContextFilter.get_logging_action_name(
                )

            PySOALogContextFilter.set_logging_request_context(foo='bar',
                                                              **{'baz': 'qux'})
            PySOALogContextFilter.set_logging_action_name('status')

            thread_data[
                'second_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'second_action'] = PySOALogContextFilter.get_logging_action_name(
                )

            if thread_data.get('do_clear'):
                PySOALogContextFilter.clear_logging_request_context()
                PySOALogContextFilter.clear_logging_action_name()

            thread_data[
                'third_get'] = PySOALogContextFilter.get_logging_request_context(
                )
            thread_data[
                'third_action'] = PySOALogContextFilter.get_logging_action_name(
                )

        self.assertIsNone(PySOALogContextFilter.get_logging_request_context())
        self.assertIsNone(PySOALogContextFilter.get_logging_action_name())

        PySOALogContextFilter.set_logging_request_context(
            request_id=1234, **{'correlation_id': 'abc'})
        PySOALogContextFilter.set_logging_action_name('introspect')

        self.assertEqual({
            'request_id': 1234,
            'correlation_id': 'abc'
        }, PySOALogContextFilter.get_logging_request_context())
        self.assertEqual('introspect',
                         PySOALogContextFilter.get_logging_action_name())

        thread = threading.Thread(target=fn)
        thread.start()
        thread.join()

        self.assertEqual({
            'request_id': 1234,
            'correlation_id': 'abc'
        }, PySOALogContextFilter.get_logging_request_context())
        self.assertEqual('introspect',
                         PySOALogContextFilter.get_logging_action_name())

        self.assertIsNone(thread_data['first_get'])
        self.assertEqual({
            'foo': 'bar',
            'baz': 'qux'
        }, thread_data['second_get'])
        self.assertEqual({
            'foo': 'bar',
            'baz': 'qux'
        }, thread_data['third_get'])
        self.assertIsNone(thread_data['first_action'])
        self.assertEqual('status', thread_data['second_action'])
        self.assertEqual('status', thread_data['third_action'])

        thread_data['do_clear'] = True

        thread = threading.Thread(target=fn)
        thread.start()
        thread.join()

        self.assertEqual({
            'request_id': 1234,
            'correlation_id': 'abc'
        }, PySOALogContextFilter.get_logging_request_context())
        self.assertEqual('introspect',
                         PySOALogContextFilter.get_logging_action_name())

        self.assertIsNone(thread_data['first_get'])
        self.assertEqual({
            'foo': 'bar',
            'baz': 'qux'
        }, thread_data['second_get'])
        self.assertIsNone(thread_data['third_get'])
        self.assertIsNone(thread_data['first_action'])
        self.assertEqual('status', thread_data['second_action'])
        self.assertIsNone(thread_data['third_action'])
Exemplo n.º 3
0
    def test_filter(self):
        record = mock.MagicMock()

        log_filter = PySOALogContextFilter()

        self.assertTrue(log_filter.filter(record))
        self.assertEqual('--', record.correlation_id)
        self.assertEqual('--', record.request_id)
        self.assertEqual('unknown', record.service_name)

        PySOALogContextFilter.set_service_name('foo_qux')
        PySOALogContextFilter.set_logging_request_context(
            filter='mine', **{'logger': 'yours'})
        self.assertEqual({
            'filter': 'mine',
            'logger': 'yours'
        }, PySOALogContextFilter.get_logging_request_context())

        record.reset_mock()

        self.assertTrue(log_filter.filter(record))
        self.assertEqual('--', record.correlation_id)
        self.assertEqual('--', record.request_id)
        self.assertEqual('foo_qux', record.service_name)
        self.assertEqual('(n/a)', record.action_name)

        PySOALogContextFilter.set_logging_request_context(
            request_id=4321, **{'correlation_id': 'abc1234'})
        PySOALogContextFilter.set_logging_action_name('status')
        self.assertEqual({
            'request_id': 4321,
            'correlation_id': 'abc1234'
        }, PySOALogContextFilter.get_logging_request_context())

        record.reset_mock()

        self.assertTrue(log_filter.filter(record))
        self.assertEqual('abc1234', record.correlation_id)
        self.assertEqual(4321, record.request_id)
        self.assertEqual('foo_qux', record.service_name)
        self.assertEqual('status', record.action_name)

        PySOALogContextFilter.clear_logging_request_context()
        PySOALogContextFilter.set_logging_action_name('introspect')
        self.assertEqual({
            'filter': 'mine',
            'logger': 'yours'
        }, PySOALogContextFilter.get_logging_request_context())

        record.reset_mock()

        self.assertTrue(log_filter.filter(record))
        self.assertEqual('--', record.correlation_id)
        self.assertEqual('--', record.request_id)
        self.assertEqual('foo_qux', record.service_name)
        self.assertEqual('introspect', record.action_name)

        PySOALogContextFilter.clear_logging_request_context()
        PySOALogContextFilter.clear_logging_action_name()
        self.assertIsNone(PySOALogContextFilter.get_logging_request_context())

        record.reset_mock()

        self.assertTrue(log_filter.filter(record))
        self.assertEqual('--', record.correlation_id)
        self.assertEqual('--', record.request_id)
        self.assertEqual('foo_qux', record.service_name)
        self.assertEqual('status', record.action_name)