Skip to content

Commit ed4d9a5

Browse files
committed
Add more validations to Metrics tests
1 parent d0c8105 commit ed4d9a5

File tree

1 file changed

+118
-8
lines changed
  • opentelemetry-sdk/src/metrics

1 file changed

+118
-8
lines changed

opentelemetry-sdk/src/metrics/mod.rs

+118-8
Original file line numberDiff line numberDiff line change
@@ -1046,39 +1046,85 @@ mod tests {
10461046
test_context.flush_metrics();
10471047

10481048
// Assert
1049-
let histogram = test_context.get_aggregation::<data::Histogram<u64>>("my_histogram", None);
1049+
let histogram_data =
1050+
test_context.get_aggregation::<data::Histogram<u64>>("my_histogram", None);
10501051
// Expecting 2 time-series.
1051-
assert_eq!(histogram.data_points.len(), 2);
1052+
assert_eq!(histogram_data.data_points.len(), 2);
10521053
if let Temporality::Cumulative = temporality {
10531054
assert_eq!(
1054-
histogram.temporality,
1055+
histogram_data.temporality,
10551056
Temporality::Cumulative,
10561057
"Should produce cumulative"
10571058
);
10581059
} else {
10591060
assert_eq!(
1060-
histogram.temporality,
1061+
histogram_data.temporality,
10611062
Temporality::Delta,
10621063
"Should produce delta"
10631064
);
10641065
}
10651066

10661067
// find and validate key1=value2 datapoint
10671068
let data_point1 =
1068-
find_histogram_datapoint_with_key_value(&histogram.data_points, "key1", "value1")
1069+
find_histogram_datapoint_with_key_value(&histogram_data.data_points, "key1", "value1")
10691070
.expect("datapoint with key1=value1 expected");
10701071
assert_eq!(data_point1.count, values_kv1.len() as u64);
10711072
assert_eq!(data_point1.sum, values_kv1.iter().sum::<u64>());
10721073
assert_eq!(data_point1.min.unwrap(), *values_kv1.iter().min().unwrap());
10731074
assert_eq!(data_point1.max.unwrap(), *values_kv1.iter().max().unwrap());
10741075

10751076
let data_point2 =
1076-
find_histogram_datapoint_with_key_value(&histogram.data_points, "key1", "value2")
1077+
find_histogram_datapoint_with_key_value(&histogram_data.data_points, "key1", "value2")
10771078
.expect("datapoint with key1=value2 expected");
10781079
assert_eq!(data_point2.count, values_kv2.len() as u64);
10791080
assert_eq!(data_point2.sum, values_kv2.iter().sum::<u64>());
10801081
assert_eq!(data_point2.min.unwrap(), *values_kv2.iter().min().unwrap());
10811082
assert_eq!(data_point2.max.unwrap(), *values_kv2.iter().max().unwrap());
1083+
1084+
// Reset and report more measurements
1085+
test_context.reset_metrics();
1086+
for value in values_kv1.iter() {
1087+
histogram.record(*value, &[KeyValue::new("key1", "value1")]);
1088+
}
1089+
1090+
for value in values_kv2.iter() {
1091+
histogram.record(*value, &[KeyValue::new("key1", "value2")]);
1092+
}
1093+
1094+
test_context.flush_metrics();
1095+
1096+
let histogram_data =
1097+
test_context.get_aggregation::<data::Histogram<u64>>("my_histogram", None);
1098+
assert_eq!(histogram_data.data_points.len(), 2);
1099+
let data_point1 =
1100+
find_histogram_datapoint_with_key_value(&histogram_data.data_points, "key1", "value1")
1101+
.expect("datapoint with key1=value1 expected");
1102+
if temporality == Temporality::Cumulative {
1103+
assert_eq!(data_point1.count, 2 * (values_kv1.len() as u64));
1104+
assert_eq!(data_point1.sum, 2 * (values_kv1.iter().sum::<u64>()));
1105+
assert_eq!(data_point1.min.unwrap(), *values_kv1.iter().min().unwrap());
1106+
assert_eq!(data_point1.max.unwrap(), *values_kv1.iter().max().unwrap());
1107+
} else {
1108+
assert_eq!(data_point1.count, values_kv1.len() as u64);
1109+
assert_eq!(data_point1.sum, values_kv1.iter().sum::<u64>());
1110+
assert_eq!(data_point1.min.unwrap(), *values_kv1.iter().min().unwrap());
1111+
assert_eq!(data_point1.max.unwrap(), *values_kv1.iter().max().unwrap());
1112+
}
1113+
1114+
let data_point1 =
1115+
find_histogram_datapoint_with_key_value(&histogram_data.data_points, "key1", "value2")
1116+
.expect("datapoint with key1=value1 expected");
1117+
if temporality == Temporality::Cumulative {
1118+
assert_eq!(data_point1.count, 2 * (values_kv2.len() as u64));
1119+
assert_eq!(data_point1.sum, 2 * (values_kv2.iter().sum::<u64>()));
1120+
assert_eq!(data_point1.min.unwrap(), *values_kv2.iter().min().unwrap());
1121+
assert_eq!(data_point1.max.unwrap(), *values_kv2.iter().max().unwrap());
1122+
} else {
1123+
assert_eq!(data_point1.count, values_kv2.len() as u64);
1124+
assert_eq!(data_point1.sum, values_kv2.iter().sum::<u64>());
1125+
assert_eq!(data_point1.min.unwrap(), *values_kv2.iter().min().unwrap());
1126+
assert_eq!(data_point1.max.unwrap(), *values_kv2.iter().max().unwrap());
1127+
}
10821128
}
10831129

10841130
fn counter_aggregation_helper(temporality: Temporality) {
@@ -1122,12 +1168,44 @@ mod tests {
11221168
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value2")
11231169
.expect("datapoint with key1=value2 expected");
11241170
assert_eq!(data_point1.value, 3);
1171+
1172+
// Reset and report more measurements
1173+
test_context.reset_metrics();
1174+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1175+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1176+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1177+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1178+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1179+
1180+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1181+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1182+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1183+
1184+
test_context.flush_metrics();
1185+
1186+
let sum = test_context.get_aggregation::<data::Sum<u64>>("my_counter", None);
1187+
assert_eq!(sum.data_points.len(), 2);
1188+
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value1")
1189+
.expect("datapoint with key1=value1 expected");
1190+
if temporality == Temporality::Cumulative {
1191+
assert_eq!(data_point1.value, 10);
1192+
} else {
1193+
assert_eq!(data_point1.value, 5);
1194+
}
1195+
1196+
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value2")
1197+
.expect("datapoint with key1=value2 expected");
1198+
if temporality == Temporality::Cumulative {
1199+
assert_eq!(data_point1.value, 6);
1200+
} else {
1201+
assert_eq!(data_point1.value, 3);
1202+
}
11251203
}
11261204

11271205
fn updown_counter_aggregation_helper(temporality: Temporality) {
11281206
// Arrange
11291207
let mut test_context = TestContext::new(temporality);
1130-
let counter = test_context.i64_up_down_counter("test", "my_counter", None);
1208+
let counter = test_context.i64_up_down_counter("test", "my_updown_counter", None);
11311209

11321210
// Act
11331211
counter.add(1, &[KeyValue::new("key1", "value1")]);
@@ -1143,7 +1221,7 @@ mod tests {
11431221
test_context.flush_metrics();
11441222

11451223
// Assert
1146-
let sum = test_context.get_aggregation::<data::Sum<i64>>("my_counter", None);
1224+
let sum = test_context.get_aggregation::<data::Sum<i64>>("my_updown_counter", None);
11471225
// Expecting 2 time-series.
11481226
assert_eq!(sum.data_points.len(), 2);
11491227
assert!(
@@ -1168,6 +1246,38 @@ mod tests {
11681246
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value2")
11691247
.expect("datapoint with key1=value2 expected");
11701248
assert_eq!(data_point1.value, 3);
1249+
1250+
// Reset and report more measurements
1251+
test_context.reset_metrics();
1252+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1253+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1254+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1255+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1256+
counter.add(1, &[KeyValue::new("key1", "value1")]);
1257+
1258+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1259+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1260+
counter.add(1, &[KeyValue::new("key1", "value2")]);
1261+
1262+
test_context.flush_metrics();
1263+
1264+
let sum = test_context.get_aggregation::<data::Sum<i64>>("my_updown_counter", None);
1265+
assert_eq!(sum.data_points.len(), 2);
1266+
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value1")
1267+
.expect("datapoint with key1=value1 expected");
1268+
if temporality == Temporality::Cumulative {
1269+
assert_eq!(data_point1.value, 10);
1270+
} else {
1271+
assert_eq!(data_point1.value, 5);
1272+
}
1273+
1274+
let data_point1 = find_datapoint_with_key_value(&sum.data_points, "key1", "value2")
1275+
.expect("datapoint with key1=value2 expected");
1276+
if temporality == Temporality::Cumulative {
1277+
assert_eq!(data_point1.value, 6);
1278+
} else {
1279+
assert_eq!(data_point1.value, 3);
1280+
}
11711281
}
11721282

11731283
fn find_datapoint_with_key_value<'a, T>(

0 commit comments

Comments
 (0)