Skip to content

Commit

Permalink
Reimplement the keys method in WSGI CarrierGetter (#379)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcinzaremba committed Mar 25, 2021
1 parent 2f088f8 commit 795bc86
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ def hello():
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):
Expand All @@ -89,7 +91,11 @@ def get(
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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,30 @@ def test_get_none(self):
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, [])

0 comments on commit 795bc86

Please sign in to comment.