@@ -1465,118 +1465,72 @@ mod tests {
14651465
14661466 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
14671467 async fn view_test_rename ( ) {
1468- // Run this test with stdout enabled to see output.
1469- // cargo test view_test_rename --all-features -- --nocapture
1470-
1471- // Arrange
1472- let view_rename = |i : & Instrument | {
1473- if i. name == "my_counter" {
1474- Some ( Stream :: new ( ) . name ( "my_counter_renamed" ) )
1475- } else {
1476- None
1477- }
1478- } ;
1479-
1480- let exporter = InMemoryMetricExporter :: default ( ) ;
1481- let meter_provider = SdkMeterProvider :: builder ( )
1482- . with_periodic_exporter ( exporter. clone ( ) )
1483- . with_view ( view_rename)
1484- . build ( ) ;
1485-
1486- // Act
1487- let meter = meter_provider. meter ( "test" ) ;
1488- let counter = meter
1489- . f64_counter ( "my_counter" )
1490- . with_unit ( "my_unit" )
1491- . with_description ( "my_description" )
1492- . build ( ) ;
1493-
1494- counter. add ( 1.5 , & [ KeyValue :: new ( "key1" , "value1" ) ] ) ;
1495- meter_provider. force_flush ( ) . unwrap ( ) ;
1496-
1497- // Assert
1498- let resource_metrics = exporter
1499- . get_finished_metrics ( )
1500- . expect ( "metrics are expected to be exported." ) ;
1501- assert ! ( !resource_metrics. is_empty( ) ) ;
1502- let metric = & resource_metrics[ 0 ] . scope_metrics [ 0 ] . metrics [ 0 ] ;
1503- assert_eq ! (
1504- metric. name, "my_counter_renamed" ,
1505- "my_counter_renamed is expected."
1506- ) ;
1507- assert_eq ! ( metric. unit, "my_unit" , "Original unit should be retained." ) ;
1508- assert_eq ! (
1509- metric. description, "my_description" ,
1510- "Original description should be retained."
1511- ) ;
1468+ test_view_customization (
1469+ |i| {
1470+ if i. name == "my_counter" {
1471+ Some ( Stream :: new ( ) . name ( "my_counter_renamed" ) )
1472+ } else {
1473+ None
1474+ }
1475+ } ,
1476+ "my_counter_renamed" ,
1477+ "my_unit" ,
1478+ "my_description" ,
1479+ )
1480+ . await ;
15121481 }
15131482
15141483 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
15151484 async fn view_test_change_unit ( ) {
1516- // Run this test with stdout enabled to see output.
1517- // cargo test view_test_change_unit --all-features -- --nocapture
1518-
1519- // Arrange
1520- let view_rename = |i : & Instrument | {
1521- if i. name == "my_counter" {
1522- Some ( Stream :: new ( ) . unit ( "my_unit_new" ) )
1523- } else {
1524- None
1525- }
1526- } ;
1527-
1528- let exporter = InMemoryMetricExporter :: default ( ) ;
1529- let meter_provider = SdkMeterProvider :: builder ( )
1530- . with_periodic_exporter ( exporter. clone ( ) )
1531- . with_view ( view_rename)
1532- . build ( ) ;
1533-
1534- // Act
1535- let meter = meter_provider. meter ( "test" ) ;
1536- let counter = meter
1537- . f64_counter ( "my_counter" )
1538- . with_unit ( "my_unit" )
1539- . with_description ( "my_description" )
1540- . build ( ) ;
1541-
1542- counter. add ( 1.5 , & [ KeyValue :: new ( "key1" , "value1" ) ] ) ;
1543- meter_provider. force_flush ( ) . unwrap ( ) ;
1544-
1545- // Assert
1546- let resource_metrics = exporter
1547- . get_finished_metrics ( )
1548- . expect ( "metrics are expected to be exported." ) ;
1549- assert ! ( !resource_metrics. is_empty( ) ) ;
1550- let metric = & resource_metrics[ 0 ] . scope_metrics [ 0 ] . metrics [ 0 ] ;
1551- assert_eq ! (
1552- metric. name, "my_counter" ,
1553- "original name is expected."
1554- ) ;
1555- assert_eq ! ( metric. unit, "my_unit_new" , "unit should be updated." ) ;
1556- assert_eq ! (
1557- metric. description, "my_description" ,
1558- "Original description should be retained."
1559- ) ;
1485+ test_view_customization (
1486+ |i| {
1487+ if i. name == "my_counter" {
1488+ Some ( Stream :: new ( ) . unit ( "my_unit_new" ) )
1489+ } else {
1490+ None
1491+ }
1492+ } ,
1493+ "my_counter" ,
1494+ "my_unit_new" ,
1495+ "my_description" ,
1496+ )
1497+ . await ;
15601498 }
15611499
15621500 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
15631501 async fn view_test_change_description ( ) {
1502+ test_view_customization (
1503+ |i| {
1504+ if i. name == "my_counter" {
1505+ Some ( Stream :: new ( ) . description ( "my_description_new" ) )
1506+ } else {
1507+ None
1508+ }
1509+ } ,
1510+ "my_counter" ,
1511+ "my_unit" ,
1512+ "my_description_new" ,
1513+ )
1514+ . await ;
1515+ }
1516+
1517+ /// Helper function to test view customizations
1518+ async fn test_view_customization < F > (
1519+ view_function : F ,
1520+ expected_name : & str ,
1521+ expected_unit : & str ,
1522+ expected_description : & str ,
1523+ ) where
1524+ F : Fn ( & Instrument ) -> Option < Stream > + Send + Sync + ' static ,
1525+ {
15641526 // Run this test with stdout enabled to see output.
1565- // cargo test view_test_change_description --all-features -- --nocapture
1527+ // cargo test view_test_* --all-features -- --nocapture
15661528
15671529 // Arrange
1568- let view_rename = |i : & Instrument | {
1569- if i. name == "my_counter" {
1570- Some ( Stream :: new ( ) . description ( "my_description_new" ) )
1571- } else {
1572- None
1573- }
1574- } ;
1575-
15761530 let exporter = InMemoryMetricExporter :: default ( ) ;
15771531 let meter_provider = SdkMeterProvider :: builder ( )
15781532 . with_periodic_exporter ( exporter. clone ( ) )
1579- . with_view ( view_rename )
1533+ . with_view ( view_function )
15801534 . build ( ) ;
15811535
15821536 // Act
@@ -1597,13 +1551,19 @@ mod tests {
15971551 assert ! ( !resource_metrics. is_empty( ) ) ;
15981552 let metric = & resource_metrics[ 0 ] . scope_metrics [ 0 ] . metrics [ 0 ] ;
15991553 assert_eq ! (
1600- metric. name, "my_counter" ,
1601- "original name is expected."
1554+ metric. name, expected_name,
1555+ "Expected name: {}." ,
1556+ expected_name
1557+ ) ;
1558+ assert_eq ! (
1559+ metric. unit, expected_unit,
1560+ "Expected unit: {}." ,
1561+ expected_unit
16021562 ) ;
1603- assert_eq ! ( metric. unit, "my_unit" , "Original unit should be retained." ) ;
16041563 assert_eq ! (
1605- metric. description, "my_description_new" ,
1606- "description should be updated."
1564+ metric. description, expected_description,
1565+ "Expected description: {}." ,
1566+ expected_description
16071567 ) ;
16081568 }
16091569
0 commit comments