Fix for RMS parsing (#2347)
diff --git a/packages/metrics_center/CHANGELOG.md b/packages/metrics_center/CHANGELOG.md
index d4727ad..ec99e05 100644
--- a/packages/metrics_center/CHANGELOG.md
+++ b/packages/metrics_center/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.5
+
+- Fix JSON parsing issue when running in sound null-safety mode.
+
## 1.0.4
- Fix un-await-ed Future in `SkiaPerfDestination.update`.
diff --git a/packages/metrics_center/lib/src/google_benchmark.dart b/packages/metrics_center/lib/src/google_benchmark.dart
index 809f903..feb1f36 100644
--- a/packages/metrics_center/lib/src/google_benchmark.dart
+++ b/packages/metrics_center/lib/src/google_benchmark.dart
@@ -66,7 +66,7 @@
) {
final String name = item[kNameKey] as String;
final Map<String, String> timeUnitMap = <String, String>{
- kUnitKey: item[_kTimeUnitKey] as String
+ if (item.containsKey(_kTimeUnitKey)) kUnitKey: item[_kTimeUnitKey] as String
};
for (final String subResult in item.keys) {
if (!_kNonNumericalValueSubResults.contains(subResult)) {
diff --git a/packages/metrics_center/pubspec.yaml b/packages/metrics_center/pubspec.yaml
index b95ab33..617eadd 100644
--- a/packages/metrics_center/pubspec.yaml
+++ b/packages/metrics_center/pubspec.yaml
@@ -1,5 +1,5 @@
name: metrics_center
-version: 1.0.4
+version: 1.0.5
description:
Support multiple performance metrics sources/formats and destinations.
repository: https://github.com/flutter/packages/tree/main/packages/metrics_center
diff --git a/packages/metrics_center/test/example_google_benchmark.json b/packages/metrics_center/test/example_google_benchmark.json
index e2bf028..3a33678 100644
--- a/packages/metrics_center/test/example_google_benchmark.json
+++ b/packages/metrics_center/test/example_google_benchmark.json
@@ -78,6 +78,33 @@
"real_coefficient": 6548,
"big_o": "N",
"time_unit": "ns"
+ },
+ {
+ "name": "ParagraphFixture/TextBigO_BigO",
+ "family_index": 5,
+ "per_family_instance_index": 0,
+ "run_name": "ParagraphFixture/TextBigO",
+ "run_type": "aggregate",
+ "repetitions": 1,
+ "threads": 1,
+ "aggregate_name": "BigO",
+ "aggregate_unit": "time",
+ "cpu_coefficient": 3.8,
+ "real_coefficient": 3.89,
+ "big_o": "N",
+ "time_unit": "ns"
+ },
+ {
+ "name": "ParagraphFixture/TextBigO_RMS",
+ "family_index": 5,
+ "per_family_instance_index": 0,
+ "run_name": "ParagraphFixture/TextBigO",
+ "run_type": "aggregate",
+ "repetitions": 1,
+ "threads": 1,
+ "aggregate_name": "RMS",
+ "aggregate_unit": "percentage",
+ "rms": 4.89
}
]
}
diff --git a/packages/metrics_center/test/google_benchmark_test.dart b/packages/metrics_center/test/google_benchmark_test.dart
index 7dad807..5bb02cc 100644
--- a/packages/metrics_center/test/google_benchmark_test.dart
+++ b/packages/metrics_center/test/google_benchmark_test.dart
@@ -13,10 +13,10 @@
test('GoogleBenchmarkParser parses example json.', () async {
final List<MetricPoint> points =
await GoogleBenchmarkParser.parse('test/example_google_benchmark.json');
- expect(points.length, 6);
+ expect(points.length, 9);
expectSetMatch(
points.map((MetricPoint p) => p.value),
- <int>[101, 101, 4460, 4460, 6548, 6548],
+ <double>[101, 101, 4460, 4460, 6548, 6548, 3.8, 3.89, 4.89],
);
expectSetMatch(
points.map((MetricPoint p) => p.tags[kSubResultKey]),
@@ -25,6 +25,7 @@
'real_time',
'cpu_coefficient',
'real_coefficient',
+ 'rms',
],
);
expectSetMatch(
@@ -33,6 +34,8 @@
'BM_PaintRecordInit',
'SkParagraphFixture/ShortLayout',
'SkParagraphFixture/TextBigO_BigO',
+ 'ParagraphFixture/TextBigO_BigO',
+ 'ParagraphFixture/TextBigO_RMS',
],
);
for (final MetricPoint p in points) {