Add piping and bringup nodes for _vulkan
and _opengles
suites. (#162020)
Towards https://github.com/flutter/flutter/issues/161333. This adds the initial `.ci.yaml` configuration (marked `bringup: true`), without changing the existing shard to avoid the problems we ran into last time when I renamed the shard atomically, as well as piping for providing context in which the test will run (Vulkan or OpenGLES), which can't be introspected in the _running_ app. In a follow-up PR I'll: - Edit `AndroidManifest.xml` before the suite, setting `ImpellerBackend` appropriately - Move the bringup nodes to presubmit - Delete the existing (legacy) node
This commit is contained in:
parent
e0392194d3
commit
30f4fecfeb
26
.ci.yaml
26
.ci.yaml
@ -1523,6 +1523,32 @@ targets:
|
|||||||
- engine/**
|
- engine/**
|
||||||
- DEPS
|
- DEPS
|
||||||
|
|
||||||
|
- name: Linux_android_emu_34 android_engine_vulkan_tests
|
||||||
|
recipe: flutter/flutter_drone
|
||||||
|
bringup: true
|
||||||
|
timeout: 60
|
||||||
|
properties:
|
||||||
|
shard: android_engine_vulkan_tests
|
||||||
|
tags: >
|
||||||
|
["framework", "hostonly", "shard", "linux"]
|
||||||
|
dependencies: >-
|
||||||
|
[
|
||||||
|
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
|
||||||
|
]
|
||||||
|
|
||||||
|
- name: Linux_android_emu_34 android_engine_opengles_tests
|
||||||
|
recipe: flutter/flutter_drone
|
||||||
|
bringup: true
|
||||||
|
timeout: 60
|
||||||
|
properties:
|
||||||
|
shard: android_engine_opengles_tests
|
||||||
|
tags: >
|
||||||
|
["framework", "hostonly", "shard", "linux"]
|
||||||
|
dependencies: >-
|
||||||
|
[
|
||||||
|
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
|
||||||
|
]
|
||||||
|
|
||||||
- name: Linux_android_emu flutter_driver_android_test
|
- name: Linux_android_emu flutter_driver_android_test
|
||||||
recipe: flutter/flutter_drone
|
recipe: flutter/flutter_drone
|
||||||
bringup: true
|
bringup: true
|
||||||
|
@ -323,12 +323,14 @@
|
|||||||
# https://github.com/flutter/flutter/issues/82068
|
# https://github.com/flutter/flutter/issues/82068
|
||||||
#
|
#
|
||||||
# analyze @Piinks @flutter/framework
|
# analyze @Piinks @flutter/framework
|
||||||
|
# android_engine_vulkan_tests @matanlurey @jonahwilliams
|
||||||
|
# android_engine_opengles_tests @matanlurey @jonahwilliams
|
||||||
# build_tests @andrewkolos @flutter/tool
|
# build_tests @andrewkolos @flutter/tool
|
||||||
# ci_yaml flutter roller @keyonghan @flutter/infra
|
# ci_yaml flutter roller @keyonghan @flutter/infra
|
||||||
# coverage @goderbauer @flutter/infra
|
# coverage @goderbauer @flutter/infra
|
||||||
# customer_testing @Piinks @flutter/framework
|
# customer_testing @Piinks @flutter/framework
|
||||||
# docs @Piinks @flutter/framework
|
# docs @Piinks @flutter/framework
|
||||||
# flutter_driver_android_test @matanlurey @johnmccutchan
|
# flutter_driver_android_test @matanlurey @jonahwilliams
|
||||||
# flutter_packaging @christopherfujino @flutter/infra
|
# flutter_packaging @christopherfujino @flutter/infra
|
||||||
# flutter_plugins @stuartmorgan @flutter/plugin
|
# flutter_plugins @stuartmorgan @flutter/plugin
|
||||||
# framework_tests @Piinks @flutter/framework
|
# framework_tests @Piinks @flutter/framework
|
||||||
|
@ -18,35 +18,42 @@ import '../utils.dart';
|
|||||||
///
|
///
|
||||||
/// ```sh
|
/// ```sh
|
||||||
/// # Generate a baseline of local golden files.
|
/// # Generate a baseline of local golden files.
|
||||||
/// SHARD=android_engine_tests UPDATE_GOLDENS=1 bin/cache/dart-sdk/bin/dart dev/bots/test.dart
|
/// SHARD=android_engine_vulkan_tests UPDATE_GOLDENS=1 bin/cache/dart-sdk/bin/dart dev/bots/test.dart
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// 4. Then, re-run the command against the baseline images:
|
/// 4. Then, re-run the command against the baseline images:
|
||||||
///
|
///
|
||||||
/// ```sh
|
/// ```sh
|
||||||
/// SHARD=android_engine_tests bin/cache/dart-sdk/bin/dart dev/bots/test.dart
|
/// SHARD=android_engine_vulkan_tests bin/cache/dart-sdk/bin/dart dev/bots/test.dart
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// If you are trying to debug a commit, you will want to run step (3) first,
|
/// If you are trying to debug a commit, you will want to run step (3) first,
|
||||||
/// then apply the commit (or flag), and then run step (4). If you are trying
|
/// then apply the commit (or flag), and then run step (4). If you are trying
|
||||||
/// to determine flakiness in the *same* state, or want better debugging, see
|
/// to determine flakiness in the *same* state, or want better debugging, see
|
||||||
/// `dev/integration_tests/android_engine_test/README.md`.
|
/// `dev/integration_tests/android_engine_test/README.md`.
|
||||||
Future<void> runAndroidEngineTests() async {
|
Future<void> runAndroidEngineTests({required ImpellerBackend impellerBackend}) async {
|
||||||
print('Running Flutter Driver Android tests...');
|
print('Running Flutter Driver Android tests...');
|
||||||
|
|
||||||
final String androidEngineTestPath = path.join('dev', 'integration_tests', 'android_engine_test');
|
final String androidEngineTestPath = path.join('dev', 'integration_tests', 'android_engine_test');
|
||||||
final List<FileSystemEntity> mains = Glob('$androidEngineTestPath/lib/**_main.dart').listSync();
|
final List<FileSystemEntity> mains = Glob('$androidEngineTestPath/lib/**_main.dart').listSync();
|
||||||
for (final FileSystemEntity file in mains) {
|
for (final FileSystemEntity file in mains) {
|
||||||
await runCommand('flutter', <String>[
|
await runCommand(
|
||||||
'drive',
|
'flutter',
|
||||||
path.relative(file.path, from: androidEngineTestPath),
|
<String>[
|
||||||
// There are no reason to enable development flags for this test.
|
'drive',
|
||||||
// Disable them to work around flakiness issues, and in general just
|
path.relative(file.path, from: androidEngineTestPath),
|
||||||
// make less things start up unnecessarily.
|
// There are no reason to enable development flags for this test.
|
||||||
'--no-dds',
|
// Disable them to work around flakiness issues, and in general just
|
||||||
'--no-enable-dart-profiling',
|
// make less things start up unnecessarily.
|
||||||
'--test-arguments=test',
|
'--no-dds',
|
||||||
'--test-arguments=--reporter=expanded',
|
'--no-enable-dart-profiling',
|
||||||
], workingDirectory: androidEngineTestPath);
|
'--test-arguments=test',
|
||||||
|
'--test-arguments=--reporter=expanded',
|
||||||
|
],
|
||||||
|
workingDirectory: androidEngineTestPath,
|
||||||
|
environment: <String, String>{'ANDROID_ENGINE_TEST_GOLDEN_VARIANT': impellerBackend.name},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum ImpellerBackend { vulkan, opengles }
|
||||||
|
@ -137,7 +137,13 @@ Future<void> main(List<String> args) async {
|
|||||||
'web_skwasm_tests': webTestsSuite.runWebSkwasmUnitTests,
|
'web_skwasm_tests': webTestsSuite.runWebSkwasmUnitTests,
|
||||||
// All web integration tests
|
// All web integration tests
|
||||||
'web_long_running_tests': webTestsSuite.webLongRunningTestsRunner,
|
'web_long_running_tests': webTestsSuite.webLongRunningTestsRunner,
|
||||||
'android_engine_tests': runAndroidEngineTests,
|
// TODO(matanlurey): Remove once a post-submit runs with the new shards.
|
||||||
|
// (Part of https://github.com/flutter/flutter/issues/161333)
|
||||||
|
'android_engine_tests': () => runAndroidEngineTests(impellerBackend: ImpellerBackend.vulkan),
|
||||||
|
'android_engine_vulkan_tests':
|
||||||
|
() => runAndroidEngineTests(impellerBackend: ImpellerBackend.vulkan),
|
||||||
|
'android_engine_opengles_tests':
|
||||||
|
() => runAndroidEngineTests(impellerBackend: ImpellerBackend.opengles),
|
||||||
'flutter_plugins': flutterPackagesRunner,
|
'flutter_plugins': flutterPackagesRunner,
|
||||||
'skp_generator': skpGeneratorTestsRunner,
|
'skp_generator': skpGeneratorTestsRunner,
|
||||||
'customer_testing': customerTestingRunner,
|
'customer_testing': customerTestingRunner,
|
||||||
|
@ -6,3 +6,12 @@ import 'dart:io' as io;
|
|||||||
|
|
||||||
/// Whether the current environment is LUCI.
|
/// Whether the current environment is LUCI.
|
||||||
bool get isLuci => io.Platform.environment['LUCI_CI'] == 'True';
|
bool get isLuci => io.Platform.environment['LUCI_CI'] == 'True';
|
||||||
|
|
||||||
|
/// What golden suffix this test should use for different engine configurations.
|
||||||
|
String get goldenVariant {
|
||||||
|
final String? variant = io.Platform.environment['ANDROID_ENGINE_TEST_GOLDEN_VARIANT'];
|
||||||
|
if (variant == null) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return '.$variant';
|
||||||
|
}
|
||||||
|
@ -29,7 +29,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -28,7 +28,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -28,7 +28,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -30,7 +30,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -30,7 +30,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -30,7 +30,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
@ -28,7 +28,7 @@ void main() async {
|
|||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
if (isLuci) {
|
if (isLuci) {
|
||||||
await enableSkiaGoldComparator(namePrefix: 'android_engine_test');
|
await enableSkiaGoldComparator(namePrefix: 'android_engine_test$goldenVariant');
|
||||||
}
|
}
|
||||||
flutterDriver = await FlutterDriver.connect();
|
flutterDriver = await FlutterDriver.connect();
|
||||||
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
nativeDriver = await AndroidNativeDriver.connect(flutterDriver);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user