From bce5574cde32b25e7248d402a34977d07cb03445 Mon Sep 17 00:00:00 2001 From: Mikkel Nygaard Ravn Date: Thu, 30 Nov 2017 00:22:13 +0100 Subject: [PATCH] Remove test flakiness (#13252) --- .../java/io/flutter/externalui/MainActivity.java | 16 ++++++++++++---- .../external_ui/test_driver/main_test.dart | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dev/integration_tests/external_ui/android/app/src/main/java/io/flutter/externalui/MainActivity.java b/dev/integration_tests/external_ui/android/app/src/main/java/io/flutter/externalui/MainActivity.java index e2bb58d67bf..ebda82064ce 100644 --- a/dev/integration_tests/external_ui/android/app/src/main/java/io/flutter/externalui/MainActivity.java +++ b/dev/integration_tests/external_ui/android/app/src/main/java/io/flutter/externalui/MainActivity.java @@ -52,8 +52,11 @@ public class MainActivity extends FlutterActivity { producerTimer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { - renderer.drawFrame(); - framesProduced.incrementAndGet(); + final long time = System.currentTimeMillis(); + if (frameRate(framesProduced, startTime, time) < fps) { + renderer.drawFrame(); + framesProduced.incrementAndGet(); + } } }, 0, 1000 / fps); consumerTimer = new Timer(); @@ -78,13 +81,14 @@ public class MainActivity extends FlutterActivity { producerTimer.cancel(); consumerTimer.cancel(); endTime = System.currentTimeMillis(); + Log.e("TET", "Stopped at " + endTime); result.success(null); break; case "getProducedFrameRate": - result.success(framesProduced.get() * 1000 / (double) (endTime - startTime)); + result.success(frameRate(framesProduced, startTime, endTime)); break; case "getConsumedFrameRate": - result.success(framesConsumed.get() * 1000 / (double) (endTime - startTime)); + result.success(frameRate(framesConsumed, startTime, endTime)); break; default: result.notImplemented(); } @@ -110,6 +114,10 @@ public class MainActivity extends FlutterActivity { }); } + double frameRate(AtomicInteger frameCounter, long startTime, long endTime) { + return frameCounter.get() * 1000 / (double) (endTime - startTime); + } + @Override protected void onDestroy() { if (surface != null) { diff --git a/dev/integration_tests/external_ui/test_driver/main_test.dart b/dev/integration_tests/external_ui/test_driver/main_test.dart index dd313c9a539..908160e49dc 100644 --- a/dev/integration_tests/external_ui/test_driver/main_test.dart +++ b/dev/integration_tests/external_ui/test_driver/main_test.dart @@ -55,7 +55,7 @@ Future main() async { final String statsFast = await driver.getText(summary); final Match matchFast = statsRegExp.matchAsPrefix(statsFast); expect(matchFast, isNotNull); - expect(double.parse(matchFast.group(1)), closeTo(flutterFrameRate * 2.0, 10.0)); + expect(double.parse(matchFast.group(1)), closeTo(flutterFrameRate * 2.0, 5.0)); expect(double.parse(matchFast.group(2)), closeTo(flutterFrameRate, 10.0)); expect(int.parse(matchFast.group(3)), 1); });