Unverified Commit 3437fd9c authored by Gary Qian's avatar Gary Qian Committed by GitHub

Add initial compile tests (#109177)

parent 44780483
...@@ -1359,20 +1359,32 @@ class CompileTest { ...@@ -1359,20 +1359,32 @@ class CompileTest {
return inDirectory<TaskResult>(testDirectory, () async { return inDirectory<TaskResult>(testDirectory, () async {
await flutter('packages', options: <String>['get']); await flutter('packages', options: <String>['get']);
final Map<String, dynamic> compileRelease = await _compileApp(reportPackageContentSizes: reportPackageContentSizes); // "initial" compile required downloading and creating the `android/.gradle` directory while "full"
final Map<String, dynamic> compileDebug = await _compileDebug( // compiles only run `flutter clean` between runs.
final Map<String, dynamic> compileInitialRelease = await _compileApp(deleteGradleCache: true);
final Map<String, dynamic> compileFullRelease = await _compileApp(deleteGradleCache: false);
final Map<String, dynamic> compileInitialDebug = await _compileDebug(
clean: true, clean: true,
deleteGradleCache: true,
metricKey: 'debug_initial_compile_millis',
);
final Map<String, dynamic> compileFullDebug = await _compileDebug(
clean: true,
deleteGradleCache: false,
metricKey: 'debug_full_compile_millis', metricKey: 'debug_full_compile_millis',
); );
// Build again without cleaning, should be faster. // Build again without cleaning, should be faster.
final Map<String, dynamic> compileSecondDebug = await _compileDebug( final Map<String, dynamic> compileSecondDebug = await _compileDebug(
clean: false, clean: false,
deleteGradleCache: false,
metricKey: 'debug_second_compile_millis', metricKey: 'debug_second_compile_millis',
); );
final Map<String, dynamic> metrics = <String, dynamic>{ final Map<String, dynamic> metrics = <String, dynamic>{
...compileRelease, ...compileInitialRelease,
...compileDebug, ...compileFullRelease,
...compileInitialDebug,
...compileFullDebug,
...compileSecondDebug, ...compileSecondDebug,
}; };
...@@ -1384,6 +1396,7 @@ class CompileTest { ...@@ -1384,6 +1396,7 @@ class CompileTest {
// Build after "edit" without clean should be faster than first build // Build after "edit" without clean should be faster than first build
final Map<String, dynamic> compileAfterEditDebug = await _compileDebug( final Map<String, dynamic> compileAfterEditDebug = await _compileDebug(
clean: false, clean: false,
deleteGradleCache: false,
metricKey: 'debug_compile_after_edit_millis', metricKey: 'debug_compile_after_edit_millis',
); );
metrics.addAll(compileAfterEditDebug); metrics.addAll(compileAfterEditDebug);
...@@ -1395,8 +1408,12 @@ class CompileTest { ...@@ -1395,8 +1408,12 @@ class CompileTest {
}); });
} }
static Future<Map<String, dynamic>> _compileApp({ bool reportPackageContentSizes = false }) async { Future<Map<String, dynamic>> _compileApp({required bool deleteGradleCache}) async {
await flutter('clean'); await flutter('clean');
if (deleteGradleCache) {
final Directory gradleCacheDir = Directory('$testDirectory/android/.gradle');
gradleCacheDir.deleteSync(recursive: true);
}
final Stopwatch watch = Stopwatch(); final Stopwatch watch = Stopwatch();
int releaseSizeInBytes; int releaseSizeInBytes;
final List<String> options = <String>['--release']; final List<String> options = <String>['--release'];
...@@ -1502,20 +1519,25 @@ class CompileTest { ...@@ -1502,20 +1519,25 @@ class CompileTest {
} }
metrics.addAll(<String, dynamic>{ metrics.addAll(<String, dynamic>{
'release_full_compile_millis': watch.elapsedMilliseconds, 'release_${deleteGradleCache ? 'initial' : 'full'}_compile_millis': watch.elapsedMilliseconds,
'release_size_bytes': releaseSizeInBytes, 'release_size_bytes': releaseSizeInBytes,
}); });
return metrics; return metrics;
} }
static Future<Map<String, dynamic>> _compileDebug({ Future<Map<String, dynamic>> _compileDebug({
required bool deleteGradleCache,
required bool clean, required bool clean,
required String metricKey, required String metricKey,
}) async { }) async {
if (clean) { if (clean) {
await flutter('clean'); await flutter('clean');
} }
if (deleteGradleCache) {
final Directory gradleCacheDir = Directory('$testDirectory/android/.gradle');
gradleCacheDir.deleteSync(recursive: true);
}
final Stopwatch watch = Stopwatch(); final Stopwatch watch = Stopwatch();
final List<String> options = <String>['--debug']; final List<String> options = <String>['--debug'];
switch (deviceOperatingSystem) { switch (deviceOperatingSystem) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment