Exemplo n.º 1
0
 def test_decorate_callback(
     self,
     use_span: mock.MagicMock,
     extract: mock.MagicMock,
     get_span: mock.MagicMock,
 ) -> None:
     callback = mock.MagicMock()
     mock_task_name = "mock_task_name"
     tracer = mock.MagicMock()
     channel = mock.MagicMock(spec=Channel)
     method = mock.MagicMock(spec=Basic.Deliver)
     properties = mock.MagicMock()
     mock_body = b"mock_body"
     decorated_callback = utils._decorate_callback(callback, tracer,
                                                   mock_task_name)
     retval = decorated_callback(channel, method, properties, mock_body)
     extract.assert_called_once_with(properties.headers,
                                     getter=utils._pika_getter)
     get_span.assert_called_once_with(
         tracer,
         channel,
         properties,
         span_kind=SpanKind.CONSUMER,
         task_name=mock_task_name,
         ctx=extract.return_value,
         operation=MessagingOperationValues.RECEIVE,
     )
     use_span.assert_called_once_with(get_span.return_value,
                                      end_on_exit=True)
     callback.assert_called_once_with(channel, method, properties,
                                      mock_body)
     self.assertEqual(retval, callback.return_value)
Exemplo n.º 2
0
 def _instrument_consumers(consumers_dict: Dict[str, Callable[..., Any]],
                           tracer: Tracer) -> Any:
     for key, callback in consumers_dict.items():
         decorated_callback = utils._decorate_callback(
             callback, tracer, key)
         setattr(decorated_callback, "_original_callback", callback)
         consumers_dict[key] = decorated_callback
    def _instrument_blocking_channel_consumers(
        channel: BlockingChannel,
        tracer: Tracer,
        consume_hook: utils.HookT = utils.dummy_callback,
    ) -> Any:
        for consumer_tag, consumer_info in channel._consumer_infos.items():
            callback_attr = PikaInstrumentor.CONSUMER_CALLBACK_ATTR
            consumer_callback = getattr(consumer_info, callback_attr, None)
            if consumer_callback is None:
                continue
            decorated_callback = utils._decorate_callback(
                consumer_callback,
                tracer,
                consumer_tag,
                consume_hook,
            )

            setattr(
                decorated_callback,
                "_original_callback",
                consumer_callback,
            )
            setattr(consumer_info, callback_attr, decorated_callback)