def test_context_to_readable_headers(self):
        for url_encoding in [False, True]:
            codec = TextCodec(url_encoding=url_encoding,
                              trace_id_header='Trace_ID',
                              baggage_header_prefix='Trace-Attr-')
            ctx = SpanContext(trace_id=256,
                              span_id=127,
                              parent_id=None,
                              flags=1)
            carrier = {}
            codec.inject(ctx, carrier)
            assert carrier == {'trace-id': '100:7f:0:1'}

            ctx._baggage = {
                'fry': 'Leela',
                'bender': 'Countess de la Roca',
            }
            carrier = {}
            codec.inject(ctx, carrier)
            if url_encoding:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess%20de%20la%20Roca',
                    'trace-attr-fry': 'Leela'
                }
            else:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess de la Roca',
                    'trace-attr-fry': 'Leela'
                }
示例#2
0
    def test_context_to_readable_headers(self):
        for url_encoding in [False, True]:
            codec = TextCodec(url_encoding=url_encoding,
                              trace_id_header='Trace_ID',
                              baggage_header_prefix='Trace-Attr-')
            ctx = SpanContext(trace_id=256,
                              span_id=127,
                              parent_id=None,
                              flags=1)
            carrier = {}
            codec.inject(ctx, carrier)
            assert carrier == {'trace-id': '100:7f:0:1'}

            ctx._baggage = {
                'fry': u'Leela',
                'bender': 'Countess de la Roca',
                b'key1': bytes(chr(255)),
                u'key2-caf\xe9': 'caf\xc3\xa9',
                u'key3': u'caf\xe9',
                'key4-caf\xc3\xa9': 'value',
            }
            carrier = {}
            codec.inject(ctx, carrier)
            # NB: the reverse transformation is not exact, e.g. this fails:
            #   assert ctx._baggage == codec.extract(carrier)._baggage
            # But fully supporting lossless Unicode baggage is not the goal.
            if url_encoding:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess%20de%20la%20Roca',
                    'trace-attr-fry': 'Leela',
                    'trace-attr-key1': '%FF',
                    'trace-attr-key2-caf\xc3\xa9': 'caf%C3%A9',
                    'trace-attr-key3': 'caf%C3%A9',
                    'trace-attr-key4-caf\xc3\xa9': 'value',
                }, 'with url_encoding = %s' % url_encoding
                for key, val in six.iteritems(carrier):
                    assert isinstance(key, str) or isinstance(key, newstr)
                    assert isinstance(val, str) or isinstance(
                        val, newstr), '%s' % type(val)
            else:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess de la Roca',
                    'trace-attr-fry': 'Leela',
                    'trace-attr-key1': '\xff',
                    u'trace-attr-key2-caf\xe9': 'caf\xc3\xa9',
                    u'trace-attr-key3': u'caf\xe9',
                    'trace-attr-key4-caf\xc3\xa9': 'value',
                }, 'with url_encoding = %s' % url_encoding
示例#3
0
    def test_context_to_readable_headers(self):
        for url_encoding in [False, True]:
            codec = TextCodec(
                url_encoding=url_encoding,
                trace_id_header='Trace_ID',
                baggage_header_prefix='Trace-Attr-')
            ctx = SpanContext(
                trace_id=256, span_id=127, parent_id=None, flags=1
            )
            carrier = {}
            codec.inject(ctx, carrier)
            assert carrier == {'trace-id': '100:7f:0:1'}

            ctx._baggage = {
                'bender': 'Countess de la Roca',
                'fry': u'Leela',
                b'key1': bytes(chr(75)) if six.PY2 else bytes([75]),
                u'key2': 'cafe',
                u'key3': u'\U0001F47E',
            }
            carrier = {}
            codec.inject(ctx, carrier)
            # NB: the reverse transformation is not exact, e.g. this fails:
            #   assert ctx._baggage == codec.extract(carrier)._baggage
            # But fully supporting lossless Unicode baggage is not the goal.
            if url_encoding:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess%20de%20la%20Roca',
                    'trace-attr-fry': 'Leela',
                    'trace-attr-key1': 'K',
                    'trace-attr-key2': 'cafe',
                    'trace-attr-key3': '%F0%9F%91%BE',
                }, 'with url_encoding = %s' % url_encoding
                for key, val in six.iteritems(carrier):
                    assert isinstance(key, str)
                    assert isinstance(val, str), '%s' % type(val)
            else:
                assert carrier == {
                    'trace-id': '100:7f:0:1',
                    'trace-attr-bender': 'Countess de la Roca',
                    'trace-attr-fry': 'Leela',
                    'trace-attr-key1': 'K',
                    u'trace-attr-key2': 'cafe',
                    'trace-attr-key3': u'\U0001F47E',
                }, 'with url_encoding = %s' % url_encoding
    def test_context_to_readable_headers(self):
        codec = TextCodec(trace_id_header='Trace_ID',
                          baggage_header_prefix='Trace-Attr-')
        span = Span(trace_id=256, span_id=127, parent_id=None, flags=1,
                    operation_name='x', tracer=None, start_time=1)
        carrier = {}
        codec.inject(span, carrier)
        assert carrier == {'trace-id': '100:7f:0:1'}

        span.set_baggage_item('Fry', 'Leela')
        span.set_baggage_item('Bender', 'Countess de la Roca')
        carrier = {}
        codec.inject(span, carrier)
        assert carrier == {
            'trace-id': '100:7f:0:1',
            'trace-attr-bender': 'Countess de la Roca',
            'trace-attr-fry': 'Leela'}
示例#5
0
 def test_wrong_carrier(self):
     codec = TextCodec()
     with self.assertRaises(InvalidCarrierException):
         codec.inject(span_context={}, carrier=[])  # array is no good
     with self.assertRaises(InvalidCarrierException):
         codec.extract(carrier=[])
示例#6
0
 def test_wrong_carrier(self):
     codec = TextCodec()
     with self.assertRaises(InvalidCarrierException):
         codec.inject(span_context={}, carrier=[])  # array is no good
     with self.assertRaises(InvalidCarrierException):
         codec.extract(carrier=[])