Commit 0c7a9da9 authored by Yegor's avatar Yegor Committed by GitHub

microbenchmarks: single-line JSON; consolidate #7433 workaround (#7450)

- output single-line JSON because iOS 9.x cannot output more than one line
- move the workaround for #7433 into LiveTestWidgetsFlutterBinding so that it works in all cases (e.g. animation_bench.dart on iOS)
parent a27192fe
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'dart:convert' show JsonEncoder; import 'dart:convert' show JSON;
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
...@@ -46,8 +46,8 @@ class BenchmarkResultPrinter { ...@@ -46,8 +46,8 @@ class BenchmarkResultPrinter {
} }
String _printJson() { String _printJson() {
const JsonEncoder encoder = const JsonEncoder.withIndent(' '); return JSON.encode(new Map<String, double>.fromIterable(
return encoder.convert(new Map<String, double>.fromIterable(_results, _results,
key: (_BenchmarkResult result) => result.name, key: (_BenchmarkResult result) => result.name,
value: (_BenchmarkResult result) => result.value, value: (_BenchmarkResult result) => result.value,
)); ));
......
...@@ -21,7 +21,6 @@ Future<Null> main() async { ...@@ -21,7 +21,6 @@ Future<Null> main() async {
await benchmarkWidgets((WidgetTester tester) async { await benchmarkWidgets((WidgetTester tester) async {
stocks.main(); stocks.main();
await tester.pump(); // Start startup animation await tester.pump(); // Start startup animation
new Timer(const Duration(milliseconds: 1100), () { }); // workaround for https://github.com/flutter/flutter/issues/7433
await tester.pump(const Duration(seconds: 1)); // Complete startup animation await tester.pump(const Duration(seconds: 1)); // Complete startup animation
await tester.tapAt(new Point(20.0, 20.0)); // Open drawer await tester.tapAt(new Point(20.0, 20.0)); // Open drawer
await tester.pump(); // Start drawer animation await tester.pump(); // Start drawer animation
......
...@@ -20,7 +20,6 @@ Future<Null> main() async { ...@@ -20,7 +20,6 @@ Future<Null> main() async {
await benchmarkWidgets((WidgetTester tester) async { await benchmarkWidgets((WidgetTester tester) async {
stocks.main(); stocks.main();
await tester.pump(); // Start startup animation await tester.pump(); // Start startup animation
new Timer(const Duration(milliseconds: 1100), () { }); // workaround for https://github.com/flutter/flutter/issues/7433
await tester.pump(const Duration(seconds: 1)); // Complete startup animation await tester.pump(const Duration(seconds: 1)); // Complete startup animation
await tester.tapAt(new Point(20.0, 20.0)); // Open drawer await tester.tapAt(new Point(20.0, 20.0)); // Open drawer
await tester.pump(); // Start drawer animation await tester.pump(); // Start drawer animation
......
...@@ -41,10 +41,7 @@ TaskFunction createMicrobenchmarkTask() { ...@@ -41,10 +41,7 @@ TaskFunction createMicrobenchmarkTask() {
allResults.addAll(await _runMicrobench('lib/stocks/layout_bench.dart')); allResults.addAll(await _runMicrobench('lib/stocks/layout_bench.dart'));
allResults.addAll(await _runMicrobench('lib/stocks/build_bench.dart')); allResults.addAll(await _runMicrobench('lib/stocks/build_bench.dart'));
allResults.addAll(await _runMicrobench('lib/gestures/velocity_tracker_bench.dart')); allResults.addAll(await _runMicrobench('lib/gestures/velocity_tracker_bench.dart'));
if (deviceOperatingSystem == DeviceOperatingSystem.android) { allResults.addAll(await _runMicrobench('lib/stocks/animation_bench.dart'));
// TODO(yjbanov): Run on iOS when https://github.com/flutter/flutter/issues/7433 is fixed.
allResults.addAll(await _runMicrobench('lib/stocks/animation_bench.dart'));
}
return new TaskResult.success(allResults, benchmarkScoreKeys: allResults.keys.toList()); return new TaskResult.success(allResults, benchmarkScoreKeys: allResults.keys.toList());
}; };
......
...@@ -632,6 +632,8 @@ class LiveTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding { ...@@ -632,6 +632,8 @@ class LiveTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding {
super.handleBeginFrame(rawTimeStamp); super.handleBeginFrame(rawTimeStamp);
if (_expectingFrame) { if (_expectingFrame) {
assert(_pendingFrame != null); assert(_pendingFrame != null);
// TODO(yjbanov): workaroud for https://github.com/flutter/flutter/issues/7433
Timer.run(() {}); // forces runtime to flush Completer.complete() microtask
_pendingFrame.complete(); // unlocks the test API _pendingFrame.complete(); // unlocks the test API
_pendingFrame = null; _pendingFrame = null;
_expectingFrame = false; _expectingFrame = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment