Run non-perf sensitive tests on Cirrus (#27971)
* Run non-perf sensisitive tests on Cirrus
diff --git a/dev/bots/download_android_sdk.sh b/dev/bots/download_android_sdk.sh
new file mode 100755
index 0000000..cafa3f4
--- /dev/null
+++ b/dev/bots/download_android_sdk.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e
+
+if [[ -z $ANDROID_SDK_TOOLS_URL || -z $ANDROID_HOME || -z $ANDROID_SDK_ROOT ]]; then
+ exit 0
+fi
+
+curl -L $ANDROID_SDK_TOOLS_URL --output android_sdk_tools.zip
+
+mkdir -p $ANDROID_SDK_ROOT
+unzip android_sdk_tools.zip -d $ANDROID_SDK_ROOT
+rm android_sdk_tools.zip
+
+yes | $ANDROID_SDK_ROOT/tools/bin/sdkmanager --licenses
+$ANDROID_SDK_ROOT/tools/bin/sdkmanager tools
+$ANDROID_SDK_ROOT/tools/bin/sdkmanager platform-tools
+# this is large and we don't need it just yet
+# $ANDROID_SDK_ROOT/tools/bin/sdkmanager emulator
+$ANDROID_SDK_ROOT/tools/bin/sdkmanager "platforms;android-28" \
+ "build-tools;28.0.3" \
+ "platforms;android-27" \
+ "build-tools;27.0.3" \
+ "extras;google;m2repository" \
+ "extras;android;m2repository"
+
+
diff --git a/dev/bots/download_open_jdk.sh b/dev/bots/download_open_jdk.sh
new file mode 100755
index 0000000..313ce05
--- /dev/null
+++ b/dev/bots/download_open_jdk.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -e
+
+if [[ -z $OPEN_JDK_URL ]]; then
+ exit 0
+fi
+
+mkdir -p $HOME/Java
+pushd $HOME/Java
+curl -L $OPEN_JDK_URL --output open_jdk.tar.gz
+tar -xvf open_jdk.tar.gz
+rm open_jdk.tar.gz
+popd
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index 45666f6..1a8284b 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -27,6 +27,7 @@
'tool_tests': _runToolTests,
'build_tests': _runBuildTests,
'coverage': _runCoverage,
+ 'integration_tests': _runIntegrationTests,
'add2app_test': _runAdd2AppTest,
};
@@ -615,3 +616,51 @@
exit(1);
}
}
+
+Future<void> _runIntegrationTests() async {
+ print('Platform env vars:');
+
+ await _runDevicelabTest('dartdocs');
+
+ if (Platform.isLinux) {
+ await _runDevicelabTest('flutter_create_offline_test_linux');
+ } else if (Platform.isWindows) {
+ await _runDevicelabTest('flutter_create_offline_test_windows');
+ } else if (Platform.isMacOS) {
+ await _runDevicelabTest('flutter_create_offline_test_mac');
+ await _runDevicelabTest('module_test_ios');
+ }
+ await _integrationTestsAndroidSdk();
+}
+
+Future<void> _runDevicelabTest(String testName, {Map<String, String> env}) async {
+ await runCommand(
+ dart,
+ <String>['bin/run.dart', '-t', testName],
+ workingDirectory: path.join(flutterRoot, 'dev', 'devicelab'),
+ environment: env,
+ );
+}
+
+Future<void> _integrationTestsAndroidSdk() async {
+ final String androidSdkRoot = (Platform.environment['ANDROID_HOME']?.isEmpty ?? true)
+ ? Platform.environment['ANDROID_SDK_ROOT']
+ : Platform.environment['ANDROID_HOME'];
+ if (androidSdkRoot == null || androidSdkRoot.isEmpty) {
+ print('No Android SDK detected, skipping Android Integration Tests');
+ return;
+ }
+
+ final Map<String, String> env = <String, String> {
+ 'ANDROID_HOME': androidSdkRoot,
+ 'ANDROID_SDK_ROOT': androidSdkRoot,
+ };
+
+ // TODO(dnfield): gradlew is crashing on the cirrus image and it's not clear why.
+ if (!Platform.isWindows) {
+ await _runDevicelabTest('gradle_plugin_test', env: env);
+ await _runDevicelabTest('module_test', env: env);
+ }
+ // note: this also covers plugin_test_win as long as Windows has an Android SDK available.
+ await _runDevicelabTest('plugin_test', env: env);
+}
\ No newline at end of file