Skip to content

Commit 795bc86

Browse files
Reimplement the keys method in WSGI CarrierGetter (#379)
1 parent 2f088f8 commit 795bc86

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

Diff for: CHANGELOG.md

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

1315
### Changed
1416
- Rename `IdsGenerator` to `IdGenerator`

Diff for: instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ def hello():
6666
from opentelemetry.trace.status import Status, StatusCode
6767

6868
_HTTP_VERSION_PREFIX = "HTTP/"
69+
_CARRIER_KEY_PREFIX = "HTTP_"
70+
_CARRIER_KEY_PREFIX_LEN = len(_CARRIER_KEY_PREFIX)
6971

7072

7173
class CarrierGetter(DictGetter):
@@ -89,7 +91,11 @@ def get(
8991
return None
9092

9193
def keys(self, carrier):
92-
return []
94+
return [
95+
key[_CARRIER_KEY_PREFIX_LEN:].lower().replace("_", "-")
96+
for key in carrier
97+
if key.startswith(_CARRIER_KEY_PREFIX)
98+
]
9399

94100

95101
carrier_getter = CarrierGetter()

Diff for: instrumentation/opentelemetry-instrumentation-wsgi/tests/test_getter.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,30 @@ def test_get_none(self):
2222
getter = CarrierGetter()
2323
carrier = {}
2424
val = getter.get(carrier, "test")
25+
2526
self.assertIsNone(val)
2627

27-
def test_get_(self):
28+
def test_get(self):
2829
getter = CarrierGetter()
2930
carrier = {"HTTP_TEST_KEY": "val"}
3031
val = getter.get(carrier, "test-key")
32+
3133
self.assertEqual(val, ["val"])
3234

3335
def test_keys(self):
36+
getter = CarrierGetter()
37+
keys = getter.keys(
38+
{
39+
"HTTP_TEST_KEY": "val",
40+
"HTTP_OTHER_KEY": 42,
41+
"NON_HTTP_KEY": "val",
42+
}
43+
)
44+
45+
self.assertEqual(keys, ["test-key", "other-key"])
46+
47+
def test_keys_empty(self):
3448
getter = CarrierGetter()
3549
keys = getter.keys({})
50+
3651
self.assertEqual(keys, [])

0 commit comments

Comments
 (0)