Files
chromium_depot_tools/infra_lib/telemetry/anonymization_unittest.py
Struan Shrimpton 5bd66c3869 Add exporter to the telemetry lib
This translates the spans into protos and does the actual publishing to
the Clearcut endpoint using cros build's _LOG_SOURCE so it will be
routed to their Sawmill. The service_name on the trace is what will be
used to store our traces in an F1 table accessible by us.

Bug: 326277821
Change-Id: Id1af3b7d5cffa6d9bfb86c34185e4247e85f9619
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5888844
Reviewed-by: Terrence Reilly <treilly@google.com>
Commit-Queue: Struan Shrimpton <sshrimp@google.com>
2024-09-27 16:27:47 +00:00

67 lines
2.0 KiB
Python

# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test the config and anonymizer utils."""
import getpass
import re
import pytest
from .proto import trace_span_pb2
from . import anonymization
def test_anonymizing_filter_to_redact_info_from_msg() -> None:
"""Test AnonymizingFilter to apply the passed anonymizer to msg."""
msg = trace_span_pb2.TraceSpan()
msg.name = "log-user-user1234"
anonymizer = anonymization.Anonymizer([(re.escape("user1234"), "<user>")])
f = anonymization.AnonymizingFilter(anonymizer)
filtered_msg = f(msg)
assert filtered_msg.name == "log-user-<user>"
def test_default_anonymizer_to_remove_username_from_path(monkeypatch) -> None:
"""Test that default Anonymizer redacts username."""
monkeypatch.setattr(getpass, "getuser", lambda: "user")
a = anonymization.Anonymizer()
output = a.apply("/home/user/docs")
assert output == "/home/<user>/docs"
def test_anonymizer_to_apply_passed_replacements() -> None:
"""Test anonymizer to apply the requested replacements."""
text = "/home/%s/docs" % getpass.getuser()
replacements = [(re.escape(getpass.getuser()), "<user>")]
a = anonymization.Anonymizer(replacements=replacements)
output = a.apply(text)
assert output == "/home/<user>/docs"
def test_anonymizer_to_apply_multiple_replacements() -> None:
"""Test anonymizer to apply the passed replacements in order."""
replacements = [(re.escape("abc"), "x"), (re.escape("xyz"), "t")]
text = "hello abcd. how is xyz. abcyz"
a = anonymization.Anonymizer(replacements=replacements)
output = a.apply(text)
assert output == "hello xd. how is t. t"
def test_default_anonymizer_skip_root(monkeypatch) -> None:
"""Test the anonymizer skips the root user."""
monkeypatch.setattr(getpass, "getuser", lambda: "root")
text = "/root/home service.sysroot.SetupBoard"
a = anonymization.Anonymizer()
output = a.apply(text)
assert output == text