Add test for memory benchmark in golem

Bug: 121018500
Change-Id: I944f0c57f16ec19124beefc3410905cada7155e2
diff --git a/tools/minify_tool.py b/tools/minify_tool.py
index cdbab78..a512665 100755
--- a/tools/minify_tool.py
+++ b/tools/minify_tool.py
@@ -87,7 +87,7 @@
 
 def minify_tool(mainclass=None, input_jar=utils.R8_JAR, output_jar=None,
                 lib=utils.RT_JAR, debug=True, build=True, benchmark_name=None,
-                track_memory_file=None, additional_args=[]):
+                track_memory_file=None, additional_args=[], java_args=[]):
   if output_jar is None:
     output_jar = generate_output_name(input_jar, mainclass)
   with utils.TempDir() as path:
@@ -108,7 +108,8 @@
             tmp_input_path] + additional_args
     start_time = time.time()
     return_code = toolhelper.run('r8', args, debug=debug, build=build,
-                                 track_memory_file=track_memory_file)
+                                 track_memory_file=track_memory_file,
+                                 extra_args=java_args)
     if benchmark_name:
       elapsed_ms = 1000 * (time.time() - start_time)
       print('%s(RunTimeRaw): %s ms' % (benchmark_name, elapsed_ms))
diff --git a/tools/run_bootstrap_benchmark.py b/tools/run_bootstrap_benchmark.py
index e12051b..bc07347 100755
--- a/tools/run_bootstrap_benchmark.py
+++ b/tools/run_bootstrap_benchmark.py
@@ -12,6 +12,7 @@
 import toolhelper
 import utils
 
+MEMORY_XMX_LIMIT_BENCHMARK = 270
 
 def parse_arguments(argv):
   parser = argparse.ArgumentParser(
@@ -20,6 +21,10 @@
       help = 'Link in third party dependencies.',
       default = False,
       action = 'store_true')
+  parser.add_argument('--limit-memory-runtime-test',
+      help = 'Run in a specific memory limit.',
+      default = False,
+      action = 'store_true')
   return parser.parse_args(argv)
 
 
@@ -47,16 +52,29 @@
     d8_r8_output = os.path.join(temp, 'd8r8.zip')
     d8_pg_output = os.path.join(temp, 'd8pg.zip')
 
+    run_memory_test = options.limit_memory_runtime_test
+
+    java_args = (['-Xmx%sM' % MEMORY_XMX_LIMIT_BENCHMARK]
+                 if run_memory_test else [])
+
+    benchmark_name = "MemoryR8Pinned" if run_memory_test else "BootstrapR8"
+
     return_code = minify_tool.minify_tool(
       input_jar=utils.PINNED_R8_JAR,
       output_jar=r8_output,
       debug=False,
       build=False,
       track_memory_file=memory_file,
-      benchmark_name="BootstrapR8")
+      benchmark_name=benchmark_name,
+      java_args=java_args)
+
     if return_code != 0:
       sys.exit(return_code)
 
+    if run_memory_test:
+      # We are not tracking code-size, so return early.
+      sys.exit(0)
+
     dex(r8_output, d8_r8_output)
     print "BootstrapR8(CodeSize):", utils.uncompressed_size(r8_output)
     print "BootstrapR8Dex(CodeSize):", utils.uncompressed_size(d8_r8_output)