Skip to content

Commit aece641

Browse files
authored
Few fixes to PeriodicReader tests (#2589)
1 parent 3fc8485 commit aece641

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

opentelemetry-sdk/src/metrics/periodic_reader.rs

+16-26
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,13 @@ impl PeriodicReaderInner {
317317
.produce(rm)?;
318318
Ok(())
319319
} else {
320-
Err(MetricError::Other("pipeline is not registered".into()))
320+
otel_warn!(
321+
name: "PeriodReader.MeterProviderNotRegistered",
322+
message = "PeriodicReader is not registered with MeterProvider. Metrics will not be collected. \
323+
This occurs when a periodic reader is created but not associated with a MeterProvider \
324+
by calling `.with_reader(reader)` on MeterProviderBuilder."
325+
);
326+
Err(MetricError::Other("MeterProvider is not registered".into()))
321327
}
322328
}
323329

@@ -472,7 +478,7 @@ impl MetricReader for PeriodicReader {
472478
mod tests {
473479
use super::PeriodicReader;
474480
use crate::{
475-
error::ShutdownResult,
481+
error::{ShutdownError, ShutdownResult},
476482
metrics::{
477483
data::ResourceMetrics, exporter::PushMetricExporter, reader::MetricReader,
478484
InMemoryMetricExporter, MetricError, MetricResult, SdkMeterProvider, Temporality,
@@ -594,11 +600,8 @@ mod tests {
594600
#[test]
595601
fn shutdown_repeat() {
596602
// Arrange
597-
let interval = std::time::Duration::from_millis(1);
598603
let exporter = InMemoryMetricExporter::default();
599-
let reader = PeriodicReader::builder(exporter.clone())
600-
.with_interval(interval)
601-
.build();
604+
let reader = PeriodicReader::builder(exporter.clone()).build();
602605

603606
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
604607
let result = meter_provider.shutdown();
@@ -607,20 +610,19 @@ mod tests {
607610
// calling shutdown again should return Err
608611
let result = meter_provider.shutdown();
609612
assert!(result.is_err());
613+
assert!(matches!(result, Err(ShutdownError::AlreadyShutdown)));
610614

611615
// calling shutdown again should return Err
612616
let result = meter_provider.shutdown();
613617
assert!(result.is_err());
618+
assert!(matches!(result, Err(ShutdownError::AlreadyShutdown)));
614619
}
615620

616621
#[test]
617622
fn flush_after_shutdown() {
618623
// Arrange
619-
let interval = std::time::Duration::from_millis(1);
620624
let exporter = InMemoryMetricExporter::default();
621-
let reader = PeriodicReader::builder(exporter.clone())
622-
.with_interval(interval)
623-
.build();
625+
let reader = PeriodicReader::builder(exporter.clone()).build();
624626

625627
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
626628
let result = meter_provider.force_flush();
@@ -637,11 +639,8 @@ mod tests {
637639
#[test]
638640
fn flush_repeat() {
639641
// Arrange
640-
let interval = std::time::Duration::from_millis(1);
641642
let exporter = InMemoryMetricExporter::default();
642-
let reader = PeriodicReader::builder(exporter.clone())
643-
.with_interval(interval)
644-
.build();
643+
let reader = PeriodicReader::builder(exporter.clone()).build();
645644

646645
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
647646
let result = meter_provider.force_flush();
@@ -655,11 +654,8 @@ mod tests {
655654
#[test]
656655
fn periodic_reader_without_pipeline() {
657656
// Arrange
658-
let interval = std::time::Duration::from_millis(1);
659657
let exporter = InMemoryMetricExporter::default();
660-
let reader = PeriodicReader::builder(exporter.clone())
661-
.with_interval(interval)
662-
.build();
658+
let reader = PeriodicReader::builder(exporter.clone()).build();
663659

664660
let rm = &mut ResourceMetrics {
665661
resource: Resource::empty(),
@@ -801,11 +797,8 @@ mod tests {
801797

802798
fn collection_helper(trigger: fn(SdkMeterProvider)) {
803799
// Arrange
804-
let interval = std::time::Duration::from_millis(10);
805800
let exporter = InMemoryMetricExporter::default();
806-
let reader = PeriodicReader::builder(exporter.clone())
807-
.with_interval(interval)
808-
.build();
801+
let reader = PeriodicReader::builder(exporter.clone()).build();
809802
let (sender, receiver) = mpsc::channel();
810803

811804
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
@@ -919,11 +912,8 @@ mod tests {
919912
}
920913

921914
fn tokio_async_inside_observable_callback_helper(use_current_tokio_runtime: bool) {
922-
let interval = std::time::Duration::from_millis(10);
923915
let exporter = InMemoryMetricExporter::default();
924-
let reader = PeriodicReader::builder(exporter.clone())
925-
.with_interval(interval)
926-
.build();
916+
let reader = PeriodicReader::builder(exporter.clone()).build();
927917

928918
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
929919
let meter = meter_provider.meter("test");

0 commit comments

Comments
 (0)