FlutterDestination writes into GCS (#269)

For now, we also preserve the datastore writing. We'll eventually remove
the datastore writing.
This commit is contained in:
Yuqian Li
2021-01-26 14:00:30 -08:00
committed by GitHub
parent 1c98c73696
commit 2e3dea9e04
4 changed files with 40 additions and 13 deletions

View File

@ -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

View File

@ -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<FlutterDestination> makeFromCredentialsJson(
Map<String, dynamic> json) async {
Map<String, dynamic> 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<FlutterDestination> 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<void> update(List<MetricPoint> points) async {
await _legacyDestination.update(points);
await _skiaPerfDestination.update(points);
}
final LegacyFlutterDestination _legacyDestination;
final SkiaPerfDestination _skiaPerfDestination;
}

View File

@ -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:

View File

@ -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<String, dynamic> credentialsJson = getTestGcpCredentialsJson();
test('FlutterDestination integration test with update.', () async {
final FlutterDestination dst =
await FlutterDestination.makeFromCredentialsJson(credentialsJson,
isTesting: true);
dst.update(<FlutterEngineMetricPoint>[simplePoint]);
}, skip: credentialsJson == null);
}