Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion manifests/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,8 @@ tests/:
test_otel_env_vars.py:
Test_Otel_Env_Vars: v2.1.0
test_otel_logs.py: missing_feature
test_otel_metrics.py: missing_feature
test_otel_metrics.py:
"*": v2.23.0
test_otel_span_methods.py:
Test_Otel_Span_Methods: v1.17.0
test_otel_span_with_baggage.py:
Expand Down
28 changes: 10 additions & 18 deletions tests/parametric/test_otel_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,14 @@ def assert_scope_metric(
):
assert scope_metric["scope"]["name"] == meter_name
assert scope_metric["scope"]["version"] == meter_version
assert (
expected_scope_attributes.items()
== {item["key"]: item["value"]["string_value"] for item in scope_metric["scope"]["attributes"]}.items()
)
assert scope_metric["schema_url"] == schema_url

if context.library != "ruby":
# Ruby Exporter is still in beta, it does not support scope attributes or schema URL
assert (
expected_scope_attributes.items()
== {item["key"]: item["value"]["string_value"] for item in scope_metric["scope"]["attributes"]}.items()
)
assert scope_metric["schema_url"] == schema_url


def assert_metric_info(metric: dict, name: str, unit: str, description: str):
Expand Down Expand Up @@ -199,7 +202,6 @@ def get_expected_bucket_counts(entries: list[int], bucket_boundaries: list[float
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Configuration_Enabled:
"""Tests the enablement and disablement of the OTel Metrics API through the following configurations:
Expand Down Expand Up @@ -271,7 +273,6 @@ def test_otlp_metrics_disabled(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Api_MeterProvider:
"""Tests the OpenTelemetry MeterProvider API functionality.
Expand Down Expand Up @@ -345,7 +346,6 @@ def test_otel_get_meter_by_distinct(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Api_Meter:
"""Tests the OpenTelemetry Meter API functionality.
Expand Down Expand Up @@ -566,7 +566,6 @@ def test_otel_create_instruments_by_distinct(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Api_Instrument:
"""Tests the OpenTelemetry Instrument API functionality.
Expand Down Expand Up @@ -1110,7 +1109,6 @@ def test_otel_asynchronous_gauge_constant_callback_value(self, test_agent: TestA
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Configuration_Temporality_Preference:
"""Tests the OpenTelemetry metrics aggregation temporality preference configuration.
Expand Down Expand Up @@ -1303,7 +1301,6 @@ def test_otel_aggregation_temporality(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Configuration_OTLP_Exporter_Metrics_Endpoint:
"""Tests the OpenTelemetry OTLP exporter metrics endpoint configuration.
Expand Down Expand Up @@ -1462,7 +1459,6 @@ def test_otlp_metrics_custom_endpoint_grpc(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Configuration_OTLP_Exporter_Metrics_Headers:
"""Tests the OpenTelemetry OTLP exporter metrics headers configuration.
Expand Down Expand Up @@ -1545,7 +1541,6 @@ def test_custom_metrics_http_headers_included_in_otlp_export(
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Configuration_OTLP_Exporter_Metrics_Protocol:
"""Tests the OpenTelemetry OTLP exporter metrics protocol configuration.
Expand Down Expand Up @@ -1622,9 +1617,7 @@ def test_otlp_protocol_grpc(self, test_agent: TestAgentAPI, test_library: APMLib
@missing_feature(context.library == "dotnet", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "nodejs", reason="Does not support DD_HOSTNAME")
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Host_Name:
"""Tests the OpenTelemetry metrics host name configuration.
Expand All @@ -1634,6 +1627,7 @@ class Test_Otel_Metrics_Host_Name:
- Resource attributes set through environment variable OTEL_RESOURCE_ATTRIBUTES are preserved
"""

@missing_feature(context.library in ["nodejs", "ruby"], reason="Not yet implemented", force_skip=True)
@pytest.mark.parametrize(
"library_env",
[
Expand Down Expand Up @@ -1725,7 +1719,6 @@ def test_hostname_omitted(self, test_agent: TestAgentAPI, test_library: APMLibra
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Resource_Attributes:
"""Tests the OpenTelemetry metrics resource attributes configuration.
Expand Down Expand Up @@ -1877,7 +1870,6 @@ def test_dd_env_vars_override_otel(self, test_agent: TestAgentAPI, test_library:
@missing_feature(context.library == "golang", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "java", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "php", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "ruby", reason="Not yet implemented", force_skip=True)
@missing_feature(context.library == "rust", reason="Not yet implemented", force_skip=True)
class Test_Otel_Metrics_Telemetry:
"""Tests the OpenTelemetry metrics telemetry configuration reporting.
Expand Down Expand Up @@ -2081,7 +2073,7 @@ def test_telemetry_metrics_http_protobuf(
assert "protocol:http" in metric.get("tags")
assert "encoding:protobuf" in metric.get("tags")

@missing_feature(context.library == "nodejs", reason="Does not support grpc", force_skip=True)
@missing_feature(context.library in ["nodejs", "ruby"], reason="Does not support grpc", force_skip=True)
@pytest.mark.parametrize(
"library_env",
[
Expand Down
3 changes: 3 additions & 0 deletions utils/build/docker/ruby/parametric/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ gem 'rack', '~> 2.2'
gem 'webrick'
# Only used for OpenTelemetry testing.
gem 'opentelemetry-sdk'
gem 'opentelemetry-exporter-otlp'
gem 'opentelemetry-metrics-sdk', '>= 0.8'
gem 'opentelemetry-exporter-otlp-metrics', '>= 0.6'
Loading