Skip to content

Commit 17f4627

Browse files
pitoniak32cijothomaslalitb
authoredOct 28, 2024··
Refactor/metric exporters non plural (#2255)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com> Co-authored-by: Lalit Kumar Bhasin <labhas@microsoft.com>
1 parent afc8ff5 commit 17f4627

File tree

22 files changed

+150
-137
lines changed

22 files changed

+150
-137
lines changed
 

‎examples/metrics-advanced/src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
4545
};
4646

4747
// Build exporter using Delta Temporality.
48-
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
48+
let exporter = opentelemetry_stdout::MetricExporterBuilder::default()
4949
.with_temporality(Temporality::Delta)
5050
.build();
5151

‎examples/metrics-basic/src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::error::Error;
66
use std::vec;
77

88
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
9-
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
9+
let exporter = opentelemetry_stdout::MetricExporterBuilder::default()
1010
// Build exporter using Delta Temporality (Defaults to Temporality::Cumulative)
1111
// .with_temporality(data::Temporality::Delta)
1212
.build();

‎examples/self-diagnostics/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use opentelemetry::global::{self, set_error_handler, Error as OtelError};
22
use opentelemetry::KeyValue;
33
use opentelemetry_appender_tracing::layer;
4-
use opentelemetry_otlp::{LogExporter, MetricsExporter, WithExportConfig};
4+
use opentelemetry_otlp::{LogExporter, MetricExporter, WithExportConfig};
55
use opentelemetry_sdk::metrics::PeriodicReader;
66
use tracing_subscriber::filter::{EnvFilter, LevelFilter};
77
use tracing_subscriber::fmt;
@@ -109,7 +109,7 @@ fn init_logger_provider() -> opentelemetry_sdk::logs::LoggerProvider {
109109
}
110110

111111
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
112-
let exporter = MetricsExporter::builder()
112+
let exporter = MetricExporter::builder()
113113
.with_http()
114114
.with_endpoint("http://localhost:4318/v1/metrics")
115115
.build()

‎opentelemetry-otlp/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ Released 2024-Sep-30
4848
.build()?,
4949
).build();
5050
```
51+
- **Renamed**
52+
- ([#2255](https://github.com/open-telemetry/opentelemetry-rust/pull/2255)): de-pluralize Metric types.
53+
- `MetricsExporter` -> `MetricExporter`
54+
- `MetricsExporterBuilder` -> `MetricExporterBuilder`
5155

5256
## v0.25.0
5357

‎opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use opentelemetry::{
77
};
88
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
99
use opentelemetry_otlp::WithExportConfig;
10-
use opentelemetry_otlp::{LogExporter, MetricsExporter, Protocol, SpanExporter};
10+
use opentelemetry_otlp::{LogExporter, MetricExporter, Protocol, SpanExporter};
1111
use opentelemetry_sdk::{
1212
logs::LoggerProvider,
1313
metrics::{PeriodicReader, SdkMeterProvider},
@@ -66,7 +66,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
6666
}
6767

6868
fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, MetricError> {
69-
let exporter = MetricsExporter::builder()
69+
let exporter = MetricExporter::builder()
7070
.with_http()
7171
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
7272
.with_endpoint("http://localhost:4318/v1/metrics")

‎opentelemetry-otlp/examples/basic-otlp/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ SpanEvent #0
120120
### Metric
121121

122122
```text
123-
2024-05-22T20:25:42.908Z info MetricsExporter {"kind": "exporter", "data_type": "metrics", "name": "logging", "resource metrics": 1, "metrics": 1, "data points": 1}
123+
2024-05-22T20:25:42.908Z info MetricExporter {"kind": "exporter", "data_type": "metrics", "name": "logging", "resource metrics": 1, "metrics": 1, "data points": 1}
124124
2024-05-22T20:25:42.908Z info ResourceMetrics #0
125125
Resource SchemaURL:
126126
Resource attributes:

‎opentelemetry-otlp/examples/basic-otlp/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use opentelemetry::trace::{TraceContextExt, TraceError, Tracer};
55
use opentelemetry::KeyValue;
66
use opentelemetry::{global, InstrumentationScope};
77
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
8-
use opentelemetry_otlp::{LogExporter, MetricsExporter, SpanExporter, WithExportConfig};
8+
use opentelemetry_otlp::{LogExporter, MetricExporter, SpanExporter, WithExportConfig};
99
use opentelemetry_sdk::logs::LoggerProvider;
1010
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
1111
use opentelemetry_sdk::trace::Config;
@@ -34,7 +34,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
3434
}
3535

3636
fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, MetricError> {
37-
let exporter = MetricsExporter::builder().with_tonic().build()?;
37+
let exporter = MetricExporter::builder().with_tonic().build()?;
3838

3939
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
4040

‎opentelemetry-otlp/src/exporter/http/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ impl Default for HttpConfig {
8383
///
8484
/// // Create a metrics exporter you can use when configuring meter providers
8585
/// # #[cfg(feature="metrics")]
86-
/// let metrics_exporter = opentelemetry_otlp::MetricsExporter::builder()
86+
/// let metrics_exporter = opentelemetry_otlp::MetricExporter::builder()
8787
/// .with_http()
8888
/// .with_temporality(Temporality::default())
8989
/// .build()?;
@@ -221,7 +221,7 @@ impl HttpExporterBuilder {
221221
pub fn build_metrics_exporter(
222222
mut self,
223223
temporality: opentelemetry_sdk::metrics::data::Temporality,
224-
) -> opentelemetry::metrics::MetricResult<crate::MetricsExporter> {
224+
) -> opentelemetry::metrics::MetricResult<crate::MetricExporter> {
225225
use crate::{
226226
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_HEADERS,
227227
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
@@ -234,7 +234,7 @@ impl HttpExporterBuilder {
234234
OTEL_EXPORTER_OTLP_METRICS_HEADERS,
235235
)?;
236236

237-
Ok(crate::MetricsExporter::new(client, temporality))
237+
Ok(crate::MetricExporter::new(client, temporality))
238238
}
239239
}
240240

‎opentelemetry-otlp/src/exporter/tonic/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl TryFrom<Compression> for tonic::codec::CompressionEncoding {
9090
///
9191
/// // Create a metric exporter you can use when configuring meter providers
9292
/// # #[cfg(feature="metrics")]
93-
/// let metric_exporter = opentelemetry_otlp::MetricsExporter::builder()
93+
/// let metric_exporter = opentelemetry_otlp::MetricExporter::builder()
9494
/// .with_tonic()
9595
/// .with_temporality(Temporality::default())
9696
/// .build()?;
@@ -274,8 +274,8 @@ impl TonicExporterBuilder {
274274
pub(crate) fn build_metrics_exporter(
275275
self,
276276
temporality: opentelemetry_sdk::metrics::data::Temporality,
277-
) -> opentelemetry::metrics::MetricResult<crate::MetricsExporter> {
278-
use crate::MetricsExporter;
277+
) -> opentelemetry::metrics::MetricResult<crate::MetricExporter> {
278+
use crate::MetricExporter;
279279
use metrics::TonicMetricsClient;
280280

281281
let (channel, interceptor, compression) = self.build_channel(
@@ -287,7 +287,7 @@ impl TonicExporterBuilder {
287287

288288
let client = TonicMetricsClient::new(channel, interceptor, compression);
289289

290-
Ok(MetricsExporter::new(client, temporality))
290+
Ok(MetricExporter::new(client, temporality))
291291
}
292292

293293
/// Build a new tonic span exporter

‎opentelemetry-otlp/src/lib.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
//! telemetry.
2626
//!
2727
//! You will have to build a OTLP exporter first. Create the correct exporter based on the signal
28-
//! you are looking to export `SpanExporter::builder()`, `MetricsExporter::builder()`,
28+
//! you are looking to export `SpanExporter::builder()`, `MetricExporter::builder()`,
2929
//! `LogExporter::builder()` respectively for traces, metrics, and logs.
3030
//!
3131
//! Once you have the exporter, you can create your `Provider` by starting with `TracerProvider::builder()`,
@@ -124,7 +124,7 @@
124124
//!
125125
//! Generally there are two parts of configuration. One is the exporter, the other is the provider.
126126
//! Users can configure the exporter using [SpanExporter::builder()] for traces,
127-
//! and [MetricsExporter::builder()] + [opentelemetry_sdk::metrics::PeriodicReader::builder()] for metrics.
127+
//! and [MetricExporter::builder()] + [opentelemetry_sdk::metrics::PeriodicReader::builder()] for metrics.
128128
//! Once you have an exporter, you can add it to either a [opentelemetry_sdk::trace::TracerProvider::builder()] for traces,
129129
//! or [opentelemetry_sdk::metrics::SdkMeterProvider::builder()] for metrics.
130130
//!
@@ -171,7 +171,7 @@
171171
//!
172172
//! # #[cfg(all(feature = "metrics", feature = "grpc-tonic"))]
173173
//! # {
174-
//! let exporter = opentelemetry_otlp::MetricsExporter::builder()
174+
//! let exporter = opentelemetry_otlp::MetricExporter::builder()
175175
//! .with_tonic()
176176
//! .with_endpoint("http://localhost:4318/v1/metrics")
177177
//! .with_protocol(Protocol::Grpc)
@@ -240,7 +240,7 @@ pub use crate::span::{
240240
#[cfg(feature = "metrics")]
241241
#[cfg(any(feature = "http-proto", feature = "http-json", feature = "grpc-tonic"))]
242242
pub use crate::metric::{
243-
MetricsExporter, OTEL_EXPORTER_OTLP_METRICS_COMPRESSION, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
243+
MetricExporter, OTEL_EXPORTER_OTLP_METRICS_COMPRESSION, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
244244
OTEL_EXPORTER_OTLP_METRICS_HEADERS, OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
245245
};
246246

‎opentelemetry-otlp/src/metric.rs

+30-30
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! OTEL metric exporter
22
//!
3-
//! Defines a [MetricsExporter] to send metric data to backend via OTLP protocol.
3+
//! Defines a [MetricExporter] to send metric data to backend via OTLP protocol.
44
//!
55
66
#[cfg(any(feature = "http-proto", feature = "http-json", feature = "grpc-tonic"))]
@@ -20,7 +20,7 @@ use opentelemetry::metrics::MetricResult;
2020

2121
use opentelemetry_sdk::metrics::{
2222
data::{ResourceMetrics, Temporality},
23-
exporter::PushMetricsExporter,
23+
exporter::PushMetricExporter,
2424
};
2525
use std::fmt::{Debug, Formatter};
2626

@@ -39,81 +39,81 @@ pub const OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_MET
3939
pub const OTEL_EXPORTER_OTLP_METRICS_HEADERS: &str = "OTEL_EXPORTER_OTLP_METRICS_HEADERS";
4040

4141
#[derive(Debug, Default, Clone)]
42-
pub struct MetricsExporterBuilder<C> {
42+
pub struct MetricExporterBuilder<C> {
4343
client: C,
4444
temporality: Temporality,
4545
}
4646

47-
impl MetricsExporterBuilder<NoExporterBuilderSet> {
47+
impl MetricExporterBuilder<NoExporterBuilderSet> {
4848
pub fn new() -> Self {
49-
MetricsExporterBuilder::default()
49+
MetricExporterBuilder::default()
5050
}
5151
}
5252

53-
impl<C> MetricsExporterBuilder<C> {
53+
impl<C> MetricExporterBuilder<C> {
5454
#[cfg(feature = "grpc-tonic")]
55-
pub fn with_tonic(self) -> MetricsExporterBuilder<TonicExporterBuilderSet> {
56-
MetricsExporterBuilder {
55+
pub fn with_tonic(self) -> MetricExporterBuilder<TonicExporterBuilderSet> {
56+
MetricExporterBuilder {
5757
client: TonicExporterBuilderSet(TonicExporterBuilder::default()),
5858
temporality: self.temporality,
5959
}
6060
}
6161

6262
#[cfg(any(feature = "http-proto", feature = "http-json"))]
63-
pub fn with_http(self) -> MetricsExporterBuilder<HttpExporterBuilderSet> {
64-
MetricsExporterBuilder {
63+
pub fn with_http(self) -> MetricExporterBuilder<HttpExporterBuilderSet> {
64+
MetricExporterBuilder {
6565
client: HttpExporterBuilderSet(HttpExporterBuilder::default()),
6666
temporality: self.temporality,
6767
}
6868
}
6969

70-
pub fn with_temporality(self, temporality: Temporality) -> MetricsExporterBuilder<C> {
71-
MetricsExporterBuilder {
70+
pub fn with_temporality(self, temporality: Temporality) -> MetricExporterBuilder<C> {
71+
MetricExporterBuilder {
7272
client: self.client,
7373
temporality,
7474
}
7575
}
7676
}
7777

7878
#[cfg(feature = "grpc-tonic")]
79-
impl MetricsExporterBuilder<TonicExporterBuilderSet> {
80-
pub fn build(self) -> MetricResult<MetricsExporter> {
79+
impl MetricExporterBuilder<TonicExporterBuilderSet> {
80+
pub fn build(self) -> MetricResult<MetricExporter> {
8181
let exporter = self.client.0.build_metrics_exporter(self.temporality)?;
8282
Ok(exporter)
8383
}
8484
}
8585

8686
#[cfg(any(feature = "http-proto", feature = "http-json"))]
87-
impl MetricsExporterBuilder<HttpExporterBuilderSet> {
88-
pub fn build(self) -> MetricResult<MetricsExporter> {
87+
impl MetricExporterBuilder<HttpExporterBuilderSet> {
88+
pub fn build(self) -> MetricResult<MetricExporter> {
8989
let exporter = self.client.0.build_metrics_exporter(self.temporality)?;
9090
Ok(exporter)
9191
}
9292
}
9393

9494
#[cfg(feature = "grpc-tonic")]
95-
impl HasExportConfig for MetricsExporterBuilder<TonicExporterBuilderSet> {
95+
impl HasExportConfig for MetricExporterBuilder<TonicExporterBuilderSet> {
9696
fn export_config(&mut self) -> &mut crate::ExportConfig {
9797
&mut self.client.0.exporter_config
9898
}
9999
}
100100

101101
#[cfg(any(feature = "http-proto", feature = "http-json"))]
102-
impl HasExportConfig for MetricsExporterBuilder<HttpExporterBuilderSet> {
102+
impl HasExportConfig for MetricExporterBuilder<HttpExporterBuilderSet> {
103103
fn export_config(&mut self) -> &mut crate::ExportConfig {
104104
&mut self.client.0.exporter_config
105105
}
106106
}
107107

108108
#[cfg(feature = "grpc-tonic")]
109-
impl HasTonicConfig for MetricsExporterBuilder<TonicExporterBuilderSet> {
109+
impl HasTonicConfig for MetricExporterBuilder<TonicExporterBuilderSet> {
110110
fn tonic_config(&mut self) -> &mut crate::TonicConfig {
111111
&mut self.client.0.tonic_config
112112
}
113113
}
114114

115115
#[cfg(any(feature = "http-proto", feature = "http-json"))]
116-
impl HasHttpConfig for MetricsExporterBuilder<HttpExporterBuilderSet> {
116+
impl HasHttpConfig for MetricExporterBuilder<HttpExporterBuilderSet> {
117117
fn http_client_config(&mut self) -> &mut crate::exporter::http::HttpConfig {
118118
&mut self.client.0.http_config
119119
}
@@ -127,19 +127,19 @@ pub trait MetricsClient: fmt::Debug + Send + Sync + 'static {
127127
}
128128

129129
/// Export metrics in OTEL format.
130-
pub struct MetricsExporter {
130+
pub struct MetricExporter {
131131
client: Box<dyn MetricsClient>,
132132
temporality: Temporality,
133133
}
134134

135-
impl Debug for MetricsExporter {
135+
impl Debug for MetricExporter {
136136
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
137-
f.debug_struct("MetricsExporter").finish()
137+
f.debug_struct("MetricExporter").finish()
138138
}
139139
}
140140

141141
#[async_trait]
142-
impl PushMetricsExporter for MetricsExporter {
142+
impl PushMetricExporter for MetricExporter {
143143
async fn export(&self, metrics: &mut ResourceMetrics) -> MetricResult<()> {
144144
self.client.export(metrics).await
145145
}
@@ -158,15 +158,15 @@ impl PushMetricsExporter for MetricsExporter {
158158
}
159159
}
160160

161-
impl MetricsExporter {
162-
/// Obtain a builder to configure a [MetricsExporter].
163-
pub fn builder() -> MetricsExporterBuilder<NoExporterBuilderSet> {
164-
MetricsExporterBuilder::default()
161+
impl MetricExporter {
162+
/// Obtain a builder to configure a [MetricExporter].
163+
pub fn builder() -> MetricExporterBuilder<NoExporterBuilderSet> {
164+
MetricExporterBuilder::default()
165165
}
166166

167167
/// Create a new metrics exporter
168-
pub fn new(client: impl MetricsClient, temporality: Temporality) -> MetricsExporter {
169-
MetricsExporter {
168+
pub fn new(client: impl MetricsClient, temporality: Temporality) -> MetricExporter {
169+
MetricExporter {
170170
client: Box::new(client),
171171
temporality,
172172
}

‎opentelemetry-sdk/CHANGELOG.md

+17-13
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,24 @@
55
- Bump MSRV to 1.70 [#2179](https://github.com/open-telemetry/opentelemetry-rust/pull/2179)
66
- Implement `LogRecord::set_trace_context` for `LogRecord`. Respect any trace context set on a `LogRecord` when emitting through a `Logger`.
77
- Improved `LoggerProvider` shutdown handling to prevent redundant shutdown calls when `drop` is invoked. [#2195](https://github.com/open-telemetry/opentelemetry-rust/pull/2195)
8-
- **BREAKING**: [#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)
9-
- **Replaced**: Removed `{Delta,Cumulative}TemporalitySelector::new()` in favor of directly using `Temporality` enum to simplify the configuration of MetricsExporterBuilder with different temporalities.
108
- When creating new metric instruments, SDK would return a no-op instrument if the validation fails. [#2166](https://github.com/open-telemetry/opentelemetry-rust/pull/2166)
11-
- **Breaking change for Metrics users:** The `init` method used to create instruments has been renamed to `build`.
12-
13-
Before:
14-
```rust
15-
let counter = meter.u64_counter("my_counter").init();
16-
```
17-
18-
Now:
19-
```rust
20-
let counter = meter.u64_counter("my_counter").build();
21-
```
9+
- **BREAKING for Metrics users**:
10+
- **Replaced**
11+
- ([#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)): Removed `{Delta,Cumulative}TemporalitySelector::new()` in favor of directly using `Temporality` enum to simplify the configuration of MetricsExporterBuilder with different temporalities.
12+
- **Renamed**
13+
- ([#2232](https://github.com/open-telemetry/opentelemetry-rust/pull/2232)): The `init` method used to create instruments has been renamed to `build`.
14+
Before:
15+
```rust
16+
let counter = meter.u64_counter("my_counter").init();
17+
```
18+
Now:
19+
```rust
20+
let counter = meter.u64_counter("my_counter").build();
21+
```
22+
- ([#2255](https://github.com/open-telemetry/opentelemetry-rust/pull/2255)): de-pluralize Metric types.
23+
- `PushMetricsExporter` -> `PushMetricExporter`
24+
- `InMemoryMetricsExporter` -> `InMemoryMetricExporter`
25+
- `InMemoryMetricsExporterBuilder` -> `InMemoryMetricExporterBuilder`
2226
- **BREAKING**: [#2220](https://github.com/open-telemetry/opentelemetry-rust/pull/2220)
2327
- Removed `InstrumentationLibrary` re-export and its `Scope` alias, use `opentelemetry::InstrumentationLibrary` instead.
2428
- Unified builders across signals

‎opentelemetry-sdk/src/metrics/exporter.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use super::data::Temporality;
1111
///
1212
/// This is the final component in the metric push pipeline.
1313
#[async_trait]
14-
pub trait PushMetricsExporter: Send + Sync + 'static {
14+
pub trait PushMetricExporter: Send + Sync + 'static {
1515
/// Export serializes and transmits metric data to a receiver.
1616
///
1717
/// All retry logic must be contained in this function. The SDK does not
@@ -29,6 +29,6 @@ pub trait PushMetricsExporter: Send + Sync + 'static {
2929
/// instead will return an error indicating the shutdown state.
3030
fn shutdown(&self) -> MetricResult<()>;
3131

32-
/// Access the [Temporality] of the MetricsExporter.
32+
/// Access the [Temporality] of the MetricExporter.
3333
fn temporality(&self) -> Temporality;
3434
}

‎opentelemetry-sdk/src/metrics/mod.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ mod tests {
131131
use self::data::{DataPoint, HistogramDataPoint, ScopeMetrics};
132132
use super::*;
133133
use crate::metrics::data::{ResourceMetrics, Temporality};
134-
use crate::testing::metrics::InMemoryMetricsExporterBuilder;
135-
use crate::{runtime, testing::metrics::InMemoryMetricsExporter};
134+
use crate::testing::metrics::InMemoryMetricExporterBuilder;
135+
use crate::{runtime, testing::metrics::InMemoryMetricExporter};
136136
use opentelemetry::metrics::{Counter, Meter, UpDownCounter};
137137
use opentelemetry::InstrumentationScope;
138138
use opentelemetry::{metrics::MeterProvider as _, KeyValue};
@@ -491,7 +491,7 @@ mod tests {
491491
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
492492
async fn counter_duplicate_instrument_merge() {
493493
// Arrange
494-
let exporter = InMemoryMetricsExporter::default();
494+
let exporter = InMemoryMetricExporter::default();
495495
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
496496
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
497497

@@ -542,7 +542,7 @@ mod tests {
542542
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
543543
async fn counter_duplicate_instrument_different_meter_no_merge() {
544544
// Arrange
545-
let exporter = InMemoryMetricsExporter::default();
545+
let exporter = InMemoryMetricExporter::default();
546546
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
547547
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
548548

@@ -631,7 +631,7 @@ mod tests {
631631
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
632632
async fn instrumentation_scope_identity_test() {
633633
// Arrange
634-
let exporter = InMemoryMetricsExporter::default();
634+
let exporter = InMemoryMetricExporter::default();
635635
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
636636
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
637637

@@ -713,7 +713,7 @@ mod tests {
713713
// cargo test histogram_aggregation_with_invalid_aggregation_should_proceed_as_if_view_not_exist --features=testing -- --nocapture
714714

715715
// Arrange
716-
let exporter = InMemoryMetricsExporter::default();
716+
let exporter = InMemoryMetricExporter::default();
717717
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
718718
let criteria = Instrument::new().name("test_histogram");
719719
let stream_invalid_aggregation = Stream::new()
@@ -763,7 +763,7 @@ mod tests {
763763
// cargo test metrics::tests::spatial_aggregation_when_view_drops_attributes_observable_counter --features=testing
764764

765765
// Arrange
766-
let exporter = InMemoryMetricsExporter::default();
766+
let exporter = InMemoryMetricExporter::default();
767767
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
768768
let criteria = Instrument::new().name("my_observable_counter");
769769
// View drops all attributes.
@@ -838,7 +838,7 @@ mod tests {
838838
// cargo test spatial_aggregation_when_view_drops_attributes_counter --features=testing
839839

840840
// Arrange
841-
let exporter = InMemoryMetricsExporter::default();
841+
let exporter = InMemoryMetricExporter::default();
842842
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
843843
let criteria = Instrument::new().name("my_counter");
844844
// View drops all attributes.
@@ -2345,7 +2345,7 @@ mod tests {
23452345
}
23462346

23472347
struct TestContext {
2348-
exporter: InMemoryMetricsExporter,
2348+
exporter: InMemoryMetricExporter,
23492349
meter_provider: SdkMeterProvider,
23502350

23512351
// Saving this on the test context for lifetime simplicity
@@ -2354,7 +2354,7 @@ mod tests {
23542354

23552355
impl TestContext {
23562356
fn new(temporality: Temporality) -> Self {
2357-
let exporter = InMemoryMetricsExporterBuilder::new().with_temporality(temporality);
2357+
let exporter = InMemoryMetricExporterBuilder::new().with_temporality(temporality);
23582358

23592359
let exporter = exporter.build();
23602360
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
@@ -2411,7 +2411,7 @@ mod tests {
24112411
let resource_metrics = self
24122412
.exporter
24132413
.get_finished_metrics()
2414-
.expect("metrics expected to be exported"); // TODO: Need to fix InMemoryMetricsExporter to return None.
2414+
.expect("metrics expected to be exported"); // TODO: Need to fix InMemoryMetricExporter to return None.
24152415

24162416
assert!(resource_metrics.is_empty(), "no metrics should be exported");
24172417
}

‎opentelemetry-sdk/src/metrics/periodic_reader.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use opentelemetry::{
1818

1919
use crate::runtime::Runtime;
2020
use crate::{
21-
metrics::{exporter::PushMetricsExporter, reader::SdkProducer},
21+
metrics::{exporter::PushMetricExporter, reader::SdkProducer},
2222
Resource,
2323
};
2424

@@ -54,7 +54,7 @@ pub struct PeriodicReaderBuilder<E, RT> {
5454

5555
impl<E, RT> PeriodicReaderBuilder<E, RT>
5656
where
57-
E: PushMetricsExporter,
57+
E: PushMetricExporter,
5858
RT: Runtime,
5959
{
6060
fn new(exporter: E, runtime: RT) -> Self {
@@ -155,7 +155,7 @@ where
155155
///
156156
/// The [runtime] can be selected based on feature flags set for this crate.
157157
///
158-
/// The exporter can be any exporter that implements [PushMetricsExporter] such
158+
/// The exporter can be any exporter that implements [PushMetricExporter] such
159159
/// as [opentelemetry-otlp].
160160
///
161161
/// [collect]: MetricReader::collect
@@ -168,7 +168,7 @@ where
168168
/// use opentelemetry_sdk::metrics::PeriodicReader;
169169
/// # fn example<E, R>(get_exporter: impl Fn() -> E, get_runtime: impl Fn() -> R)
170170
/// # where
171-
/// # E: opentelemetry_sdk::metrics::exporter::PushMetricsExporter,
171+
/// # E: opentelemetry_sdk::metrics::exporter::PushMetricExporter,
172172
/// # R: opentelemetry_sdk::runtime::Runtime,
173173
/// # {
174174
///
@@ -181,15 +181,15 @@ where
181181
/// ```
182182
#[derive(Clone)]
183183
pub struct PeriodicReader {
184-
exporter: Arc<dyn PushMetricsExporter>,
184+
exporter: Arc<dyn PushMetricExporter>,
185185
inner: Arc<Mutex<PeriodicReaderInner>>,
186186
}
187187

188188
impl PeriodicReader {
189189
/// Configuration options for a periodic reader
190190
pub fn builder<E, RT>(exporter: E, runtime: RT) -> PeriodicReaderBuilder<E, RT>
191191
where
192-
E: PushMetricsExporter,
192+
E: PushMetricExporter,
193193
RT: Runtime,
194194
{
195195
PeriodicReaderBuilder::new(exporter, runtime)
@@ -391,7 +391,7 @@ mod tests {
391391
use super::PeriodicReader;
392392
use crate::{
393393
metrics::data::ResourceMetrics, metrics::reader::MetricReader, metrics::SdkMeterProvider,
394-
runtime, testing::metrics::InMemoryMetricsExporter, Resource,
394+
runtime, testing::metrics::InMemoryMetricExporter, Resource,
395395
};
396396
use opentelemetry::metrics::{MeterProvider, MetricError};
397397
use std::sync::mpsc;
@@ -437,7 +437,7 @@ mod tests {
437437
#[test]
438438
fn unregistered_collect() {
439439
// Arrange
440-
let exporter = InMemoryMetricsExporter::default();
440+
let exporter = InMemoryMetricExporter::default();
441441
let reader = PeriodicReader::builder(exporter.clone(), runtime::Tokio).build();
442442
let mut rm = ResourceMetrics {
443443
resource: Resource::empty(),
@@ -458,7 +458,7 @@ mod tests {
458458
RT: crate::runtime::Runtime,
459459
{
460460
let interval = std::time::Duration::from_millis(1);
461-
let exporter = InMemoryMetricsExporter::default();
461+
let exporter = InMemoryMetricExporter::default();
462462
let reader = PeriodicReader::builder(exporter.clone(), runtime)
463463
.with_interval(interval)
464464
.build();

‎opentelemetry-sdk/src/metrics/reader.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use super::{
1818
/// flow.
1919
///
2020
/// Typically, push-based exporters that are periodic will implement
21-
/// `MetricsExporter` themselves and construct a `PeriodicReader` to satisfy this
21+
/// `MetricExporter` themselves and construct a `PeriodicReader` to satisfy this
2222
/// interface.
2323
///
2424
/// Pull-based exporters will typically implement `MetricReader` themselves,

‎opentelemetry-sdk/src/testing/metrics/in_memory_exporter.rs

+30-30
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::metrics::data;
22
use crate::metrics::data::{Histogram, Metric, ResourceMetrics, ScopeMetrics, Temporality};
3-
use crate::metrics::exporter::PushMetricsExporter;
3+
use crate::metrics::exporter::PushMetricExporter;
44
use async_trait::async_trait;
55
use opentelemetry::metrics::MetricError;
66
use opentelemetry::metrics::MetricResult;
@@ -26,13 +26,13 @@ use std::sync::{Arc, Mutex};
2626
///# use opentelemetry_sdk::{metrics, runtime};
2727
///# use opentelemetry::{KeyValue};
2828
///# use opentelemetry::metrics::MeterProvider;
29-
///# use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter;
29+
///# use opentelemetry_sdk::testing::metrics::InMemoryMetricExporter;
3030
///# use opentelemetry_sdk::metrics::PeriodicReader;
3131
///
3232
///# #[tokio::main]
3333
///# async fn main() {
34-
/// // Create an InMemoryMetricsExporter
35-
/// let exporter = InMemoryMetricsExporter::default();
34+
/// // Create an InMemoryMetricExporter
35+
/// let exporter = InMemoryMetricExporter::default();
3636
///
3737
/// // Create a MeterProvider and register the exporter
3838
/// let meter_provider = metrics::SdkMeterProvider::builder()
@@ -55,58 +55,58 @@ use std::sync::{Arc, Mutex};
5555
/// }
5656
///# }
5757
/// ```
58-
pub struct InMemoryMetricsExporter {
58+
pub struct InMemoryMetricExporter {
5959
metrics: Arc<Mutex<VecDeque<ResourceMetrics>>>,
6060
temporality: Temporality,
6161
}
6262

63-
impl Clone for InMemoryMetricsExporter {
63+
impl Clone for InMemoryMetricExporter {
6464
fn clone(&self) -> Self {
65-
InMemoryMetricsExporter {
65+
InMemoryMetricExporter {
6666
metrics: self.metrics.clone(),
6767
temporality: self.temporality,
6868
}
6969
}
7070
}
7171

72-
impl fmt::Debug for InMemoryMetricsExporter {
72+
impl fmt::Debug for InMemoryMetricExporter {
7373
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
74-
f.debug_struct("InMemoryMetricsExporter").finish()
74+
f.debug_struct("InMemoryMetricExporter").finish()
7575
}
7676
}
7777

78-
impl Default for InMemoryMetricsExporter {
78+
impl Default for InMemoryMetricExporter {
7979
fn default() -> Self {
80-
InMemoryMetricsExporterBuilder::new().build()
80+
InMemoryMetricExporterBuilder::new().build()
8181
}
8282
}
8383

84-
/// Builder for [`InMemoryMetricsExporter`].
84+
/// Builder for [`InMemoryMetricExporter`].
8585
/// # Example
8686
///
8787
/// ```
88-
/// # use opentelemetry_sdk::testing::metrics::{InMemoryMetricsExporter, InMemoryMetricsExporterBuilder};
88+
/// # use opentelemetry_sdk::testing::metrics::{InMemoryMetricExporter, InMemoryMetricExporterBuilder};
8989
///
90-
/// let exporter = InMemoryMetricsExporterBuilder::new().build();
90+
/// let exporter = InMemoryMetricExporterBuilder::new().build();
9191
/// ```
92-
pub struct InMemoryMetricsExporterBuilder {
92+
pub struct InMemoryMetricExporterBuilder {
9393
temporality: Option<Temporality>,
9494
}
9595

96-
impl fmt::Debug for InMemoryMetricsExporterBuilder {
96+
impl fmt::Debug for InMemoryMetricExporterBuilder {
9797
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
98-
f.debug_struct("InMemoryMetricsExporterBuilder").finish()
98+
f.debug_struct("InMemoryMetricExporterBuilder").finish()
9999
}
100100
}
101101

102-
impl Default for InMemoryMetricsExporterBuilder {
102+
impl Default for InMemoryMetricExporterBuilder {
103103
fn default() -> Self {
104104
Self::new()
105105
}
106106
}
107107

108-
impl InMemoryMetricsExporterBuilder {
109-
/// Creates a new instance of the `InMemoryMetricsExporterBuilder`.
108+
impl InMemoryMetricExporterBuilder {
109+
/// Creates a new instance of the `InMemoryMetricExporterBuilder`.
110110
pub fn new() -> Self {
111111
Self { temporality: None }
112112
}
@@ -117,17 +117,17 @@ impl InMemoryMetricsExporterBuilder {
117117
self
118118
}
119119

120-
/// Creates a new instance of the `InMemoryMetricsExporter`.
120+
/// Creates a new instance of the `InMemoryMetricExporter`.
121121
///
122-
pub fn build(self) -> InMemoryMetricsExporter {
123-
InMemoryMetricsExporter {
122+
pub fn build(self) -> InMemoryMetricExporter {
123+
InMemoryMetricExporter {
124124
metrics: Arc::new(Mutex::new(VecDeque::new())),
125125
temporality: self.temporality.unwrap_or_default(),
126126
}
127127
}
128128
}
129129

130-
impl InMemoryMetricsExporter {
130+
impl InMemoryMetricExporter {
131131
/// Returns the finished metrics as a vector of `ResourceMetrics`.
132132
///
133133
/// # Errors
@@ -137,9 +137,9 @@ impl InMemoryMetricsExporter {
137137
/// # Example
138138
///
139139
/// ```
140-
/// # use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter;
140+
/// # use opentelemetry_sdk::testing::metrics::InMemoryMetricExporter;
141141
///
142-
/// let exporter = InMemoryMetricsExporter::default();
142+
/// let exporter = InMemoryMetricExporter::default();
143143
/// let finished_metrics = exporter.get_finished_metrics().unwrap();
144144
/// ```
145145
pub fn get_finished_metrics(&self) -> MetricResult<Vec<ResourceMetrics>> {
@@ -154,9 +154,9 @@ impl InMemoryMetricsExporter {
154154
/// # Example
155155
///
156156
/// ```
157-
/// # use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter;
157+
/// # use opentelemetry_sdk::testing::metrics::InMemoryMetricExporter;
158158
///
159-
/// let exporter = InMemoryMetricsExporter::default();
159+
/// let exporter = InMemoryMetricExporter::default();
160160
/// exporter.reset();
161161
/// ```
162162
pub fn reset(&self) {
@@ -244,12 +244,12 @@ impl InMemoryMetricsExporter {
244244
}
245245

246246
#[async_trait]
247-
impl PushMetricsExporter for InMemoryMetricsExporter {
247+
impl PushMetricExporter for InMemoryMetricExporter {
248248
async fn export(&self, metrics: &mut ResourceMetrics) -> MetricResult<()> {
249249
self.metrics
250250
.lock()
251251
.map(|mut metrics_guard| {
252-
metrics_guard.push_back(InMemoryMetricsExporter::clone_metrics(metrics))
252+
metrics_guard.push_back(InMemoryMetricExporter::clone_metrics(metrics))
253253
})
254254
.map_err(MetricError::from)
255255
}

‎opentelemetry-sdk/src/testing/metrics/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/// The `in_memory_exporter` module provides in-memory metrics exporter.
44
/// For detailed usage and examples, see `in_memory_exporter`.
55
pub mod in_memory_exporter;
6-
pub use in_memory_exporter::{InMemoryMetricsExporter, InMemoryMetricsExporterBuilder};
6+
pub use in_memory_exporter::{InMemoryMetricExporter, InMemoryMetricExporterBuilder};
77

88
#[doc(hidden)]
99
pub mod metric_reader;

‎opentelemetry-stdout/CHANGELOG.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
## vNext
44

55
- Bump MSRV to 1.70 [#2179](https://github.com/open-telemetry/opentelemetry-rust/pull/2179)
6-
- **BREAKING**: [#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)
7-
- **Replaced**: The `MetricsExporterBuilder` interface is modified from `with_temporality_selector` to `with_temporality` example can be seen below:
6+
- **BREAKING**
7+
- **Replaced**
8+
- ([#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)): The `MetricsExporterBuilder` interface is modified from `with_temporality_selector` to `with_temporality` example can be seen below:
89
Previous Signature:
910
```rust
1011
MetricsExporterBuilder::default().with_temporality_selector(DeltaTemporalitySelector::new())
@@ -13,6 +14,10 @@
1314
```rust
1415
MetricsExporterBuilder::default().with_temporality(Temporality::Delta)
1516
```
17+
- **Renamed**
18+
- ([#2255](https://github.com/open-telemetry/opentelemetry-rust/pull/2255)): de-pluralize Metric types.
19+
- `MetricsExporter` -> `MetricExporter`
20+
- `MetricsExporterBuilder` -> `MetricExporterBuilder`
1621

1722
## v0.26.0
1823
Released 2024-Sep-30

‎opentelemetry-stdout/examples/basic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn init_trace() {
3636

3737
#[cfg(feature = "metrics")]
3838
fn init_metrics() -> opentelemetry_sdk::metrics::SdkMeterProvider {
39-
let exporter = opentelemetry_stdout::MetricsExporter::default();
39+
let exporter = opentelemetry_stdout::MetricExporter::default();
4040
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
4141
let provider = SdkMeterProvider::builder()
4242
.with_reader(reader)

‎opentelemetry-stdout/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
//! }
3939
//!
4040
//! fn init_metrics() -> SdkMeterProvider {
41-
//! let exporter = opentelemetry_stdout::MetricsExporter::default();
41+
//! let exporter = opentelemetry_stdout::MetricExporter::default();
4242
//! let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
4343
//! SdkMeterProvider::builder().with_reader(reader).build()
4444
//! }

‎opentelemetry-stdout/src/metrics/exporter.rs

+16-16
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,37 @@ use core::{f64, fmt};
44
use opentelemetry::metrics::{MetricError, MetricResult};
55
use opentelemetry_sdk::metrics::{
66
data::{self, ScopeMetrics, Temporality},
7-
exporter::PushMetricsExporter,
7+
exporter::PushMetricExporter,
88
};
99
use std::fmt::Debug;
1010
use std::sync::atomic;
1111

1212
/// An OpenTelemetry exporter that writes to stdout on export.
13-
pub struct MetricsExporter {
13+
pub struct MetricExporter {
1414
is_shutdown: atomic::AtomicBool,
1515
temporality: Temporality,
1616
}
1717

18-
impl MetricsExporter {
18+
impl MetricExporter {
1919
/// Create a builder to configure this exporter.
20-
pub fn builder() -> MetricsExporterBuilder {
21-
MetricsExporterBuilder::default()
20+
pub fn builder() -> MetricExporterBuilder {
21+
MetricExporterBuilder::default()
2222
}
2323
}
24-
impl Default for MetricsExporter {
24+
impl Default for MetricExporter {
2525
fn default() -> Self {
26-
MetricsExporterBuilder::default().build()
26+
MetricExporterBuilder::default().build()
2727
}
2828
}
2929

30-
impl fmt::Debug for MetricsExporter {
30+
impl fmt::Debug for MetricExporter {
3131
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32-
f.write_str("MetricsExporter")
32+
f.write_str("MetricExporter")
3333
}
3434
}
3535

3636
#[async_trait]
37-
impl PushMetricsExporter for MetricsExporter {
37+
impl PushMetricExporter for MetricExporter {
3838
/// Write Metrics to stdout
3939
async fn export(&self, metrics: &mut data::ResourceMetrics) -> MetricResult<()> {
4040
if self.is_shutdown.load(atomic::Ordering::SeqCst) {
@@ -218,28 +218,28 @@ fn print_hist_data_points<T: Debug>(data_points: &[data::HistogramDataPoint<T>])
218218

219219
/// Configuration for the stdout metrics exporter
220220
#[derive(Default)]
221-
pub struct MetricsExporterBuilder {
221+
pub struct MetricExporterBuilder {
222222
temporality: Option<Temporality>,
223223
}
224224

225-
impl MetricsExporterBuilder {
225+
impl MetricExporterBuilder {
226226
/// Set the [Temporality] of the exporter.
227227
pub fn with_temporality(mut self, temporality: Temporality) -> Self {
228228
self.temporality = Some(temporality);
229229
self
230230
}
231231

232232
/// Create a metrics exporter with the current configuration
233-
pub fn build(self) -> MetricsExporter {
234-
MetricsExporter {
233+
pub fn build(self) -> MetricExporter {
234+
MetricExporter {
235235
temporality: self.temporality.unwrap_or_default(),
236236
is_shutdown: atomic::AtomicBool::new(false),
237237
}
238238
}
239239
}
240240

241-
impl fmt::Debug for MetricsExporterBuilder {
241+
impl fmt::Debug for MetricExporterBuilder {
242242
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
243-
f.write_str("MetricsExporterBuilder")
243+
f.write_str("MetricExporterBuilder")
244244
}
245245
}

0 commit comments

Comments
 (0)
Please sign in to comment.