From e2a718be904c07b5657717266bfe42576fbe2a65 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Thu, 6 Feb 2025 19:11:30 -0800 Subject: [PATCH 1/2] Nit fixes to doc and tests --- opentelemetry-otlp/src/lib.rs | 7 +--- .../integration_test/src/metric_helpers.rs | 3 +- .../src/metrics/meter_provider.rs | 3 ++ opentelemetry-sdk/src/metrics/mod.rs | 35 ++++++++++--------- opentelemetry-stdout/examples/basic.rs | 3 +- opentelemetry-stdout/src/lib.rs | 3 +- 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/opentelemetry-otlp/src/lib.rs b/opentelemetry-otlp/src/lib.rs index 43d79be5b5..21a0cbbf27 100644 --- a/opentelemetry-otlp/src/lib.rs +++ b/opentelemetry-otlp/src/lib.rs @@ -177,13 +177,8 @@ //! .build() //! .unwrap(); //! -//! let reader = opentelemetry_sdk::metrics::PeriodicReader::builder(exporter) -//! .with_interval(std::time::Duration::from_secs(3)) -//! .with_timeout(Duration::from_secs(10)) -//! .build(); -//! //! let provider = opentelemetry_sdk::metrics::SdkMeterProvider::builder() -//! .with_reader(reader) +//! .with_periodic_exporter(exporter) //! .with_resource(Resource::builder_empty().with_attributes([KeyValue::new("service.name", "example")]).build()) //! .build(); //! # } diff --git a/opentelemetry-otlp/tests/integration_test/src/metric_helpers.rs b/opentelemetry-otlp/tests/integration_test/src/metric_helpers.rs index cd0e7a60be..7368fa4f21 100644 --- a/opentelemetry-otlp/tests/integration_test/src/metric_helpers.rs +++ b/opentelemetry-otlp/tests/integration_test/src/metric_helpers.rs @@ -41,13 +41,12 @@ fn create_exporter() -> MetricExporter { /// Initializes the OpenTelemetry metrics pipeline fn init_meter_provider() -> SdkMeterProvider { let exporter = create_exporter(); - let reader = PeriodicReader::builder(exporter).build(); let resource = Resource::builder_empty() .with_service_name("metrics-integration-test") .build(); let meter_provider = MeterProviderBuilder::default() .with_resource(resource) - .with_reader(reader) + .with_periodic_exporter(exporter) .build(); opentelemetry::global::set_meter_provider(meter_provider.clone()); meter_provider diff --git a/opentelemetry-sdk/src/metrics/meter_provider.rs b/opentelemetry-sdk/src/metrics/meter_provider.rs index a034f377be..1e0d02a84d 100644 --- a/opentelemetry-sdk/src/metrics/meter_provider.rs +++ b/opentelemetry-sdk/src/metrics/meter_provider.rs @@ -321,6 +321,7 @@ impl fmt::Debug for MeterProviderBuilder { } #[cfg(all(test, feature = "testing"))] mod tests { + use crate::error::OTelSdkError; use crate::resource::{ SERVICE_NAME, TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_NAME, TELEMETRY_SDK_VERSION, }; @@ -487,6 +488,8 @@ mod tests { // shutdown once more should return an error let shutdown_res = provider.shutdown(); + assert!(matches!(shutdown_res, Err(OTelSdkError::AlreadyShutdown))); + assert!(shutdown_res.is_err()); assert!(reader.is_shutdown()); // TODO Fix: the instrument is still available, and can be used. diff --git a/opentelemetry-sdk/src/metrics/mod.rs b/opentelemetry-sdk/src/metrics/mod.rs index 7b96c71527..4cd526a0db 100644 --- a/opentelemetry-sdk/src/metrics/mod.rs +++ b/opentelemetry-sdk/src/metrics/mod.rs @@ -618,8 +618,9 @@ mod tests { } let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); - let meter_provider = SdkMeterProvider::builder().with_reader(reader).build(); + let meter_provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); // Test Meter creation in 2 ways, both with empty string as meter name let meter1 = meter_provider.meter(""); @@ -634,8 +635,9 @@ mod tests { async fn counter_duplicate_instrument_merge() { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); - let meter_provider = SdkMeterProvider::builder().with_reader(reader).build(); + let meter_provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); // Act let meter = meter_provider.meter("test"); @@ -685,8 +687,9 @@ mod tests { async fn counter_duplicate_instrument_different_meter_no_merge() { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); - let meter_provider = SdkMeterProvider::builder().with_reader(reader).build(); + let meter_provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); // Act let meter1 = meter_provider.meter("test.meter1"); @@ -774,8 +777,9 @@ mod tests { async fn instrumentation_scope_identity_test() { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); - let meter_provider = SdkMeterProvider::builder().with_reader(reader).build(); + let meter_provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); // Act // Meters are identical except for scope attributes, but scope attributes are not an identifying property. @@ -858,7 +862,6 @@ mod tests { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); let criteria = Instrument::new().name("test_histogram"); let stream_invalid_aggregation = Stream::new() .aggregation(aggregation::Aggregation::ExplicitBucketHistogram { @@ -871,7 +874,7 @@ mod tests { let view = new_view(criteria, stream_invalid_aggregation).expect("Expected to create a new view"); let meter_provider = SdkMeterProvider::builder() - .with_reader(reader) + .with_periodic_exporter(exporter.clone()) .with_view(view) .build(); @@ -908,7 +911,6 @@ mod tests { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); let criteria = Instrument::new().name("my_observable_counter"); // View drops all attributes. let stream_invalid_aggregation = Stream::new().allowed_attribute_keys(vec![]); @@ -916,7 +918,7 @@ mod tests { let view = new_view(criteria, stream_invalid_aggregation).expect("Expected to create a new view"); let meter_provider = SdkMeterProvider::builder() - .with_reader(reader) + .with_periodic_exporter(exporter.clone()) .with_view(view) .build(); @@ -983,7 +985,6 @@ mod tests { // Arrange let exporter = InMemoryMetricExporter::default(); - let reader = PeriodicReader::builder(exporter.clone()).build(); let criteria = Instrument::new().name("my_counter"); // View drops all attributes. let stream_invalid_aggregation = Stream::new().allowed_attribute_keys(vec![]); @@ -991,7 +992,7 @@ mod tests { let view = new_view(criteria, stream_invalid_aggregation).expect("Expected to create a new view"); let meter_provider = SdkMeterProvider::builder() - .with_reader(reader) + .with_periodic_exporter(exporter.clone()) .with_view(view) .build(); @@ -2543,10 +2544,10 @@ mod tests { impl TestContext { fn new(temporality: Temporality) -> Self { let exporter = InMemoryMetricExporterBuilder::new().with_temporality(temporality); - let exporter = exporter.build(); - let reader = PeriodicReader::builder(exporter.clone()).build(); - let meter_provider = SdkMeterProvider::builder().with_reader(reader).build(); + let meter_provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); TestContext { exporter, diff --git a/opentelemetry-stdout/examples/basic.rs b/opentelemetry-stdout/examples/basic.rs index 0f593c5600..b9955bd166 100644 --- a/opentelemetry-stdout/examples/basic.rs +++ b/opentelemetry-stdout/examples/basic.rs @@ -33,9 +33,8 @@ fn init_trace() -> SdkTracerProvider { #[cfg(feature = "metrics")] fn init_metrics() -> opentelemetry_sdk::metrics::SdkMeterProvider { let exporter = opentelemetry_stdout::MetricExporter::default(); - let reader = PeriodicReader::builder(exporter).build(); let provider = SdkMeterProvider::builder() - .with_reader(reader) + .with_periodic_exporter(exporter) .with_resource(RESOURCE.clone()) .build(); global::set_meter_provider(provider.clone()); diff --git a/opentelemetry-stdout/src/lib.rs b/opentelemetry-stdout/src/lib.rs index ecaa990a48..e9fd22a132 100644 --- a/opentelemetry-stdout/src/lib.rs +++ b/opentelemetry-stdout/src/lib.rs @@ -34,8 +34,7 @@ //! //! fn init_metrics() -> SdkMeterProvider { //! let exporter = opentelemetry_stdout::MetricExporter::default(); -//! let reader = PeriodicReader::builder(exporter).build(); -//! SdkMeterProvider::builder().with_reader(reader).build() +//! SdkMeterProvider::builder().with_periodic_exporter(exporter).build() //! } //! //! fn init_logs() -> LoggerProvider { From 362a5f2283cdf10f62fb0ee39b5189fb61f73927 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Thu, 6 Feb 2025 19:17:32 -0800 Subject: [PATCH 2/2] fix unused --- opentelemetry-stdout/examples/basic.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-stdout/examples/basic.rs b/opentelemetry-stdout/examples/basic.rs index b9955bd166..55ed9bcff3 100644 --- a/opentelemetry-stdout/examples/basic.rs +++ b/opentelemetry-stdout/examples/basic.rs @@ -7,7 +7,7 @@ use opentelemetry::{global, KeyValue}; use opentelemetry::trace::Tracer; #[cfg(feature = "metrics")] -use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider}; +use opentelemetry_sdk::metrics::SdkMeterProvider; #[cfg(feature = "trace")] use opentelemetry_sdk::trace::SdkTracerProvider;