Minor edits to make nightly reports.

Rationale:
bit more output that helps interpreting the nightly results;
also fixed a bit of bitrot in the dexfuzz runners.

Test: nightly fuzzer
Change-Id: I342968bd2b21e86539c4ec03b6a167c7844d2a7c
diff --git a/tools/dexfuzz/README b/tools/dexfuzz/README
index c1cdf1e..78f73f5 100644
--- a/tools/dexfuzz/README
+++ b/tools/dexfuzz/README
@@ -98,7 +98,7 @@
 Timed Out  - mutated files that timed out for one or more backends.
              Current timeouts are:
                Optimizing - 5 seconds
-               Intepreter - 30 seconds
+               Interpreter - 30 seconds
               (use --short-timeouts to set all backends to 2 seconds.)
 Successful - mutated files that executed and all backends agreed on the resulting
              output. NB: if all backends crashed with the same output, this would
diff --git a/tools/jfuzz/run_dex_fuzz_test.py b/tools/jfuzz/run_dex_fuzz_test.py
index 50c4f20..34a92f6 100755
--- a/tools/jfuzz/run_dex_fuzz_test.py
+++ b/tools/jfuzz/run_dex_fuzz_test.py
@@ -19,7 +19,7 @@
 import shutil
 import sys
 
-from subprocess import check_call
+from subprocess import call
 from tempfile import mkdtemp
 
 sys.path.append(os.path.dirname(os.path.dirname(
@@ -75,6 +75,9 @@
     top = GetEnvVariableOrError('ANDROID_BUILD_TOP')
     self._dexfuzz_env['PATH'] = (top + '/art/tools/bisection_search:' +
                                  self._dexfuzz_env['PATH'])
+    android_root = GetEnvVariableOrError('ANDROID_HOST_OUT')
+    self._dexfuzz_env['ANDROID_ROOT'] = android_root
+    self._dexfuzz_env['LD_LIBRARY_PATH'] = android_root + '/lib'
     os.chdir(self._dexfuzz_dir)
     os.mkdir('divergent_programs')
     os.mkdir('bisection_outputs')
@@ -119,24 +122,30 @@
   def RunDexFuzz(self):
     """Starts the DexFuzz testing."""
     os.chdir(self._dexfuzz_dir)
-    dexfuzz_args = ['--inputs=' + self._inputs_dir, '--execute',
-                    '--execute-class=Test', '--repeat=' + str(self._num_tests),
-                    '--dump-output', '--interpreter', '--optimizing',
+    dexfuzz_args = ['--inputs=' + self._inputs_dir,
+                    '--execute',
+                    '--execute-class=Test',
+                    '--repeat=' + str(self._num_tests),
+                    '--dump-output', '--dump-verify',
+                    '--interpreter', '--optimizing',
                     '--bisection-search']
     if self._device is not None:
       dexfuzz_args += ['--device=' + self._device, '--allarm']
     else:
       dexfuzz_args += ['--host']  # Assume host otherwise.
-    check_call(['dexfuzz'] + dexfuzz_args, env=self._dexfuzz_env)
-    # TODO: summarize findings.
+    cmd = ['dexfuzz'] + dexfuzz_args
+    print('**** Running ****\n\n', cmd, '\n')
+    call(cmd, env=self._dexfuzz_env)
+    print('\n**** Results (report.log) ****\n')
+    call(['tail', '-n 24', 'report.log'])
 
 
 def main():
   # Handle arguments.
   parser = argparse.ArgumentParser()
-  parser.add_argument('--num_tests', default=10000,
+  parser.add_argument('--num_tests', default=1000,
                       type=int, help='number of tests to run')
-  parser.add_argument('--num_inputs', default=50,
+  parser.add_argument('--num_inputs', default=10,
                       type=int, help='number of JFuzz program to generate')
   parser.add_argument('--device', help='target device serial number')
   args = parser.parse_args()
diff --git a/tools/jfuzz/run_jfuzz_test_nightly.py b/tools/jfuzz/run_jfuzz_test_nightly.py
index 29595f2..a9f8365 100755
--- a/tools/jfuzz/run_jfuzz_test_nightly.py
+++ b/tools/jfuzz/run_jfuzz_test_nightly.py
@@ -26,9 +26,6 @@
 from tempfile import mkdtemp
 from tempfile import TemporaryFile
 
-# Default arguments for run_jfuzz_test.py.
-DEFAULT_ARGS = ['--num_tests=20000']
-
 # run_jfuzz_test.py success string.
 SUCCESS_STRING = 'success (no divergences)'
 
@@ -36,17 +33,22 @@
 NOT_FOUND = -1
 
 def main(argv):
+  # Set up.
   cwd = os.path.dirname(os.path.realpath(__file__))
-  cmd = [cwd + '/run_jfuzz_test.py'] + DEFAULT_ARGS
+  cmd = [cwd + '/run_jfuzz_test.py']
   parser = argparse.ArgumentParser()
   parser.add_argument('--num_proc', default=8,
                       type=int, help='number of processes to run')
   # Unknown arguments are passed to run_jfuzz_test.py.
   (args, unknown_args) = parser.parse_known_args()
+  # Run processes.
+  cmd = cmd + unknown_args
+  print('\n**** Running ****\n\n', cmd, '\n')
   output_files = [TemporaryFile('wb+') for _ in range(args.num_proc)]
   processes = []
-  for output_file in output_files:
-    processes.append(subprocess.Popen(cmd + unknown_args, stdout=output_file,
+  for i, output_file in enumerate(output_files):
+    print('Tester', i)
+    processes.append(subprocess.Popen(cmd, stdout=output_file,
                                       stderr=subprocess.STDOUT))
   try:
     # Wait for processes to terminate.
@@ -56,6 +58,7 @@
     for proc in processes:
       proc.kill()
   # Output results.
+  print('\n**** Results ****\n')
   output_dirs = []
   for i, output_file in enumerate(output_files):
     output_file.seek(0)
@@ -65,20 +68,24 @@
     directory_match = re.search(r'Directory[^:]*: ([^\n]+)\n', output_str)
     if directory_match:
       output_dirs.append(directory_match.group(1))
-    print('Tester', i)
     if output_str.find(SUCCESS_STRING) == NOT_FOUND:
-      print(output_str)
+      print('Tester', i, output_str)
     else:
-      print(SUCCESS_STRING)
+      print('Tester', i, SUCCESS_STRING)
   # Gather divergences.
   global_out_dir = mkdtemp('jfuzz_nightly')
-  divergence_nr = 1
+  divergence_nr = 0
   for out_dir in output_dirs:
     for divergence_dir in glob(out_dir + '/divergence*/'):
+      divergence_nr += 1
       shutil.copytree(divergence_dir,
                       global_out_dir + '/divergence' + str(divergence_nr))
-      divergence_nr += 1
-  print('Global output directory:', global_out_dir)
+  if divergence_nr > 0:
+    print('\n!!!! Divergences !!!!', divergence_nr)
+  else:
+    print ('\nSuccess')
+  print('\nGlobal output directory:', global_out_dir)
+  print()
 
 if __name__ == '__main__':
   main(sys.argv)