Skip to content

Commit 695c345

Browse files
committed
ISSUE-3317: Remove maximum version constraint on starlette, by fixing unit tests. Fixed some warnings in unit tests.
1 parent da661f6 commit 695c345

File tree

4 files changed

+28
-33
lines changed

4 files changed

+28
-33
lines changed

instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ dependencies = [
3434
]
3535

3636
[project.optional-dependencies]
37-
instruments = ["starlette >= 0.13, <0.15"]
37+
instruments = ["starlette >= 0.13"]
3838

3939
[project.entry-points.opentelemetry_instrumentor]
4040
starlette = "opentelemetry.instrumentation.starlette:StarletteInstrumentor"

instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ def __init__(self, *args: Any, **kwargs: Any):
332332
_InstrumentedStarlette._instrumented_starlette_apps.add(self)
333333

334334
def __del__(self):
335-
_InstrumentedStarlette._instrumented_starlette_apps.remove(self)
335+
_InstrumentedStarlette._instrumented_starlette_apps.discard(self)
336336

337337

338338
def _get_route_details(scope: dict[str, Any]) -> str | None:

instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/package.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
# limitations under the License.
1414

1515

16-
_instruments = ("starlette >= 0.13, <0.15",)
16+
_instruments = ("starlette >= 0.13",)
1717

1818
_supports_metrics = True

instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from starlette import applications
2020
from starlette.responses import PlainTextResponse
21-
from starlette.routing import Mount, Route
21+
from starlette.routing import Mount, Route, WebSocketRoute
2222
from starlette.testclient import TestClient
2323
from starlette.websockets import WebSocket
2424

@@ -621,10 +621,7 @@ def tearDown(self) -> None:
621621

622622
@staticmethod
623623
def create_starlette_app():
624-
app = applications.Starlette()
625-
626-
@app.route("/foobar")
627-
def _(request):
624+
def foobar(request):
628625
return PlainTextResponse(
629626
content="hi",
630627
headers={
@@ -636,8 +633,7 @@ def _(request):
636633
},
637634
)
638635

639-
@app.websocket_route("/foobar_web")
640-
async def _(websocket: WebSocket) -> None:
636+
async def foobar_web(websocket: WebSocket) -> None:
641637
message = await websocket.receive()
642638
if message.get("type") == "websocket.connect":
643639
await websocket.send(
@@ -663,21 +659,23 @@ async def _(websocket: WebSocket) -> None:
663659
if message.get("type") == "websocket.disconnect":
664660
pass
665661

666-
return app
662+
return applications.Starlette(
663+
routes=[
664+
Route("/foobar", foobar),
665+
WebSocketRoute("/foobar_web", foobar_web),
666+
]
667+
)
667668

668669

670+
@patch.dict(
671+
"os.environ",
672+
{
673+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
674+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
675+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
676+
},
677+
)
669678
class TestHTTPAppWithCustomHeaders(TestBaseWithCustomHeaders):
670-
@patch.dict(
671-
"os.environ",
672-
{
673-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
674-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
675-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
676-
},
677-
)
678-
def setUp(self) -> None:
679-
super().setUp()
680-
681679
def test_custom_request_headers_in_span_attributes(self):
682680
expected = {
683681
"http.request.header.custom_test_header_1": (
@@ -792,18 +790,15 @@ def test_custom_response_headers_not_in_span_attributes(self):
792790
self.assertNotIn(key, server_span.attributes)
793791

794792

793+
@patch.dict(
794+
"os.environ",
795+
{
796+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
797+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
798+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
799+
},
800+
)
795801
class TestWebSocketAppWithCustomHeaders(TestBaseWithCustomHeaders):
796-
@patch.dict(
797-
"os.environ",
798-
{
799-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
800-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
801-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
802-
},
803-
)
804-
def setUp(self) -> None:
805-
super().setUp()
806-
807802
def test_custom_request_headers_in_span_attributes(self):
808803
expected = {
809804
"http.request.header.custom_test_header_1": (

0 commit comments

Comments
 (0)