From 18341efa2fb8c3570ca32e71d1a9da74e8b2cbf5 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 29 Oct 2020 09:19:07 -0700 Subject: [PATCH] [devicelab] retry startup of start up test (#69272) --- dev/devicelab/lib/tasks/perf_tests.dart | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index 3c5a828cfc..706fdce498 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -482,8 +482,10 @@ class StartupTest { break; } + const int maxFailures = 3; + int currentFailures = 0; for (int i = 0; i < iterations; i += 1) { - await flutter('run', options: [ + final int result = await flutter('run', options: [ '--no-android-gradle-daemon', '--verbose', '--profile', @@ -492,11 +494,19 @@ class StartupTest { device.deviceId, if (applicationBinaryPath != null) '--use-application-binary=$applicationBinaryPath', - ]); - final Map data = json.decode( - file('$testDirectory/build/start_up_info.json').readAsStringSync(), - ) as Map; - results.add(data); + ], canFail: true); + if (result == 0) { + final Map data = json.decode( + file('$testDirectory/build/start_up_info.json').readAsStringSync(), + ) as Map; + results.add(data); + } else { + currentFailures += 1; + i -= 1; + if (currentFailures == maxFailures) { + return TaskResult.failure('Application failed to start $maxFailures times'); + } + } await flutter('install', options: [ '--uninstall-only', @@ -606,7 +616,6 @@ class PerfTest { final Device device = await devices.workingDevice; await device.unlock(); final String deviceId = device.deviceId; - await flutter('packages', options: ['get']); await flutter('drive', options: [ '--no-android-gradle-daemon',