|
3 | 3 | import time |
4 | 4 |
|
5 | 5 | import mock |
| 6 | +import pytest |
6 | 7 |
|
7 | 8 | from ddtrace.ext import SpanTypes |
8 | 9 | from ddtrace.internal.runtime.constants import DEFAULT_RUNTIME_METRICS |
@@ -69,6 +70,64 @@ def filter_only_env_tags(tags): |
69 | 70 | assert tags == [("env", "staging.dog")] |
70 | 71 |
|
71 | 72 |
|
| 73 | +@pytest.mark.subprocess(env={}) |
| 74 | +def test_runtime_tags_empty(): |
| 75 | + from ddtrace.internal.runtime.runtime_metrics import RuntimeTags |
| 76 | + |
| 77 | + tags = list(RuntimeTags()) |
| 78 | + assert len(tags) == 4 |
| 79 | + |
| 80 | + tags = dict(tags) |
| 81 | + assert set(tags.keys()) == set(["lang", "lang_interpreter", "lang_version", "tracer_version"]) |
| 82 | + |
| 83 | + |
| 84 | +@pytest.mark.subprocess(env={"DD_SERVICE": "my-service", "DD_ENV": "test-env", "DD_VERSION": "1.2.3"}) |
| 85 | +def test_runtime_tags_usm(): |
| 86 | + from ddtrace.internal.runtime.runtime_metrics import RuntimeTags |
| 87 | + |
| 88 | + tags = list(RuntimeTags()) |
| 89 | + assert len(tags) == 7, tags |
| 90 | + |
| 91 | + tags = dict(tags) |
| 92 | + assert set(tags.keys()) == set( |
| 93 | + ["lang", "lang_interpreter", "lang_version", "tracer_version", "service", "version", "env"] |
| 94 | + ) |
| 95 | + assert tags["service"] == "my-service" |
| 96 | + assert tags["env"] == "test-env" |
| 97 | + assert tags["version"] == "1.2.3" |
| 98 | + |
| 99 | + |
| 100 | +@pytest.mark.subprocess(env={"DD_TAGS": "version:1.2.3,custom:tag,test:key", "DD_VERSION": "4.5.6"}) |
| 101 | +def test_runtime_tags_dd_tags(): |
| 102 | + from ddtrace.internal.runtime.runtime_metrics import RuntimeTags |
| 103 | + |
| 104 | + tags = list(RuntimeTags()) |
| 105 | + assert len(tags) == 7, tags |
| 106 | + |
| 107 | + tags = dict(tags) |
| 108 | + assert set(tags.keys()) == set( |
| 109 | + ["lang", "lang_interpreter", "lang_version", "tracer_version", "version", "custom", "test"] |
| 110 | + ) |
| 111 | + assert tags["custom"] == "tag" |
| 112 | + assert tags["test"] == "key" |
| 113 | + assert tags["version"] == "4.5.6" |
| 114 | + |
| 115 | + |
| 116 | +@pytest.mark.subprocess() |
| 117 | +def test_runtime_tags_manual_tracer_tags(): |
| 118 | + from ddtrace import tracer |
| 119 | + from ddtrace.internal.runtime.runtime_metrics import RuntimeTags |
| 120 | + |
| 121 | + tracer.set_tags({"manual": "tag"}) |
| 122 | + |
| 123 | + tags = list(RuntimeTags()) |
| 124 | + assert len(tags) == 5, tags |
| 125 | + |
| 126 | + tags = dict(tags) |
| 127 | + assert set(tags.keys()) == set(["lang", "lang_interpreter", "lang_version", "tracer_version", "manual"]) |
| 128 | + assert tags["manual"] == "tag" |
| 129 | + |
| 130 | + |
72 | 131 | class TestRuntimeMetrics(BaseTestCase): |
73 | 132 | def test_all_metrics(self): |
74 | 133 | metrics = set([k for (k, v) in RuntimeMetrics()]) |
|
0 commit comments