Skip to content

Commit f52852c

Browse files
jdKyle-Verhoog
andcommitted
fix(profiling/http): make sure tags are UTF-8 encoded (#1393)
Fixes #1392 Co-authored-by: Kyle Verhoog <[email protected]>
1 parent 3466319 commit f52852c

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

ddtrace/profiling/exporter/http.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,11 @@ def _get_tags(service):
140140

141141
version = os.environ.get("DD_VERSION")
142142
if version:
143-
tags["version"] = version
143+
tags["version"] = version.encode("utf-8")
144144

145145
env = os.environ.get("DD_ENV")
146146
if env:
147-
tags["env"] = env
147+
tags["env"] = env.encode("utf-8")
148148

149149
user_tags = os.getenv("DD_PROFILING_TAGS")
150150
if user_tags:

tests/profiling/exporter/test_http.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,15 @@ def test_default_from_env(monkeypatch):
218218
assert exp.service_name == "myservice"
219219

220220

221+
def _check_tags_types(tags):
222+
for k, v in tags.items():
223+
assert isinstance(k, str)
224+
assert isinstance(v, bytes)
225+
226+
221227
def test_get_tags():
222228
tags = http.PprofHTTPExporter()._get_tags("foobar")
229+
_check_tags_types(tags)
223230
assert len(tags) == 7
224231
assert tags["service"] == b"foobar"
225232
assert len(tags["host"])
@@ -233,6 +240,7 @@ def test_get_tags():
233240
def test_get_malformed(monkeypatch):
234241
monkeypatch.setenv("DD_PROFILING_TAGS", "mytagfoobar")
235242
tags = http.PprofHTTPExporter()._get_tags("foobar")
243+
_check_tags_types(tags)
236244
assert len(tags) == 7
237245
assert tags["service"] == b"foobar"
238246
assert len(tags["host"])
@@ -243,6 +251,7 @@ def test_get_malformed(monkeypatch):
243251

244252
monkeypatch.setenv("DD_PROFILING_TAGS", "mytagfoobar,")
245253
tags = http.PprofHTTPExporter()._get_tags("foobar")
254+
_check_tags_types(tags)
246255
assert len(tags) == 7
247256
assert tags["service"] == b"foobar"
248257
assert len(tags["host"])
@@ -253,6 +262,7 @@ def test_get_malformed(monkeypatch):
253262

254263
monkeypatch.setenv("DD_PROFILING_TAGS", ",")
255264
tags = http.PprofHTTPExporter()._get_tags("foobar")
265+
_check_tags_types(tags)
256266
assert len(tags) == 7
257267
assert tags["service"] == b"foobar"
258268
assert len(tags["host"])
@@ -263,6 +273,7 @@ def test_get_malformed(monkeypatch):
263273

264274
monkeypatch.setenv("DD_PROFILING_TAGS", "foo:bar,")
265275
tags = http.PprofHTTPExporter()._get_tags("foobar")
276+
_check_tags_types(tags)
266277
assert len(tags) == 8
267278
assert tags["service"] == b"foobar"
268279
assert len(tags["host"])
@@ -276,6 +287,7 @@ def test_get_malformed(monkeypatch):
276287
def test_get_tags_override(monkeypatch):
277288
monkeypatch.setenv("DD_PROFILING_TAGS", "mytag:foobar")
278289
tags = http.PprofHTTPExporter()._get_tags("foobar")
290+
_check_tags_types(tags)
279291
assert len(tags) == 8
280292
assert tags["service"] == b"foobar"
281293
assert len(tags["host"])
@@ -288,6 +300,7 @@ def test_get_tags_override(monkeypatch):
288300

289301
monkeypatch.setenv("DD_PROFILING_TAGS", "mytag:foobar,author:jd")
290302
tags = http.PprofHTTPExporter()._get_tags("foobar")
303+
_check_tags_types(tags)
291304
assert len(tags) == 9
292305
assert tags["service"] == b"foobar"
293306
assert len(tags["host"])
@@ -301,6 +314,7 @@ def test_get_tags_override(monkeypatch):
301314

302315
monkeypatch.setenv("DD_PROFILING_TAGS", "")
303316
tags = http.PprofHTTPExporter()._get_tags("foobar")
317+
_check_tags_types(tags)
304318
assert len(tags) == 7
305319
assert tags["service"] == b"foobar"
306320
assert len(tags["host"])
@@ -312,6 +326,7 @@ def test_get_tags_override(monkeypatch):
312326

313327
monkeypatch.setenv("DD_PROFILING_TAGS", "foobar:baz,service:mycustomservice")
314328
tags = http.PprofHTTPExporter()._get_tags("foobar")
329+
_check_tags_types(tags)
315330
assert len(tags) == 8
316331
assert tags["service"] == b"mycustomservice"
317332
assert len(tags["host"])
@@ -324,6 +339,7 @@ def test_get_tags_override(monkeypatch):
324339

325340
monkeypatch.setenv("DD_PROFILING_TAGS", "foobar:baz,service:🤣")
326341
tags = http.PprofHTTPExporter()._get_tags("foobar")
342+
_check_tags_types(tags)
327343
assert len(tags) == 8
328344
assert tags["service"] == u"🤣".encode("utf-8")
329345
assert len(tags["host"])
@@ -336,6 +352,7 @@ def test_get_tags_override(monkeypatch):
336352

337353
monkeypatch.setenv("DD_VERSION", "123")
338354
tags = http.PprofHTTPExporter()._get_tags("foobar")
355+
_check_tags_types(tags)
339356
assert len(tags) == 9
340357
assert tags["service"] == u"🤣".encode("utf-8")
341358
assert len(tags["host"])
@@ -344,11 +361,12 @@ def test_get_tags_override(monkeypatch):
344361
assert tags["runtime"] == b"CPython"
345362
assert tags["foobar"] == b"baz"
346363
assert tags["profiler_version"] == ddtrace.__version__.encode("utf-8")
347-
assert tags["version"] == "123"
364+
assert tags["version"] == b"123"
348365
assert "env" not in tags
349366

350367
monkeypatch.setenv("DD_ENV", "prod")
351368
tags = http.PprofHTTPExporter()._get_tags("foobar")
369+
_check_tags_types(tags)
352370
assert len(tags) == 10
353371
assert tags["service"] == u"🤣".encode("utf-8")
354372
assert len(tags["host"])
@@ -357,5 +375,6 @@ def test_get_tags_override(monkeypatch):
357375
assert tags["runtime"] == b"CPython"
358376
assert tags["foobar"] == b"baz"
359377
assert tags["profiler_version"] == ddtrace.__version__.encode("utf-8")
360-
assert tags["version"] == "123"
361-
assert tags["env"] == "prod"
378+
assert tags["version"] == b"123"
379+
assert tags["env"] == b"prod"
380+

0 commit comments

Comments
 (0)