Skip to main content

ottotom_testsupport/
reader.rs

1use std::sync::{Arc, Weak};
2
3use opentelemetry_sdk::error::OTelSdkResult;
4use opentelemetry_sdk::metrics::data::ResourceMetrics;
5use opentelemetry_sdk::metrics::reader::MetricReader;
6use opentelemetry_sdk::metrics::{InstrumentKind, ManualReader, Pipeline, Temporality};
7
8#[derive(Debug, Clone)]
9pub struct TestMetricsReader {
10    inner: Arc<ManualReader>,
11}
12
13impl Default for TestMetricsReader {
14    fn default() -> Self {
15        Self {
16            inner: Arc::new(ManualReader::builder().build()),
17        }
18    }
19}
20
21impl MetricReader for TestMetricsReader {
22    fn register_pipeline(&self, pipeline: Weak<Pipeline>) {
23        self.inner.register_pipeline(pipeline);
24    }
25
26    fn collect(&self, rm: &mut ResourceMetrics) -> OTelSdkResult {
27        self.inner.collect(rm)
28    }
29
30    fn force_flush(&self) -> OTelSdkResult {
31        self.inner.force_flush()
32    }
33
34    fn shutdown(&self) -> OTelSdkResult {
35        self.inner.shutdown()
36    }
37
38    fn shutdown_with_timeout(&self, timeout: std::time::Duration) -> OTelSdkResult {
39        self.inner.shutdown_with_timeout(timeout)
40    }
41
42    fn temporality(&self, _kind: InstrumentKind) -> Temporality {
43        Temporality::Cumulative
44    }
45}