@@ -217,42 +217,72 @@ impl fmt::Debug for MeterProviderBuilder {
217217}
218218#[ cfg( test) ]
219219mod tests {
220+ use crate :: resource:: {
221+ SERVICE_NAME , TELEMETRY_SDK_LANGUAGE , TELEMETRY_SDK_NAME , TELEMETRY_SDK_VERSION ,
222+ } ;
220223 use crate :: testing:: metrics:: metric_reader:: TestMetricReader ;
221224 use crate :: Resource ;
222225 use opentelemetry:: global;
223- use opentelemetry:: Key ;
224- use opentelemetry:: KeyValue ;
226+ use opentelemetry:: { Key , KeyValue , Value } ;
225227 use std:: env;
226228
227229 #[ test]
228230 fn test_meter_provider_resource ( ) {
229- // If users didn't provide a resource and there isn't a env var set. Use default one.
230- let assert_service_name = | provider : super :: SdkMeterProvider ,
231- expect : Option < & ' static str > | {
231+ let assert_resource = | provider : & super :: SdkMeterProvider ,
232+ resource_key : & ' static str ,
233+ expect : Option < & ' static str > | {
232234 assert_eq ! (
233235 provider. pipes. 0 [ 0 ]
234236 . resource
235- . get( Key :: from_static_str( "service.name" ) )
237+ . get( Key :: from_static_str( resource_key ) )
236238 . map( |v| v. to_string( ) ) ,
237239 expect. map( |s| s. to_string( ) )
238240 ) ;
239241 } ;
240- let reader = TestMetricReader :: new ( ) ;
241- let default_meter_provider = super :: SdkMeterProvider :: builder ( )
242- . with_reader ( reader)
243- . build ( ) ;
244- assert_service_name ( default_meter_provider, Some ( "unknown_service" ) ) ;
242+ let assert_telemetry_resource = |provider : & super :: SdkMeterProvider | {
243+ assert_eq ! (
244+ provider. pipes. 0 [ 0 ]
245+ . resource
246+ . get( TELEMETRY_SDK_LANGUAGE . into( ) ) ,
247+ Some ( Value :: from( "rust" ) )
248+ ) ;
249+ assert_eq ! (
250+ provider. pipes. 0 [ 0 ] . resource. get( TELEMETRY_SDK_NAME . into( ) ) ,
251+ Some ( Value :: from( "opentelemetry" ) )
252+ ) ;
253+ assert_eq ! (
254+ provider. pipes. 0 [ 0 ]
255+ . resource
256+ . get( TELEMETRY_SDK_VERSION . into( ) ) ,
257+ Some ( Value :: from( env!( "CARGO_PKG_VERSION" ) ) )
258+ ) ;
259+ } ;
260+
261+ // If users didn't provide a resource and there isn't a env var set. Use default one.
262+ temp_env:: with_var_unset ( "OTEL_RESOURCE_ATTRIBUTES" , || {
263+ let reader = TestMetricReader :: new ( ) ;
264+ let default_meter_provider = super :: SdkMeterProvider :: builder ( )
265+ . with_reader ( reader)
266+ . build ( ) ;
267+ assert_resource (
268+ & default_meter_provider,
269+ SERVICE_NAME ,
270+ Some ( "unknown_service" ) ,
271+ ) ;
272+ assert_telemetry_resource ( & default_meter_provider) ;
273+ } ) ;
245274
246275 // If user provided a resource, use that.
247276 let reader2 = TestMetricReader :: new ( ) ;
248277 let custom_meter_provider = super :: SdkMeterProvider :: builder ( )
249278 . with_reader ( reader2)
250279 . with_resource ( Resource :: new ( vec ! [ KeyValue :: new(
251- "service.name" ,
280+ SERVICE_NAME ,
252281 "test_service" ,
253282 ) ] ) )
254283 . build ( ) ;
255- assert_service_name ( custom_meter_provider, Some ( "test_service" ) ) ;
284+ assert_resource ( & custom_meter_provider, SERVICE_NAME , Some ( "test_service" ) ) ;
285+ assert_eq ! ( custom_meter_provider. pipes. 0 [ 0 ] . resource. len( ) , 1 ) ;
256286
257287 temp_env:: with_var (
258288 "OTEL_RESOURCE_ATTRIBUTES" ,
@@ -263,17 +293,15 @@ mod tests {
263293 let env_resource_provider = super :: SdkMeterProvider :: builder ( )
264294 . with_reader ( reader3)
265295 . build ( ) ;
266- assert_eq ! (
267- env_resource_provider. pipes. 0 [ 0 ] . resource,
268- Resource :: new( vec![
269- KeyValue :: new( "telemetry.sdk.name" , "opentelemetry" ) ,
270- KeyValue :: new( "telemetry.sdk.version" , env!( "CARGO_PKG_VERSION" ) ) ,
271- KeyValue :: new( "telemetry.sdk.language" , "rust" ) ,
272- KeyValue :: new( "key1" , "value1" ) ,
273- KeyValue :: new( "k3" , "value2" ) ,
274- KeyValue :: new( "service.name" , "unknown_service" ) ,
275- ] )
296+ assert_resource (
297+ & env_resource_provider,
298+ SERVICE_NAME ,
299+ Some ( "unknown_service" ) ,
276300 ) ;
301+ assert_resource ( & env_resource_provider, "key1" , Some ( "value1" ) ) ;
302+ assert_resource ( & env_resource_provider, "k3" , Some ( "value2" ) ) ;
303+ assert_telemetry_resource ( & env_resource_provider) ;
304+ assert_eq ! ( env_resource_provider. pipes. 0 [ 0 ] . resource. len( ) , 6 ) ;
277305 } ,
278306 ) ;
279307
@@ -287,18 +315,35 @@ mod tests {
287315 . with_reader ( reader4)
288316 . with_resource ( Resource :: default ( ) . merge ( & mut Resource :: new ( vec ! [
289317 KeyValue :: new( "my-custom-key" , "my-custom-value" ) ,
318+ KeyValue :: new( "my-custom-key2" , "my-custom-value2" ) ,
290319 ] ) ) )
291320 . build ( ) ;
321+ assert_resource (
322+ & user_provided_resource_config_provider,
323+ SERVICE_NAME ,
324+ Some ( "unknown_service" ) ,
325+ ) ;
326+ assert_resource (
327+ & user_provided_resource_config_provider,
328+ "my-custom-key" ,
329+ Some ( "my-custom-value" ) ,
330+ ) ;
331+ assert_resource (
332+ & user_provided_resource_config_provider,
333+ "my-custom-key2" ,
334+ Some ( "my-custom-value2" ) ,
335+ ) ;
336+ assert_resource (
337+ & user_provided_resource_config_provider,
338+ "k2" ,
339+ Some ( "value2" ) ,
340+ ) ;
341+ assert_telemetry_resource ( & user_provided_resource_config_provider) ;
292342 assert_eq ! (
293- user_provided_resource_config_provider. pipes. 0 [ 0 ] . resource,
294- Resource :: new( vec![
295- KeyValue :: new( "telemetry.sdk.name" , "opentelemetry" ) ,
296- KeyValue :: new( "telemetry.sdk.version" , env!( "CARGO_PKG_VERSION" ) ) ,
297- KeyValue :: new( "telemetry.sdk.language" , "rust" ) ,
298- KeyValue :: new( "my-custom-key" , "my-custom-value" ) ,
299- KeyValue :: new( "k2" , "value2" ) ,
300- KeyValue :: new( "service.name" , "unknown_service" ) ,
301- ] )
343+ user_provided_resource_config_provider. pipes. 0 [ 0 ]
344+ . resource
345+ . len( ) ,
346+ 7
302347 ) ;
303348 } ,
304349 ) ;
@@ -310,7 +355,7 @@ mod tests {
310355 . with_resource ( Resource :: empty ( ) )
311356 . build ( ) ;
312357
313- assert_service_name ( no_service_name, None ) ;
358+ assert_eq ! ( no_service_name. pipes . 0 [ 0 ] . resource . len ( ) , 0 )
314359 }
315360
316361 #[ test]
0 commit comments