mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-28 20:52:57 +08:00
Reimplement the keys method in WSGI CarrierGetter (#379)
This commit is contained in:
@ -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`
|
||||
|
@ -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()
|
||||
|
@ -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, [])
|
||||
|
Reference in New Issue
Block a user