Skip to content

Commit 67a7d46

Browse files
committed
chore(telemetry): add process tags
1 parent 7cf4143 commit 67a7d46

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

ddtrace/internal/telemetry/data.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def _get_application(key):
5656
This helper packs and unpacks get_application arguments to support caching.
5757
Cached() annotation only supports functions with one argument
5858
"""
59+
# avoid circular dependency
60+
from ddtrace.internal.process_tags import process_tags
61+
5962
service, version, env = key
6063

6164
return {
@@ -67,6 +70,7 @@ def _get_application(key):
6770
"tracer_version": get_version(),
6871
"runtime_name": platform.python_implementation(),
6972
"runtime_version": _format_version_info(sys.implementation.version),
73+
"process_tags": process_tags,
7074
}
7175

7276

tests/telemetry/test_data.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import ddtrace
88
from ddtrace.internal.constants import DEFAULT_SERVICE_NAME
9+
from ddtrace.internal.process_tags import _process_tag_reload
910
from ddtrace.internal.runtime.container import CGroupInfo
1011
from ddtrace.internal.telemetry.data import _format_version_info
1112
from ddtrace.internal.telemetry.data import _get_container_id
@@ -43,6 +44,36 @@ def test_get_application_with_values():
4344
assert application["env"] == "staging"
4445

4546

47+
def test_get_application_with_process_tags():
48+
from ddtrace.internal.process_tags.constants import ENTRYPOINT_BASEDIR_TAG
49+
from ddtrace.internal.process_tags.constants import ENTRYPOINT_NAME_TAG
50+
from ddtrace.internal.process_tags.constants import ENTRYPOINT_TYPE_SCRIPT
51+
from ddtrace.internal.process_tags.constants import ENTRYPOINT_TYPE_TAG
52+
from ddtrace.internal.process_tags.constants import ENTRYPOINT_WORKDIR_TAG
53+
from ddtrace.settings._config import config
54+
55+
with mock.patch("sys.argv", ["/path/to/test_script.py"]), mock.patch("os.getcwd", return_value="/path/to/workdir"):
56+
try:
57+
config._process_tags_enabled = True
58+
_process_tag_reload()
59+
60+
application = get_application("", "", "")
61+
assert "process_tags" in application
62+
63+
process_tags = application["process_tags"]
64+
65+
expected_raw = (
66+
f"{ENTRYPOINT_BASEDIR_TAG}:to,"
67+
f"{ENTRYPOINT_NAME_TAG}:test_script,"
68+
f"{ENTRYPOINT_TYPE_TAG}:{ENTRYPOINT_TYPE_SCRIPT},"
69+
f"{ENTRYPOINT_WORKDIR_TAG}:workdir"
70+
)
71+
assert process_tags == expected_raw
72+
finally:
73+
config._process_tags_enabled = False
74+
_process_tag_reload()
75+
76+
4677
def test_application_with_setenv(run_python_code_in_subprocess, monkeypatch):
4778
"""
4879
validates the return value of get_application when DD_SERVICE, DD_VERSION, and DD_ENV environment variables are set

0 commit comments

Comments
 (0)