diff --git a/packages/metrics_center/CHANGELOG.md b/packages/metrics_center/CHANGELOG.md index beea2ff637..64fdfcc196 100644 --- a/packages/metrics_center/CHANGELOG.md +++ b/packages/metrics_center/CHANGELOG.md @@ -1,3 +1,8 @@ +# 0.0.5 + +- `FlutterDestination` writes into both Skia perf GCS and the legacy datastore. +- `FlutterDestination.makeFromAccessToken` returns a `Future`. + # 0.0.4+1 - Moved to the `flutter/packages` repository diff --git a/packages/metrics_center/lib/src/flutter.dart b/packages/metrics_center/lib/src/flutter.dart index 3641135d28..7fbfc6c842 100644 --- a/packages/metrics_center/lib/src/flutter.dart +++ b/packages/metrics_center/lib/src/flutter.dart @@ -6,6 +6,7 @@ import 'common.dart'; import 'constants.dart'; import 'legacy_datastore.dart'; import 'legacy_flutter.dart'; +import 'skiaperf.dart'; /// Convenient class to capture the benchmarks in the Flutter engine repo. class FlutterEngineMetricPoint extends MetricPoint { @@ -33,28 +34,38 @@ class FlutterDestination extends MetricDestination { // TODO(liyuqian): change the implementation of this class (without changing // its public APIs) to remove `LegacyFlutterDestination` and directly use // `SkiaPerfDestination` once the migration is fully done. - FlutterDestination._(this._legacyDestination); + FlutterDestination._(this._legacyDestination, this._skiaPerfDestination); /// Creates a [FlutterDestination] from service account JSON. static Future makeFromCredentialsJson( - Map json) async { + Map json, + {bool isTesting = false}) async { final LegacyFlutterDestination legacyDestination = LegacyFlutterDestination(await datastoreFromCredentialsJson(json)); - return FlutterDestination._(legacyDestination); + final SkiaPerfDestination skiaPerfDestination = + await SkiaPerfDestination.makeFromGcpCredentials(json, + isTesting: isTesting); + return FlutterDestination._(legacyDestination, skiaPerfDestination); } /// Creates a [FlutterDestination] from an OAuth access token. - static FlutterDestination makeFromAccessToken( - String accessToken, String projectId) { + static Future makeFromAccessToken( + String accessToken, String projectId, + {bool isTesting = false}) async { final LegacyFlutterDestination legacyDestination = LegacyFlutterDestination( datastoreFromAccessToken(accessToken, projectId)); - return FlutterDestination._(legacyDestination); + final SkiaPerfDestination skiaPerfDestination = + await SkiaPerfDestination.makeFromAccessToken(accessToken, projectId, + isTesting: isTesting); + return FlutterDestination._(legacyDestination, skiaPerfDestination); } @override Future update(List points) async { await _legacyDestination.update(points); + await _skiaPerfDestination.update(points); } final LegacyFlutterDestination _legacyDestination; + final SkiaPerfDestination _skiaPerfDestination; } diff --git a/packages/metrics_center/pubspec.yaml b/packages/metrics_center/pubspec.yaml index 6fe34daefb..f4905a3ef1 100644 --- a/packages/metrics_center/pubspec.yaml +++ b/packages/metrics_center/pubspec.yaml @@ -1,5 +1,5 @@ name: metrics_center -version: 0.0.4+1 +version: 0.0.5 description: Support multiple performance metrics sources/formats and destinations. homepage: diff --git a/packages/metrics_center/test/flutter_test.dart b/packages/metrics_center/test/flutter_test.dart index 341b0ff6da..398516b824 100644 --- a/packages/metrics_center/test/flutter_test.dart +++ b/packages/metrics_center/test/flutter_test.dart @@ -6,15 +6,17 @@ import 'package:metrics_center/src/constants.dart'; import 'package:metrics_center/src/flutter.dart'; import 'common.dart'; +import 'utility.dart'; void main() { + const String gitRevision = 'ca799fa8b2254d09664b78ee80c43b434788d112'; + final FlutterEngineMetricPoint simplePoint = FlutterEngineMetricPoint( + 'BM_ParagraphLongLayout', + 287235, + gitRevision, + ); + test('FlutterEngineMetricPoint works.', () { - const String gitRevision = 'ca799fa8b2254d09664b78ee80c43b434788d112'; - final FlutterEngineMetricPoint simplePoint = FlutterEngineMetricPoint( - 'BM_ParagraphLongLayout', - 287235, - gitRevision, - ); expect(simplePoint.value, equals(287235)); expect(simplePoint.tags[kGithubRepoKey], kFlutterEngineRepo); expect(simplePoint.tags[kGitRevisionKey], gitRevision); @@ -35,4 +37,13 @@ void main() { expect(detailedPoint.tags['sub_result'], equals('CPU')); expect(detailedPoint.tags[kUnitKey], equals('ns')); }); + + final Map credentialsJson = getTestGcpCredentialsJson(); + + test('FlutterDestination integration test with update.', () async { + final FlutterDestination dst = + await FlutterDestination.makeFromCredentialsJson(credentialsJson, + isTesting: true); + dst.update([simplePoint]); + }, skip: credentialsJson == null); }