11#![ cfg( unix) ]
22
3- use std:: fs;
3+ use anyhow:: { Context , Result } ;
4+ use ctor:: dtor;
45use integration_test_runner:: metrics_asserter:: { read_metrics_from_json, MetricsAsserter } ;
6+ use integration_test_runner:: test_utils;
7+ use integration_test_runner:: test_utils:: start_collector_container;
58use opentelemetry:: KeyValue ;
69use opentelemetry_otlp:: MetricExporter ;
10+ use opentelemetry_proto:: tonic:: metrics:: v1:: MetricsData ;
711use opentelemetry_sdk:: metrics:: { MeterProviderBuilder , PeriodicReader , SdkMeterProvider } ;
812use opentelemetry_sdk:: Resource ;
13+ use serde_json:: Value ;
14+ use std:: fs;
915use std:: fs:: File ;
1016use std:: sync:: Mutex ;
1117use std:: time:: Duration ;
12- use serde_json:: Value ;
13- use anyhow:: { Result , Context } ;
14- use ctor:: dtor;
15- use integration_test_runner:: test_utils;
16- use integration_test_runner:: test_utils:: start_collector_container;
17- use opentelemetry_proto:: tonic:: metrics:: v1:: MetricsData ;
1818
1919static SETUP_DONE : Mutex < bool > = Mutex :: new ( false ) ;
2020
2121static RESULT_PATH : & str = "actual/metrics.json" ;
2222
2323/// Initializes the OpenTelemetry metrics pipeline
2424async fn init_metrics ( ) -> SdkMeterProvider {
25-
2625 let exporter_builder = MetricExporter :: builder ( ) ;
2726
2827 #[ cfg( feature = "tonic-client" ) ]
@@ -72,9 +71,15 @@ pub fn fetch_latest_metrics_for_scope(scope_name: &str) -> Result<Value> {
7271
7372 // Parse the JSON and filter metrics strictly by the scope name
7473 let mut filtered_json = json_line;
75- if let Some ( resource_metrics) = filtered_json. get_mut ( "resourceMetrics" ) . and_then ( |v| v. as_array_mut ( ) ) {
74+ if let Some ( resource_metrics) = filtered_json
75+ . get_mut ( "resourceMetrics" )
76+ . and_then ( |v| v. as_array_mut ( ) )
77+ {
7678 resource_metrics. retain_mut ( |resource| {
77- if let Some ( scope_metrics) = resource. get_mut ( "scopeMetrics" ) . and_then ( |v| v. as_array_mut ( ) ) {
79+ if let Some ( scope_metrics) = resource
80+ . get_mut ( "scopeMetrics" )
81+ . and_then ( |v| v. as_array_mut ( ) )
82+ {
7883 // Retain only `ScopeMetrics` that match the specified scope_name
7984 scope_metrics. retain ( |scope| {
8085 scope
@@ -98,11 +103,10 @@ pub fn fetch_latest_metrics_for_scope(scope_name: &str) -> Result<Value> {
98103/// Performs setup for metrics tests, including environment setup and data seeding.
99104/// This only needs to be done once for the whole test suite
100105async fn setup_metrics_test ( ) {
101-
102106 let mut done = SETUP_DONE . lock ( ) . unwrap ( ) ;
103107 if !* done {
104108 println ! ( "Running setup before any tests..." ) ;
105- * done = true ; // Mark setup as done
109+ * done = true ; // Mark setup as done
106110
107111 // Make sure the collector container is running
108112 start_collector_container ( ) . await ;
@@ -129,8 +133,10 @@ pub fn validate_metrics_against_results(scope_name: &str) -> Result<()> {
129133
130134 // Read the expected metrics from the results file
131135 let expected_metrics = {
132- let file = File :: open ( & results_file_path)
133- . context ( format ! ( "Failed to open results file: {}" , results_file_path) ) ?;
136+ let file = File :: open ( & results_file_path) . context ( format ! (
137+ "Failed to open results file: {}" ,
138+ results_file_path
139+ ) ) ?;
134140 read_metrics_from_json ( file)
135141 } ?;
136142
@@ -171,8 +177,7 @@ mod tests {
171177 const METER_NAME : & str = "test_u64_counter_meter" ;
172178
173179 // Add data to u64_counter
174- let meter = opentelemetry:: global:: meter_provider ( )
175- . meter ( METER_NAME ) ;
180+ let meter = opentelemetry:: global:: meter_provider ( ) . meter ( METER_NAME ) ;
176181
177182 let counter = meter. u64_counter ( "counter_u64" ) . build ( ) ;
178183 counter. add (
@@ -191,15 +196,14 @@ mod tests {
191196 Ok ( ( ) )
192197 }
193198
194-
195199 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 4 ) ]
196200 // #[ignore] // skip when running unit test
197201 async fn test_histogram ( ) -> Result < ( ) > {
198202 _ = setup_metrics_test ( ) . await ;
199203 const METER_NAME : & str = "test_histogram_meter" ;
200204
201205 // Add data to histogram
202- let meter= opentelemetry:: global:: meter_provider ( ) . meter ( METER_NAME ) ;
206+ let meter = opentelemetry:: global:: meter_provider ( ) . meter ( METER_NAME ) ;
203207 let histogram = meter. u64_histogram ( "example_histogram" ) . build ( ) ;
204208 histogram. record ( 42 , & [ KeyValue :: new ( "mykey3" , "myvalue4" ) ] ) ;
205209 tokio:: time:: sleep ( Duration :: from_secs ( 5 ) ) . await ;
@@ -216,7 +220,7 @@ mod tests {
216220 const METER_NAME : & str = "test_up_down_meter" ;
217221
218222 // Add data to up_down_counter
219- let meter= opentelemetry:: global:: meter_provider ( ) . meter ( METER_NAME ) ;
223+ let meter = opentelemetry:: global:: meter_provider ( ) . meter ( METER_NAME ) ;
220224 let up_down_counter = meter. i64_up_down_counter ( "example_up_down_counter" ) . build ( ) ;
221225 up_down_counter. add ( -1 , & [ KeyValue :: new ( "mykey5" , "myvalue5" ) ] ) ;
222226 tokio:: time:: sleep ( Duration :: from_secs ( 5 ) ) . await ;
0 commit comments