@@ -217,42 +217,72 @@ impl fmt::Debug for MeterProviderBuilder {
217
217
}
218
218
#[ cfg( test) ]
219
219
mod tests {
220
+ use crate :: resource:: {
221
+ SERVICE_NAME , TELEMETRY_SDK_LANGUAGE , TELEMETRY_SDK_NAME , TELEMETRY_SDK_VERSION ,
222
+ } ;
220
223
use crate :: testing:: metrics:: metric_reader:: TestMetricReader ;
221
224
use crate :: Resource ;
222
225
use opentelemetry:: global;
223
- use opentelemetry:: Key ;
224
- use opentelemetry:: KeyValue ;
226
+ use opentelemetry:: { Key , KeyValue , Value } ;
225
227
use std:: env;
226
228
227
229
#[ test]
228
230
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 > | {
232
234
assert_eq ! (
233
235
provider. pipes. 0 [ 0 ]
234
236
. resource
235
- . get( Key :: from_static_str( "service.name" ) )
237
+ . get( Key :: from_static_str( resource_key ) )
236
238
. map( |v| v. to_string( ) ) ,
237
239
expect. map( |s| s. to_string( ) )
238
240
) ;
239
241
} ;
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
+ } ) ;
245
274
246
275
// If user provided a resource, use that.
247
276
let reader2 = TestMetricReader :: new ( ) ;
248
277
let custom_meter_provider = super :: SdkMeterProvider :: builder ( )
249
278
. with_reader ( reader2)
250
279
. with_resource ( Resource :: new ( vec ! [ KeyValue :: new(
251
- "service.name" ,
280
+ SERVICE_NAME ,
252
281
"test_service" ,
253
282
) ] ) )
254
283
. 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 ) ;
256
286
257
287
temp_env:: with_var (
258
288
"OTEL_RESOURCE_ATTRIBUTES" ,
@@ -263,17 +293,15 @@ mod tests {
263
293
let env_resource_provider = super :: SdkMeterProvider :: builder ( )
264
294
. with_reader ( reader3)
265
295
. 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" ) ,
276
300
) ;
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 ) ;
277
305
} ,
278
306
) ;
279
307
@@ -287,18 +315,35 @@ mod tests {
287
315
. with_reader ( reader4)
288
316
. with_resource ( Resource :: default ( ) . merge ( & mut Resource :: new ( vec ! [
289
317
KeyValue :: new( "my-custom-key" , "my-custom-value" ) ,
318
+ KeyValue :: new( "my-custom-key2" , "my-custom-value2" ) ,
290
319
] ) ) )
291
320
. 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) ;
292
342
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
302
347
) ;
303
348
} ,
304
349
) ;
@@ -310,7 +355,7 @@ mod tests {
310
355
. with_resource ( Resource :: empty ( ) )
311
356
. build ( ) ;
312
357
313
- assert_service_name ( no_service_name, None ) ;
358
+ assert_eq ! ( no_service_name. pipes . 0 [ 0 ] . resource . len ( ) , 0 )
314
359
}
315
360
316
361
#[ test]
0 commit comments