def test_multi_valued_tags(self): """Test Multi-valued Tags.""" tracer = WavefrontTracer(ConsoleReporter(), self.application_tags) span = tracer.start_span("test_op", tags=[("key1", "val1"), ("key1", "val2")]) self.assertIsNotNone(span) self.assertIsNotNone(span.get_tags()) self.assertIsNotNone(span.get_tags_as_list()) self.assertIsNotNone(span.get_tags_as_map()) self.assertEqual(6, len(span.get_tags_as_map())) self.assertTrue("app" in span.get_tags_as_map().get("application")) self.assertTrue("service" in span.get_tags_as_map().get("service")) self.assertTrue("us-west-1" in span.get_tags_as_map().get("cluster")) self.assertTrue("primary" in span.get_tags_as_map().get("shard")) self.assertTrue("custom_v" in span.get_tags_as_map().get("custom_k")) self.assertTrue("val1" in span.get_tags_as_map().get("key1")) self.assertTrue("val2" in span.get_tags_as_map().get("key1")) span.finish() tracer.close()
def test_forced_sampling(self): """Test span with forced sampling.""" tracer = WavefrontTracer(ConsoleReporter(), self.application_tags, samplers=[ConstantSampler(False)]) span = tracer.start_span('test_op') self.assertIsNotNone(span) self.assertIsNotNone(span.context) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertFalse(span.context.get_sampling_decision()) span.set_tag(opentracing.ext.tags.SAMPLING_PRIORITY, 1) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertTrue(span.context.get_sampling_decision()) span = tracer.start_span('test_op') self.assertIsNotNone(span) self.assertIsNotNone(span.context) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertFalse(span.context.get_sampling_decision()) span.set_tag(opentracing.ext.tags.ERROR, True) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertTrue(span.context.get_sampling_decision()) span = tracer.start_span('test_op') self.assertIsNotNone(span) self.assertIsNotNone(span.context) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertFalse(span.context.get_sampling_decision()) span.set_tag("debug", True) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertTrue(span.context.get_sampling_decision()) span = tracer.start_span('test_op') self.assertIsNotNone(span) self.assertIsNotNone(span.context) self.assertIsNotNone(span.context.get_sampling_decision()) self.assertFalse(span.context.get_sampling_decision()) span.set_tag("debug", "true") self.assertIsNotNone(span.context.get_sampling_decision()) self.assertTrue(span.context.get_sampling_decision())
def test_multi_valued_tags(self): """Test Multi-valued Tags.""" tracer = WavefrontTracer(ConsoleReporter(), self.application_tags) span = tracer.start_span('test_op', tags=[('key1', 'val1'), ('key1', 'val2'), ('application', 'new_app')]) self.assertIsNotNone(span) self.assertIsNotNone(span.get_tags()) self.assertIsNotNone(span.get_tags_as_list()) self.assertIsNotNone(span.get_tags_as_map()) self.assertEqual(7, len(span.get_tags_as_map())) self.assertTrue('new_app' in span.get_tags_as_map().get('application')) self.assertTrue('service' in span.get_tags_as_map().get('service')) self.assertTrue('us-west-1' in span.get_tags_as_map().get('cluster')) self.assertTrue('primary' in span.get_tags_as_map().get('shard')) self.assertTrue('custom_v' in span.get_tags_as_map().get('custom_k')) self.assertTrue('val1' in span.get_tags_as_map().get('key1')) self.assertTrue('val2' in span.get_tags_as_map().get('key1')) span.finish() tracer.close()
def test_global_tags(self): """Test Global Tags.""" global_tags = [('foo1', 'bar1'), ('foo2', 'bar2')] tracer = WavefrontTracer(ConsoleReporter(), self.application_tags, global_tags) span = tracer.start_span(operation_name='test_op', tags=[('foo3', 'bar3')]) self.assertIsNotNone(span) self.assertIsNotNone(span.get_tags()) self.assertIsNotNone(span.get_tags_as_list()) self.assertIsNotNone(span.get_tags_as_map()) self.assertEqual(9, len(span.get_tags())) self.assertTrue('app' in span.get_tags_as_map().get('application')) self.assertTrue('service' in span.get_tags_as_map().get('service')) self.assertTrue('us-west-1' in span.get_tags_as_map().get('cluster')) self.assertTrue('primary' in span.get_tags_as_map().get('shard')) self.assertTrue('custom_v' in span.get_tags_as_map().get('custom_k')) self.assertTrue('bar1' in span.get_tags_as_map().get('foo1')) self.assertTrue('bar2' in span.get_tags_as_map().get('foo2')) self.assertTrue('bar3' in span.get_tags_as_map().get('foo3')) span.finish() tracer.close()
def test_global_tags(self): """Test Global Tags.""" global_tags = [("foo1", "bar1"), ("foo2", "bar2")] tracer = WavefrontTracer(ConsoleReporter(), self.application_tags, global_tags) span = tracer.start_span(operation_name="test_op", tags=[("foo3", "bar3")]) self.assertIsNotNone(span) self.assertIsNotNone(span.get_tags()) self.assertIsNotNone(span.get_tags_as_list()) self.assertIsNotNone(span.get_tags_as_map()) self.assertEqual(8, len(span.get_tags())) self.assertTrue("app" in span.get_tags_as_map().get("application")) self.assertTrue("service" in span.get_tags_as_map().get("service")) self.assertTrue("us-west-1" in span.get_tags_as_map().get("cluster")) self.assertTrue("primary" in span.get_tags_as_map().get("shard")) self.assertTrue("custom_v" in span.get_tags_as_map().get("custom_k")) self.assertTrue("bar1" in span.get_tags_as_map().get("foo1")) self.assertTrue("bar2" in span.get_tags_as_map().get("foo2")) self.assertTrue("bar3" in span.get_tags_as_map().get("foo3")) span.finish() tracer.close()
def test_ignore_active_span(self): """Test Ignore Active Span.""" tracer = WavefrontTracer(ConsoleReporter(), self.application_tags) scope = tracer.start_active_span('test_op') active_span = scope.span # Span created with ignore_active_span=False by default. child_span = tracer.start_span(operation_name='child_op', ignore_active_span=False) active_trace_id = str(active_span.trace_id) child_trace_id = str(child_span.trace_id) self.assertEqual(active_trace_id, child_trace_id) child_span.finish() # Span created with ignore_active_span=True. child_span = tracer.start_span(operation_name='child_op', ignore_active_span=True) child_trace_id = str(child_span.trace_id) self.assertNotEqual(active_trace_id, child_trace_id) child_span.finish() scope.close() tracer.close()
proxy_client = wavefront_sdk.WavefrontProxyClient( host='localhost', metrics_port=2878, distribution_port=40000, tracing_port=30000 # internal_flush=2 not working ) proxy_reporter = WavefrontSpanReporter(client=proxy_client, source='ALEXH_tracing-example') # Create Composite reporter. # Create Tracer with Composite Reporter. # CompositeReporter takes a list of other reporters and invokes them one by one # Use ConsoleReporter to output span data to console composite_reporter = CompositeReporter(proxy_reporter, ConsoleReporter()) tracer = WavefrontTracer(reporter=composite_reporter, application_tags=application_tag) global_tags = [('global_key', 'global_val')] scope = tracer.start_active_span( operation_name='span1', tags=global_tags, ignore_active_span=True, finish_on_close=True )
max_queue_size=50000, batch_size=10000, flush_interval_seconds=5) direct_reporter = WavefrontSpanReporter(direct_client) # Create Wavefront Span Reporter using Wavefront Proxy Client. proxy_client = WavefrontProxyClient(host="localhost", tracing_port=30000, distribution_port=40000, metrics_port=2878) proxy_reporter = WavefrontSpanReporter(proxy_client) # Create Composite reporter. # Use ConsoleReporter to output span data to console. composite_reporter = CompositeReporter(proxy_reporter, direct_reporter, ConsoleReporter()) # Create Tracer with Composite Reporter. tracer = WavefrontTracer(reporter=composite_reporter) global_tags = [("global_key", "global_val")] # Create span1, return a newly started and activated Scope. scope = tracer.start_active_span(operation_name="span1", tags=global_tags, ignore_active_span=True, finish_on_close=True) span1 = scope.span time.sleep(1) # Create span2, span3 child of span1.