Skip to content

Commit e1caf26

Browse files
committed
common code
1 parent 97c47ab commit e1caf26

File tree

1 file changed

+63
-103
lines changed
  • opentelemetry-sdk/src/metrics

1 file changed

+63
-103
lines changed

opentelemetry-sdk/src/metrics/mod.rs

Lines changed: 63 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)