Skip to content

Commit 7cab7b1

Browse files
authored
fix(otlp/http): return expected protobuf (#254)
* fix(otlp/http): return expected protobuf * rn
1 parent 1a02c5a commit 7cab7b1

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

ddapm_test_agent/agent.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
from grpc import aio as grpc_aio
4040
from msgpack.exceptions import ExtraData as MsgPackExtraDataException
4141
from multidict import CIMultiDict
42+
from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ExportLogsServiceResponse
4243
from opentelemetry.proto.collector.logs.v1.logs_service_pb2_grpc import add_LogsServiceServicer_to_server
44+
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ExportMetricsServiceResponse
4345
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2_grpc import add_MetricsServiceServicer_to_server
4446

4547
from . import _get_version
@@ -724,7 +726,9 @@ async def handle_v1_logs(self, request: Request) -> web.Response:
724726
num_resource_logs,
725727
total_log_records,
726728
)
727-
return web.HTTPOk()
729+
return web.Response(
730+
body=ExportLogsServiceResponse().SerializeToString(), status=200, content_type="application/x-protobuf"
731+
)
728732

729733
async def handle_v1_metrics(self, request: Request) -> web.Response:
730734
metrics_data = self._decode_v1_metrics(request)
@@ -739,7 +743,9 @@ async def handle_v1_metrics(self, request: Request) -> web.Response:
739743
num_resource_metrics,
740744
total_metrics,
741745
)
742-
return web.HTTPOk()
746+
return web.Response(
747+
body=ExportMetricsServiceResponse().SerializeToString(), status=200, content_type="application/x-protobuf"
748+
)
743749

744750
async def handle_v07_remoteconfig(self, request: Request) -> web.Response:
745751
"""Emulates Remote Config endpoint: /v0.7/config"""
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
fixes:
3+
- |
4+
otlp: Fix OTLP endpoint response format for logs and metrics to return proper protobuf content type and serialized response body for HTTP requests.

tests/test_logs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from google.protobuf.json_format import MessageToDict
55
from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ExportLogsServiceRequest
6+
from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ExportLogsServiceResponse
67
from opentelemetry.proto.common.v1.common_pb2 import AnyValue
78
from opentelemetry.proto.common.v1.common_pb2 import KeyValue
89
from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord
@@ -86,6 +87,9 @@ def otlp_logs_json(otlp_logs_protobuf):
8687
async def test_logs_endpoint_basic_http(testagent, otlp_http_url, otlp_logs_string, loop):
8788
resp = await testagent.post(f"{otlp_http_url}{LOGS_ENDPOINT}", headers=PROTOBUF_HEADERS, data=otlp_logs_string)
8889
assert resp.status == 200
90+
assert resp.content_type == "application/x-protobuf"
91+
body = await resp.read()
92+
assert body == ExportLogsServiceResponse().SerializeToString()
8993

9094

9195
@pytest.mark.parametrize(

tests/test_metrics.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from google.protobuf.json_format import MessageToDict
55
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ExportMetricsServiceRequest
6+
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ExportMetricsServiceResponse
67
from opentelemetry.proto.common.v1.common_pb2 import AnyValue
78
from opentelemetry.proto.common.v1.common_pb2 import KeyValue
89
from opentelemetry.proto.metrics.v1.metrics_pb2 import AggregationTemporality
@@ -191,6 +192,9 @@ async def test_metrics_endpoint_basic_http(testagent, otlp_http_url, otlp_metric
191192
f"{otlp_http_url}{METRICS_ENDPOINT}", headers=PROTOBUF_HEADERS, data=otlp_metrics_string
192193
)
193194
assert resp.status == 200
195+
assert resp.content_type == "application/x-protobuf"
196+
body = await resp.read()
197+
assert body == ExportMetricsServiceResponse().SerializeToString()
194198

195199

196200
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)