def test_set_flattened_tags_keys(): """Ensure expected keys in flattened dictionary""" d = dict(A=1, B=2, C=dict(A=3, B=4, C=dict(A=5, B=6))) e = dict(A=1, B=2, C_A=3, C_B=4, C_C_A=5, C_C_B=6) span = Span("test") trace_utils.set_flattened_tags(span, d.items(), sep="_") assert span.get_metrics() == e
def test_set_flattened_tags_exclude_policy(): """Ensure expected keys in flattened dictionary with exclusion set""" d = dict(A=1, B=2, C=dict(A=3, B=4, C=dict(A=5, B=6))) e = dict(A=1, B=2, C_B=4) span = Span("test") trace_utils.set_flattened_tags( span, d.items(), sep="_", exclude_policy=lambda tag: tag in {"C_A", "C_C"}) assert span.get_metrics() == e
def add_span_arg_tags( span, # type: Span endpoint_name, # type: str args, # type: Tuple[Any] args_names, # type: Tuple[str] args_traced, # type: Set[str] ): # type: (...) -> None if endpoint_name not in EXCLUDED_ENDPOINT: exclude_set = EXCLUDED_ENDPOINT_TAGS.get(endpoint_name, frozenset()) # type: FrozenSet[str] set_flattened_tags( span, items=((name, value) for (name, value) in zip(args_names, args) if name in args_traced), exclude_policy=lambda tag: tag in exclude_set or tag.endswith("Body"), processor=truncate_arg_value, )
def test_set_flattened_tags_is_flat(items): """Ensure that flattening of a nested dict results in a normalized, 1-level dict""" span = Span("test") trace_utils.set_flattened_tags(span, items) assert isinstance(span.get_tags(), dict) assert not any(isinstance(v, dict) for v in span.get_tags().values())