def test_encode_id_zero_padding(self): trace_id = 0x0E0C63257DE34C926F9EFCD03927272E span_id = 0x04BF92DEEFC58C92 parent_id = 0x0AAAAAAAAAAAAAAA start_time = 683647322 * 10**9 # in ns duration = 50 * 10**6 end_time = start_time + duration otel_span = trace._Span( name=TEST_SERVICE_NAME, context=trace_api.SpanContext( trace_id, span_id, is_remote=False, trace_flags=TraceFlags(TraceFlags.SAMPLED), ), parent=trace_api.SpanContext(trace_id, parent_id, is_remote=False), resource=trace.Resource({}), ) otel_span.start(start_time=start_time) otel_span.end(end_time=end_time) expected_output = [{ "traceId": format(trace_id, "032x"), "id": format(span_id, "016x"), "name": TEST_SERVICE_NAME, "timestamp": JsonV2Encoder._nsec_to_usec_round(start_time), "duration": JsonV2Encoder._nsec_to_usec_round(duration), "localEndpoint": { "serviceName": TEST_SERVICE_NAME }, "kind": JsonV2Encoder.SPAN_KIND_MAP[SpanKind.INTERNAL], "debug": True, "parentId": format(parent_id, "016x"), }] self.assert_equal_encoded_spans( json.dumps(expected_output), JsonV2Encoder().serialize([otel_span], NodeEndpoint()), )
def get_exhaustive_otel_span_list() -> List[trace._Span]: trace_id = 0x6E0C63257DE34C926F9EFCD03927272E base_time = 683647322 * 10**9 # in ns start_times = ( base_time, base_time + 150 * 10**6, base_time + 300 * 10**6, base_time + 400 * 10**6, ) end_times = ( start_times[0] + (50 * 10**6), start_times[1] + (100 * 10**6), start_times[2] + (200 * 10**6), start_times[3] + (300 * 10**6), ) parent_span_context = trace_api.SpanContext(trace_id, 0x1111111111111111, is_remote=False) other_context = trace_api.SpanContext(trace_id, 0x2222222222222222, is_remote=False) span1 = trace._Span( name="test-span-1", context=trace_api.SpanContext( trace_id, 0x34BF92DEEFC58C92, is_remote=False, trace_flags=TraceFlags(TraceFlags.SAMPLED), ), parent=parent_span_context, events=(trace.Event( name="event0", timestamp=base_time + 50 * 10**6, attributes={ "annotation_bool": True, "annotation_string": "annotation_test", "key_float": 0.3, }, ), ), links=(trace_api.Link(context=other_context, attributes={"key_bool": True}), ), resource=trace.Resource({}), ) span1.start(start_time=start_times[0]) span1.set_attribute("key_bool", False) span1.set_attribute("key_string", "hello_world") span1.set_attribute("key_float", 111.22) span1.set_status(Status(StatusCode.OK)) span1.end(end_time=end_times[0]) span2 = trace._Span( name="test-span-2", context=parent_span_context, parent=None, resource=trace.Resource( attributes={"key_resource": "some_resource"}), ) span2.start(start_time=start_times[1]) span2.set_status(Status(StatusCode.ERROR, "Example description")) span2.end(end_time=end_times[1]) span3 = trace._Span( name="test-span-3", context=other_context, parent=None, resource=trace.Resource( attributes={"key_resource": "some_resource"}), ) span3.start(start_time=start_times[2]) span3.set_attribute("key_string", "hello_world") span3.end(end_time=end_times[2]) span4 = trace._Span( name="test-span-3", context=other_context, parent=None, resource=trace.Resource({}), instrumentation_info=InstrumentationInfo(name="name", version="version"), ) span4.start(start_time=start_times[3]) span4.end(end_time=end_times[3]) return [span1, span2, span3, span4]
def get_data_for_max_tag_length_test( max_tag_length: int, ) -> (trace._Span, Dict): start_time = 683647322 * 10**9 # in ns duration = 50 * 10**6 end_time = start_time + duration span = trace._Span( name=TEST_SERVICE_NAME, context=trace_api.SpanContext( 0x0E0C63257DE34C926F9EFCD03927272E, 0x04BF92DEEFC58C92, is_remote=False, trace_flags=TraceFlags(TraceFlags.SAMPLED), ), resource=trace.Resource({}), ) span.start(start_time=start_time) span.set_attribute("string1", "v" * 500) span.set_attribute("string2", "v" * 50) span.set_attribute("list1", ["a"] * 25) span.set_attribute("list2", ["a"] * 10) span.set_attribute("list3", [2] * 25) span.set_attribute("list4", [2] * 10) span.set_attribute("list5", [True] * 25) span.set_attribute("list6", [True] * 10) span.set_attribute("tuple1", ("a", ) * 25) span.set_attribute("tuple2", ("a", ) * 10) span.set_attribute("tuple3", (2, ) * 25) span.set_attribute("tuple4", (2, ) * 10) span.set_attribute("tuple5", (True, ) * 25) span.set_attribute("tuple6", (True, ) * 10) span.set_attribute("range1", range(0, 25)) span.set_attribute("range2", range(0, 10)) span.set_attribute("empty_list", []) span.set_attribute("none_list", ["hello", None, "world"]) span.end(end_time=end_time) expected_outputs = { 2: { "string1": "vv", "string2": "vv", "list1": "[]", "list2": "[]", "list3": "[]", "list4": "[]", "list5": "[]", "list6": "[]", "tuple1": "[]", "tuple2": "[]", "tuple3": "[]", "tuple4": "[]", "tuple5": "[]", "tuple6": "[]", "range1": "[]", "range2": "[]", "empty_list": "[]", "none_list": "[]", }, 5: { "string1": "vvvvv", "string2": "vvvvv", "list1": '["a"]', "list2": '["a"]', "list3": '["2"]', "list4": '["2"]', "list5": "[]", "list6": "[]", "tuple1": '["a"]', "tuple2": '["a"]', "tuple3": '["2"]', "tuple4": '["2"]', "tuple5": "[]", "tuple6": "[]", "range1": '["0"]', "range2": '["0"]', "empty_list": "[]", "none_list": "[]", }, 9: { "string1": "vvvvvvvvv", "string2": "vvvvvvvvv", "list1": '["a","a"]', "list2": '["a","a"]', "list3": '["2","2"]', "list4": '["2","2"]', "list5": '["true"]', "list6": '["true"]', "tuple1": '["a","a"]', "tuple2": '["a","a"]', "tuple3": '["2","2"]', "tuple4": '["2","2"]', "tuple5": '["true"]', "tuple6": '["true"]', "range1": '["0","1"]', "range2": '["0","1"]', "empty_list": "[]", "none_list": '["hello"]', }, 10: { "string1": "vvvvvvvvvv", "string2": "vvvvvvvvvv", "list1": '["a","a"]', "list2": '["a","a"]', "list3": '["2","2"]', "list4": '["2","2"]', "list5": '["true"]', "list6": '["true"]', "tuple1": '["a","a"]', "tuple2": '["a","a"]', "tuple3": '["2","2"]', "tuple4": '["2","2"]', "tuple5": '["true"]', "tuple6": '["true"]', "range1": '["0","1"]', "range2": '["0","1"]', "empty_list": "[]", "none_list": '["hello"]', }, 11: { "string1": "vvvvvvvvvvv", "string2": "vvvvvvvvvvv", "list1": '["a","a"]', "list2": '["a","a"]', "list3": '["2","2"]', "list4": '["2","2"]', "list5": '["true"]', "list6": '["true"]', "tuple1": '["a","a"]', "tuple2": '["a","a"]', "tuple3": '["2","2"]', "tuple4": '["2","2"]', "tuple5": '["true"]', "tuple6": '["true"]', "range1": '["0","1"]', "range2": '["0","1"]', "empty_list": "[]", "none_list": '["hello"]', }, 128: { "string1": "v" * 128, "string2": "v" * 50, "list1": '["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"]', "list2": '["a","a","a","a","a","a","a","a","a","a"]', "list3": '["2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2"]', "list4": '["2","2","2","2","2","2","2","2","2","2"]', "list5": '["true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true"]', "list6": '["true","true","true","true","true","true","true","true","true","true"]', "tuple1": '["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"]', "tuple2": '["a","a","a","a","a","a","a","a","a","a"]', "tuple3": '["2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2"]', "tuple4": '["2","2","2","2","2","2","2","2","2","2"]', "tuple5": '["true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true","true"]', "tuple6": '["true","true","true","true","true","true","true","true","true","true"]', "range1": '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"]', "range2": '["0","1","2","3","4","5","6","7","8","9"]', "empty_list": "[]", "none_list": '["hello",null,"world"]', }, } return span, expected_outputs[max_tag_length]