def __init__( self, name: str, context: trace_api.SpanContext, parent: Optional[trace_api.SpanContext] = None, sampler: Optional[sampling.Sampler] = None, trace_config: None = None, # TODO resource: Resource = Resource.create({}), attributes: types.Attributes = None, events: Sequence[Event] = None, links: Sequence[trace_api.Link] = (), kind: trace_api.SpanKind = trace_api.SpanKind.INTERNAL, span_processor: SpanProcessor = SpanProcessor(), instrumentation_info: InstrumentationInfo = None, record_exception: bool = True, set_status_on_exception: bool = True, ) -> None: self.name = name self.context = context self.parent = parent self.sampler = sampler self.trace_config = trace_config self.resource = resource self.kind = kind self._record_exception = record_exception self._set_status_on_exception = set_status_on_exception self.span_processor = span_processor self.status = Status(StatusCode.UNSET) self._lock = threading.Lock() _filter_attribute_values(attributes) if not attributes: self.attributes = self._new_attributes() else: self.attributes = BoundedDict.from_map( SPAN_ATTRIBUTE_COUNT_LIMIT, attributes ) self.events = self._new_events() if events: for event in events: _filter_attribute_values(event.attributes) # pylint: disable=protected-access event._attributes = _create_immutable_attributes( event.attributes ) self.events.append(event) if links is None: self.links = self._new_links() else: self.links = BoundedList.from_seq(SPAN_LINK_COUNT_LIMIT, links) self._end_time = None # type: Optional[int] self._start_time = None # type: Optional[int] self.instrumentation_info = instrumentation_info
def test_from_map(self): dic_len = len(self.base) base_copy = collections.OrderedDict(self.base) bdict = BoundedDict.from_map(dic_len, base_copy) self.assertEqual(len(bdict), dic_len) # modify base_copy and test that bdict is not changed base_copy["name"] = "Bruno" base_copy["age"] = 3 for key in self.base: self.assertEqual(bdict[key], self.base[key]) # test that iter yields the correct number of elements self.assertEqual(len(tuple(bdict)), dic_len) # map too big with self.assertRaises(ValueError): BoundedDict.from_map(dic_len / 2, self.base)
def __init__( self, name: str, context: trace_api.SpanContext, parent: Optional[trace_api.SpanContext] = None, sampler: Optional[sampling.Sampler] = None, trace_config: None = None, # TODO resource: Resource = Resource.create_empty(), attributes: types.Attributes = None, # TODO events: Sequence[Event] = None, # TODO links: Sequence[trace_api.Link] = (), kind: trace_api.SpanKind = trace_api.SpanKind.INTERNAL, span_processor: SpanProcessor = SpanProcessor(), instrumentation_info: InstrumentationInfo = None, set_status_on_exception: bool = True, ) -> None: self.name = name self.context = context self.parent = parent self.sampler = sampler self.trace_config = trace_config self.resource = resource self.kind = kind self._set_status_on_exception = set_status_on_exception self.span_processor = span_processor self.status = None self._lock = threading.Lock() self._filter_attribute_values(attributes) if not attributes: self.attributes = Span._empty_attributes else: self.attributes = BoundedDict.from_map(MAX_NUM_ATTRIBUTES, attributes) if events is None: self.events = Span._empty_events else: self.events = BoundedList(MAX_NUM_EVENTS) for event in events: self._filter_attribute_values(event.attributes) self.events.append(event) if links is None: self.links = Span._empty_links else: self.links = BoundedList.from_seq(MAX_NUM_LINKS, links) self._end_time = None # type: Optional[int] self._start_time = None # type: Optional[int] self.instrumentation_info = instrumentation_info
def __init__( self, name: str, context: trace_api.SpanContext, parent: trace_api.ParentSpan = None, sampler: Optional[sampling.Sampler] = None, trace_config: None = None, # TODO resource: None = None, # TODO attributes: types.Attributes = None, # TODO events: Sequence[trace_api.Event] = None, # TODO links: Sequence[trace_api.Link] = (), kind: trace_api.SpanKind = trace_api.SpanKind.INTERNAL, span_processor: SpanProcessor = SpanProcessor(), ) -> None: self.name = name self.context = context self.parent = parent self.sampler = sampler self.trace_config = trace_config self.resource = resource self.kind = kind self.span_processor = span_processor self.status = trace_api.Status() self._lock = threading.Lock() if attributes is None: self.attributes = Span.empty_attributes else: self.attributes = BoundedDict.from_map( MAX_NUM_ATTRIBUTES, attributes ) if events is None: self.events = Span.empty_events else: self.events = BoundedList.from_seq(MAX_NUM_EVENTS, events) if links is None: self.links = Span.empty_links else: self.links = BoundedList.from_seq(MAX_NUM_LINKS, links) self.end_time = None # type: Optional[int] self.start_time = None # type: Optional[int]