コード例 #1
0
 def test_backend_failure(self):
     backends = {str(i): MagicMock() for i in range(5)}
     backends['1'].send.side_effect = RuntimeError
     router = RoutingBackend(backends=backends)
     router.send(self.sample_event)
     for backend in backends.itervalues():
         backend.send.assert_called_once_with(self.sample_event)
コード例 #2
0
ファイル: test_routing.py プロジェクト: lxp20201/lxp
 def test_single_backend(self):
     mock_backend = MagicMock()
     router = RoutingBackend(backends={
         'mock0': mock_backend
     })
     router.send(self.sample_event)
     mock_backend.send.assert_called_once_with(self.sample_event)
コード例 #3
0
ファイル: test_routing.py プロジェクト: lxp20201/lxp
 def test_single_processor(self):
     mock_processor = MagicMock()
     router = RoutingBackend(processors=[
         mock_processor
     ])
     router.send(self.sample_event)
     mock_processor.assert_called_once_with(self.sample_event)
コード例 #4
0
 def test_multiple_processors(self):
     processors = [MagicMock() for __ in range(5)]
     for processor in processors:
         processor.return_value = self.sample_event
     router = RoutingBackend(processors=processors)
     router.send(self.sample_event)
     for processor in processors:
         processor.assert_called_once_with(self.sample_event)
コード例 #5
0
ファイル: test_routing.py プロジェクト: lxp20201/lxp
 def test_multiple_backends(self):
     backends = {
         str(i): MagicMock()
         for i in range(5)
     }
     router = RoutingBackend(backends=backends)
     router.send(self.sample_event)
     for backend in backends.values():
         backend.send.assert_called_once_with(self.sample_event)
コード例 #6
0
ファイル: test_routing.py プロジェクト: lxp20201/lxp
    def test_nested_routing_with_abort(self):
        mock_abort_processing = MagicMock()
        mock_abort_processing.side_effect = EventEmissionExit

        left_backend = MagicMock()
        left_router = RoutingBackend(backends={'0': left_backend}, processors=[mock_abort_processing])

        right_backend = MagicMock()
        right_router = RoutingBackend(backends={'0': right_backend})

        root_router = RoutingBackend(backends={
            'left': left_router,
            'right': right_router,
        })

        root_router.send(self.sample_event)

        right_backend.send.assert_called_once_with(self.sample_event)
        self.assertEqual(len(left_backend.mock_calls), 0)
        mock_abort_processing.assert_called_once_with(self.sample_event)
コード例 #7
0
    def test_multiple_backends_and_processors(self):
        backends = {str(i): MagicMock() for i in range(5)}
        processors = [MagicMock() for __ in range(5)]
        for processor in processors:
            processor.return_value = self.sample_event

        router = RoutingBackend(backends=backends, processors=processors)
        router.send(self.sample_event)
        for processor in processors:
            processor.assert_called_once_with(self.sample_event)
        for backend in backends.values():
            backend.send.assert_called_once_with(self.sample_event)
コード例 #8
0
    def test_backend_call_order(self):
        class OrderRecordingBackend(object):
            """Keep track of the order that the backends are called in"""
            def __init__(self, name, call_order):
                self._name = name
                self._order = call_order

            def send(self, event):  # pylint: disable=unused-argument
                """Do nothing except record that this was called"""
                self._order.append(self._name)

        call_order = []
        backends = {
            str(i): OrderRecordingBackend(str(i), call_order)
            for i in range(5)
        }

        router = RoutingBackend(backends=backends)

        router.send(self.sample_event)
        self.assertEqual(call_order, ['0', '1', '2', '3', '4'])
コード例 #9
0
 def test_non_callable_processor_simple_type(self):
     with self.assertRaisesRegexp(ValueError,
                                  r'Processor \w+ is not callable.'):
         RoutingBackend(processors=['b'])
コード例 #10
0
 def test_non_callable_processor(self):
     with self.assertRaisesRegexp(ValueError,
                                  r'Processor \w+ is not callable.'):
         RoutingBackend(processors=[object()])
コード例 #11
0
 def test_backend_without_send(self):
     with self.assertRaisesRegexp(
             ValueError,
             r'Backend \w+ does not have a callable "send" method.'):
         RoutingBackend(backends={'a': object()})
コード例 #12
0
 def test_non_callable_backend(self):
     with self.assertRaisesRegexp(
             ValueError,
             r'Backend \w+ does not have a callable "send" method.'):
         RoutingBackend(backends={'a': 'b'})
コード例 #13
0
    def setUp(self):
        self.sample_event = {'name': sentinel.name}

        self.mock_backend = MagicMock()
        self.router = RoutingBackend(backends={'0': self.mock_backend})
コード例 #14
0
 def __init__(self, backends=None, context_locator=None, processors=None):
     self.routing_backend = RoutingBackend(backends=backends, processors=processors)
     self.context_locator = context_locator or DefaultContextLocator()
コード例 #15
0
 def test_non_callable_processor_simple_type(self):
     with self.assertRaisesRegexp(  # pylint: disable=deprecated-method,useless-suppression
             ValueError, r'Processor \w+ is not callable.'):
         RoutingBackend(processors=['b'])
コード例 #16
0
 def test_backend_without_send(self):
     with self.assertRaisesRegexp(  # pylint: disable=deprecated-method,useless-suppression
             ValueError,
             r'Backend \w+ does not have a callable "send" method.'):
         RoutingBackend(backends={'a': object()})