mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +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))
|
([#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
|
- `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))
|
([#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
|
### Changed
|
||||||
- Rename `IdsGenerator` to `IdGenerator`
|
- Rename `IdsGenerator` to `IdGenerator`
|
||||||
|
@ -66,6 +66,8 @@ from opentelemetry.propagators.textmap import DictGetter
|
|||||||
from opentelemetry.trace.status import Status, StatusCode
|
from opentelemetry.trace.status import Status, StatusCode
|
||||||
|
|
||||||
_HTTP_VERSION_PREFIX = "HTTP/"
|
_HTTP_VERSION_PREFIX = "HTTP/"
|
||||||
|
_CARRIER_KEY_PREFIX = "HTTP_"
|
||||||
|
_CARRIER_KEY_PREFIX_LEN = len(_CARRIER_KEY_PREFIX)
|
||||||
|
|
||||||
|
|
||||||
class CarrierGetter(DictGetter):
|
class CarrierGetter(DictGetter):
|
||||||
@ -89,7 +91,11 @@ class CarrierGetter(DictGetter):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def keys(self, carrier):
|
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()
|
carrier_getter = CarrierGetter()
|
||||||
|
@ -22,15 +22,30 @@ class TestCarrierGetter(TestCase):
|
|||||||
getter = CarrierGetter()
|
getter = CarrierGetter()
|
||||||
carrier = {}
|
carrier = {}
|
||||||
val = getter.get(carrier, "test")
|
val = getter.get(carrier, "test")
|
||||||
|
|
||||||
self.assertIsNone(val)
|
self.assertIsNone(val)
|
||||||
|
|
||||||
def test_get_(self):
|
def test_get(self):
|
||||||
getter = CarrierGetter()
|
getter = CarrierGetter()
|
||||||
carrier = {"HTTP_TEST_KEY": "val"}
|
carrier = {"HTTP_TEST_KEY": "val"}
|
||||||
val = getter.get(carrier, "test-key")
|
val = getter.get(carrier, "test-key")
|
||||||
|
|
||||||
self.assertEqual(val, ["val"])
|
self.assertEqual(val, ["val"])
|
||||||
|
|
||||||
def test_keys(self):
|
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()
|
getter = CarrierGetter()
|
||||||
keys = getter.keys({})
|
keys = getter.keys({})
|
||||||
|
|
||||||
self.assertEqual(keys, [])
|
self.assertEqual(keys, [])
|
||||||
|
Reference in New Issue
Block a user