Enable finding and archiving min -xmx for selected benchmark apps

Bug: 121018500
Change-Id: I334c0dad2993df26175d3f6e05fa4ee713a41820
diff --git a/tools/internal_test.py b/tools/internal_test.py
index 1fdca1a..ad65023 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -54,13 +54,62 @@
 EXITCODE = 'exitcode'
 TIMED_OUT = 'timed_out'
 
+BENCHMARK_APPS = [
+    {
+        'app': 'r8',
+        'version': 'cf',
+        'find-xmx-min': 128,
+        'find-xmx-max': 400,
+        'find-xmx-range': 16,
+    },
+    {
+        'app': 'chrome',
+        'version': '180917',
+        'find-xmx-min': 256,
+        'find-xmx-max': 450,
+        'find-xmx-range': 16,
+    },
+    {
+        'app': 'youtube',
+        'version': '12.22',
+        'find-xmx-min': 1200,
+        'find-xmx-max': 800,
+        'find-xmx-range': 32,
+    },
+    # TODO(b/142375244): Narrow when run a few times.
+    {
+        'app': 'iosched',
+        'version': '2019',
+        'find-xmx-min': 128,
+        'find-xmx-max': 1024,
+        'find-xmx-range': 16,
+    },
+]
+
+def find_min_xmx_command(record):
+  return [
+      'tools/run_on_app.py',
+      '--compiler=r8',
+      '--compiler-build=lib',
+      '--app=%s' % record['app'],
+      '--version=%s' % record['version'],
+      '--no-debug',
+      '--no-build',
+      '--find-min-xmx',
+      '--find-min-xmx-min-memory=%s' % record['find-xmx-min'],
+      '--find-min-xmx-max-memory=%s' % record['find-xmx-max'],
+      '--find-min-xmx-range-size=%s' % record['find-xmx-range'],
+      '--find-min-xmx-archive']
+
 TEST_COMMANDS = [
     # Run test.py internal testing.
     ['tools/test.py', '--only_internal', '--slow_tests',
      '--java_max_memory_size=8G'],
     # Ensure that all internal apps compile.
-    ['tools/run_on_app.py', '--ignore-java-version','--run-all', '--out=out']
-]
+    ['tools/run_on_app.py', '--ignore-java-version','--run-all', '--out=out'],
+    # Find min xmx for selected benchmark apps
+    ['tools/gradle.py', 'r8lib'],
+] + map(find_min_xmx_command, BENCHMARK_APPS)
 
 # Command timeout, in seconds.
 RUN_TIMEOUT = 3600 * 6