def test_tags_not_string(self): # ensure we can cast as strings class Foo(object): def __repr__(self): 1 / 0 s = Span(tracer=None, name='test.span') s.set_tag('a', Foo())
def test_list_no_match(self): span = Span(name='Name', tracer=None) span.set_tag(URL, r'http://cooldomain.example.com') filtr = FilterRequestsOnUrl([ r'http://domain\.example\.com', r'http://anotherdomain\.example\.com' ]) trace = filtr.process_trace([span]) self.assertIsNotNone(trace)
def test_numeric_tags_value(self): s = Span(tracer=None, name='test.span') s.set_tag(ANALYTICS_SAMPLE_RATE_KEY, 0.5) d = s.to_dict() assert d expected = { ANALYTICS_SAMPLE_RATE_KEY: 0.5 } assert d['metrics'] == expected
def test_set_tag_none(self): s = Span(tracer=None, name='root.span', service='s', resource='r') assert s.meta == dict() s.set_tag('custom.key', 100) assert s.meta == {'custom.key': '100'} s.set_tag('custom.key', None) assert s.meta == {'custom.key': 'None'}
def test_span_to_dict(self): s = Span(tracer=None, name='test.span', service='s', resource='r') s.span_type = 'foo' s.set_tag('a', '1') s.set_meta('b', '2') s.finish() d = s.to_dict() assert d assert d['span_id'] == s.span_id assert d['trace_id'] == s.trace_id assert d['parent_id'] == s.parent_id assert d['meta'] == {'a': '1', 'b': '2'} assert d['type'] == 'foo' assert d['error'] == 0 assert type(d['error']) == int
def test_set_tag_manual_drop(self): ctx = Context() s = Span(tracer=None, name='root.span', service='s', resource='r', context=ctx) assert s.context == ctx assert ctx.sampling_priority != priority.USER_REJECT assert s.context.sampling_priority != priority.USER_REJECT assert s.meta == dict() s.set_tag('manual.drop') assert ctx.sampling_priority == priority.USER_REJECT assert s.context.sampling_priority == priority.USER_REJECT assert s.meta == dict() ctx.sampling_priority = priority.AUTO_REJECT assert ctx.sampling_priority == priority.AUTO_REJECT assert s.context.sampling_priority == priority.AUTO_REJECT assert s.meta == dict() s.set_tag('manual.drop') assert ctx.sampling_priority == priority.USER_REJECT assert s.context.sampling_priority == priority.USER_REJECT assert s.meta == dict()
def test_tags(self): s = Span(tracer=None, name='test.span') s.set_tag('a', 'a') s.set_tag('b', 1) s.set_tag('c', '1') d = s.to_dict() expected = { 'a': 'a', 'b': '1', 'c': '1', } assert d['meta'] == expected
def test_is_not_match(self): span = Span(name='Name', tracer=None) span.set_tag(URL, r'http://anotherexample.com') filtr = FilterRequestsOnUrl('http://examp.*.com') trace = filtr.process_trace([span]) self.assertIsNotNone(trace)
def test__span_to_otel_span(self): api = APIOtel(exporter=None) trace_id = 0x32452526 span_id = 0x29025326 parent_id = 0x592153109 start_time = 683647322 end_time = start_time + 50 ctx = Context() span = Span( tracer=None, name='test_span', trace_id=trace_id, span_id=span_id, parent_id=parent_id, context=ctx, start=start_time, resource='foo_resource', service='foo_service', span_type='foo_span', ) span.finish(finish_time=end_time) span.set_tag('out.host', 'opentelemetry.io') span.set_tag('out.port', 443) span.set_tag('creator_name', 'mauricio.vasquez') otel_span = api._span_to_otel_span(span) self.assertEqual(span.name, otel_span.name) self.assertEqual(span.trace_id, otel_span.context.trace_id) self.assertEqual(span.span_id, otel_span.context.span_id) self.assertEqual(span.parent_id, otel_span.parent.span_id) self.assertEqual(span.trace_id, otel_span.parent.trace_id) self.assertEqual(start_time * 10**9, otel_span.start_time) self.assertEqual(end_time * 10**9, otel_span.end_time) self.assertEqual(span.service, otel_span.attributes['service.name']) self.assertEqual(span.resource, otel_span.attributes['resource.name']) self.assertEqual(span.span_type, otel_span.attributes['component']) self.assertEqual(span.get_tag('out.host'), otel_span.attributes['peer.hostname']) self.assertEqual(span.get_tag('out.port'), otel_span.attributes['peer.port']) self.assertEqual(span.get_tag('creator_name'), otel_span.attributes['creator_name']) # test parent None span = Span( tracer=None, name='test_span', trace_id=trace_id, span_id=span_id, parent_id=None, context=ctx, start=start_time, ) span.finish(finish_time=end_time) otel_span = api._span_to_otel_span(span) self.assertIsNone(otel_span.parent)
def test_numeric_tags_bad_value(self): s = Span(tracer=None, name='test.span') s.set_tag(ANALYTICS_SAMPLE_RATE_KEY, 'Hello') d = s.to_dict() assert d assert 'metrics' not in d