Reimplement the keys method in WSGI CarrierGetter (#379)

This commit is contained in:
Marcin Zaremba
2021-03-25 16:46:02 +01:00
committed by GitHub
parent 2f088f8de0
commit 795bc867ff
3 changed files with 25 additions and 2 deletions

View File

@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#364](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/364))
- `opentelemetry-propagator-ot-trace` Do not throw an exception when headers are not present
([#378](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/378))
- `opentelemetry-instrumentation-wsgi` Reimplement `keys` method to return actual keys from the carrier instead of an empty list.
([#379](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/379))
### Changed
- Rename `IdsGenerator` to `IdGenerator`

View File

@ -66,6 +66,8 @@ from opentelemetry.propagators.textmap import DictGetter
from opentelemetry.trace.status import Status, StatusCode
_HTTP_VERSION_PREFIX = "HTTP/"
_CARRIER_KEY_PREFIX = "HTTP_"
_CARRIER_KEY_PREFIX_LEN = len(_CARRIER_KEY_PREFIX)
class CarrierGetter(DictGetter):
@ -89,7 +91,11 @@ class CarrierGetter(DictGetter):
return None
def keys(self, carrier):
return []
return [
key[_CARRIER_KEY_PREFIX_LEN:].lower().replace("_", "-")
for key in carrier
if key.startswith(_CARRIER_KEY_PREFIX)
]
carrier_getter = CarrierGetter()

View File

@ -22,15 +22,30 @@ class TestCarrierGetter(TestCase):
getter = CarrierGetter()
carrier = {}
val = getter.get(carrier, "test")
self.assertIsNone(val)
def test_get_(self):
def test_get(self):
getter = CarrierGetter()
carrier = {"HTTP_TEST_KEY": "val"}
val = getter.get(carrier, "test-key")
self.assertEqual(val, ["val"])
def test_keys(self):
getter = CarrierGetter()
keys = getter.keys(
{
"HTTP_TEST_KEY": "val",
"HTTP_OTHER_KEY": 42,
"NON_HTTP_KEY": "val",
}
)
self.assertEqual(keys, ["test-key", "other-key"])
def test_keys_empty(self):
getter = CarrierGetter()
keys = getter.keys({})
self.assertEqual(keys, [])