Build the x86 (debug) variant for virtual devices Test LED runs: https://ci.chromium.org/swarming/task/50fcd1beb5682210?server=chromium-swarm.appspot.com https://ci.chromium.org/swarming/task/50fced6262722d10?server=chromium-swarm.appspot.com https://ci.chromium.org/swarming/task/50fcedf148966010?server=chromium-swarm.appspot.com Reland "Use more devices when doing firebase tests." This reverts commit 58d6203d7e2fa16fc3fd761fdfa1f7f91c68cfba. Change-Id: I7b2c32ad743b9481b2fe450e982f001371e53ce2 Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/9643 Reviewed-by: Emmanuel Garcia <egarciad@google.com> Reviewed-by: Godofredo Contreras <godofredoc@google.com> Commit-Queue: Dan Field <dnfield@google.com>
diff --git a/recipes/firebaselab/firebaselab.expected/basic.json b/recipes/firebaselab/firebaselab.expected/basic.json index 4af1eec..8d0353d 100644 --- a/recipes/firebaselab/firebaselab.expected/basic.json +++ b/recipes/firebaselab/firebaselab.expected/basic.json
@@ -167,35 +167,6 @@ ] }, { - "cmd": [ - "flutter", - "build", - "appbundle", - "--target-platform", - "android-arm,android-arm64" - ], - "cwd": "[START_DIR]/flutter/dev/integration_tests/the_task", - "env": { - "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", - "LUCI_BRANCH": "", - "LUCI_CI": "True", - "LUCI_PR": "", - "OS": "linux", - "PUB_CACHE": "[CACHE]/.pub-cache", - "SDK_CHECKOUT_PATH": "[START_DIR]/flutter" - }, - "env_prefixes": { - "PATH": [ - "[START_DIR]/flutter/bin", - "[START_DIR]/flutter/bin/cache/dart-sdk/bin" - ] - }, - "name": "test_execution.Build appbundle", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { "cmd": [], "name": "test_execution.ensure gcloud", "~followup_annotations": [ @@ -345,6 +316,35 @@ }, { "cmd": [ + "flutter", + "build", + "appbundle", + "--target-platform", + "android-arm,android-arm64" + ], + "cwd": "[START_DIR]/flutter/dev/integration_tests/the_task", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "linux", + "PUB_CACHE": "[CACHE]/.pub-cache", + "SDK_CHECKOUT_PATH": "[START_DIR]/flutter" + }, + "env_prefixes": { + "PATH": [ + "[START_DIR]/flutter/bin", + "[START_DIR]/flutter/bin/cache/dart-sdk/bin" + ] + }, + "name": "test_execution.Build appbundle", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ "[START_DIR]/cipd/gcloud/bin/gcloud", "firebase", "test", @@ -387,6 +387,89 @@ ] }, { + "cmd": [ + "flutter", + "build", + "apk", + "--debug", + "--target-platform", + "android-x86" + ], + "cwd": "[START_DIR]/flutter/dev/integration_tests/the_task", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "linux", + "PUB_CACHE": "[CACHE]/.pub-cache", + "SDK_CHECKOUT_PATH": "[START_DIR]/flutter" + }, + "env_prefixes": { + "PATH": [ + "[START_DIR]/flutter/bin", + "[START_DIR]/flutter/bin/cache/dart-sdk/bin" + ] + }, + "name": "test_execution.Build apk", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd/gcloud/bin/gcloud", + "firebase", + "test", + "android", + "run", + "--type", + "robo", + "--app", + "build/app/outputs/flutter-apk/app-debug.apk", + "--timeout", + "2m", + "--results-bucket=gs://flutter_firebase_testlab", + "--results-dir=the_task/fake-task-id", + "--device", + "model=Nexus5,version=19", + "--device", + "model=Nexus5,version=21", + "--device", + "model=Nexus5,version=22", + "--device", + "model=Nexus5,version=23", + "--device", + "model=Nexus6P,version=25", + "--device", + "model=Nexus6P,version=26", + "--device", + "model=Nexus6P,version=27", + "--device", + "model=NexusLowRes,version=30" + ], + "cwd": "[START_DIR]/flutter/dev/integration_tests/the_task", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "linux", + "PUB_CACHE": "[CACHE]/.pub-cache", + "SDK_CHECKOUT_PATH": "[START_DIR]/flutter" + }, + "env_prefixes": { + "PATH": [ + "[START_DIR]/flutter/bin", + "[START_DIR]/flutter/bin/cache/dart-sdk/bin" + ] + }, + "name": "test_execution.gcloud firebase (2)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { "cmd": [], "name": "test_execution.install infra/gsutil", "~followup_annotations": [
diff --git a/recipes/firebaselab/firebaselab.py b/recipes/firebaselab/firebaselab.py index 6bba74d..daf7a38 100644 --- a/recipes/firebaselab/firebaselab.py +++ b/recipes/firebaselab/firebaselab.py
@@ -36,11 +36,50 @@ deps = api.properties.get('dependencies', []) api.flutter_deps.required_deps(env, env_prefixes, deps) task_name = api.properties.get('task_name') - device_flags = [ - '--device', 'model=blueline,version=28', '--device', - 'model=flame,version=29', '--device', 'model=griffin,version=24' + + physical_devices = [ + # Physical devices - use only highly available devices to avoid timeouts. + # Pixel 3 + '--device', 'model=blueline,version=28', + # Pixel 4 + '--device', 'model=flame,version=29', + # Moto Z XT1650 + '--device', 'model=griffin,version=24', ] + virtual_devices = [ + # Virtual devices for API level coverage. + '--device', 'model=Nexus5,version=19', + # SDK 20 not available virtually or physically. + '--device', 'model=Nexus5,version=21', + '--device', 'model=Nexus5,version=22', + '--device', 'model=Nexus5,version=23', + # SDK 24 is run on a physical griffin/Moto Z above. + '--device', 'model=Nexus6P,version=25', + '--device', 'model=Nexus6P,version=26', + '--device', 'model=Nexus6P,version=27', + # SDK 28 is run on a physical blueline/Pixel 3 above. + # SDK 29 is run on a physical flame/Pixel 4 above. + '--device', 'model=NexusLowRes,version=30', + ] + + test_configurations = ( + ( + 'Build appbundle', + ['flutter', 'build', 'appbundle', '--target-platform', + 'android-arm,android-arm64'], + 'build/app/outputs/bundle/release/app-release.aab', + physical_devices + ), + ( + 'Build apk', + ['flutter', 'build', 'apk', '--debug', '--target-platform', + 'android-x86'], + 'build/app/outputs/flutter-apk/app-debug.apk', + virtual_devices + ), + ) + with api.context(env=env, env_prefixes=env_prefixes, cwd=checkout_path): api.step('flutter doctor', ['flutter', 'doctor', '-v']) api.step('download dependencies', ['flutter', 'update-packages']) @@ -48,22 +87,19 @@ test_path = checkout_path.join('dev', 'integration_tests', task_name) with api.step.nest('test_execution') as presentation: with api.context(env=env, env_prefixes=env_prefixes, cwd=test_path): - aab = "build/app/outputs/bundle/release/app-release.aab" - api.step( - 'Build appbundle', [ - 'flutter', 'build', 'appbundle', '--target-platform', - 'android-arm,android-arm64' - ] - ) task_id = api.swarming.task_id api.gcloud('--quiet', 'config', 'set', 'project', 'flutter-infra') - cmd = [ - 'firebase', 'test', 'android', 'run', '--type', 'robo', '--app', aab, - '--timeout', '2m', - '--results-bucket=gs://%s' % gcs_bucket, - '--results-dir=%s/%s' % (task_name, task_id) - ] + device_flags - api.gcloud(*cmd) + for step_name, build_command, binary, devices in test_configurations: + api.step(step_name, build_command) + firebase_cmd = [ + 'firebase', 'test', 'android', 'run', '--type', 'robo', + '--app', binary, + '--timeout', '2m', + '--results-bucket=gs://%s' % gcs_bucket, + '--results-dir=%s/%s' % (task_name, task_id) + ] + devices + api.gcloud(*firebase_cmd) + logcat_path = '%s/%s/*/logcat' % (task_name, task_id) tmp_logcat = api.path['cleanup'].join('logcat') api.gsutil.download(gcs_bucket, logcat_path, api.path['cleanup'])