ottotom_testsupport/
reader.rs1use 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}