diff --git a/datadog_checks_base/datadog_checks/base/utils/metadata/core.py b/datadog_checks_base/datadog_checks/base/utils/metadata/core.py index ba105b510a7c5..bdada23ef9d11 100644 --- a/datadog_checks_base/datadog_checks/base/utils/metadata/core.py +++ b/datadog_checks_base/datadog_checks/base/utils/metadata/core.py @@ -7,6 +7,7 @@ from six import iteritems +from ..common import to_string from .constants import DEFAULT_BLACKLIST from .utils import is_primitive from .version import parse_version @@ -32,7 +33,7 @@ def __init__(self, check_name, check_id, logger=None, metadata_transformers=None self.metadata_transformers.update(metadata_transformers) def submit_raw(self, name, value): - datadog_agent.set_check_metadata(self.check_id, name, value) + datadog_agent.set_check_metadata(self.check_id, to_string(name), to_string(value)) def submit(self, name, value, options): transformer = self.metadata_transformers.get(name) diff --git a/datadog_checks_base/tests/test_metadata.py b/datadog_checks_base/tests/test_metadata.py index 29077d7003bc1..a0c1b2e168ae2 100644 --- a/datadog_checks_base/tests/test_metadata.py +++ b/datadog_checks_base/tests/test_metadata.py @@ -8,8 +8,9 @@ import mock import pytest +from six import PY3 -from datadog_checks.base import AgentCheck +from datadog_checks.base import AgentCheck, ensure_bytes, ensure_unicode pytestmark = pytest.mark.metadata @@ -55,6 +56,24 @@ class NewAgentCheck(AgentCheck): m.assert_called_once_with('test:123', 'foo', 'rab') + def test_encoding(self): + check = AgentCheck('test', {}, [{}]) + check.check_id = 'test:123' + if PY3: + constructor = ensure_bytes + finalizer = ensure_unicode + else: + constructor = ensure_unicode + finalizer = ensure_bytes + + name = constructor(u'nam\u00E9') + value = constructor(u'valu\u00E9') + + with mock.patch(SET_CHECK_METADATA_METHOD) as m: + check.set_metadata(name, value) + + m.assert_called_once_with('test:123', finalizer(name), finalizer(value)) + class TestVersion: def test_override_allowed(self):