Run JDWP tests on Dalvik

Updates the tools/run-jdwp-tests.py script to run JDWP tests on
Dalvik and filters out tests which are expected to fail.

Also updates jdwp test binaries to workaround a few more commands
not supported by Dalvik (like RT.Fields).

Bug: 65869324
Change-Id: I72e45a683ee8cd21d219b61b7c4387039bac679b
diff --git a/tools/run-jdwp-tests.py b/tools/run-jdwp-tests.py
index ff61dcc..15b69c8 100755
--- a/tools/run-jdwp-tests.py
+++ b/tools/run-jdwp-tests.py
@@ -18,12 +18,7 @@
   '7.0.0',
   '6.0.1',
   '5.1.1',
-]
-
-BOOT_LIBS = [
-  'core-libart-hostdex.jar',
-  'core-oj-hostdex.jar',
-  'apache-xml-hostdex.jar',
+  '4.4.4'
 ]
 
 JUNIT_HOSTDEX = os.path.join(
@@ -53,7 +48,10 @@
 ]
 
 def get_art_dir(version):
-  art_dir = version == 'default' and 'art' or 'art-%s' % version
+  if version == '4.4.4':
+    art_dir = 'dalvik'
+  else:
+    art_dir = version == 'default' and 'art' or 'art-%s' % version
   return os.path.join(utils.REPO_ROOT, 'tools', 'linux', art_dir)
 
 def get_lib_dir(version):
@@ -63,7 +61,7 @@
   return os.path.join(get_art_dir(version), 'framework')
 
 def get_vm(version):
-  return os.path.join(get_art_dir(version), 'bin', 'dalvikvm64')
+  return os.path.join(get_art_dir(version), 'bin', 'dalvikvm')
 
 def setup_environment(version):
   art_dir = get_art_dir(version)
@@ -71,6 +69,11 @@
   android_data = os.path.join(utils.REPO_ROOT, 'build', 'tmp', version)
   if not os.path.isdir(android_data):
     os.mkdir(android_data)
+  if version == '4.4.4':
+    # Dalvik expects that the dalvik-cache dir already exists.
+    dalvik_cache_dir = os.path.join(android_data, 'dalvik-cache')
+    if not os.path.isdir(dalvik_cache_dir):
+      os.mkdir(dalvik_cache_dir)
   os.environ['ANDROID_DATA'] = android_data
   os.environ['ANDROID_ROOT'] = art_dir
   os.environ['LD_LIBRARY_PATH'] = lib_dir
@@ -78,12 +81,25 @@
   os.environ['LD_USE_LOAD_BIAS'] = '1'
 
 def get_boot_libs(version):
-  return [os.path.join(get_fw_dir(version), lib) for lib in BOOT_LIBS]
+  boot_libs = []
+  if version == '4.4.4':
+    # Dalvik
+    boot_libs.extend(['core-hostdex.jar'])
+  else:
+    # ART
+    boot_libs.extend(['core-libart-hostdex.jar'])
+    if version != '5.1.1' and version != '6.0.1':
+      boot_libs.extend(['core-oj-hostdex.jar'])
+  boot_libs.extend(['apache-xml-hostdex.jar'])
+  return [os.path.join(get_fw_dir(version), lib) for lib in boot_libs]
 
 def get_common_flags(version):
-  flags = ['-Ximage:%s' % IMAGE]
-  if version != '5.1.1':
-    flags.extend(['-Xcompiler-option', '--debuggable'])
+  flags = []
+  flags.extend(['-Xbootclasspath:%s' % ':'.join(get_boot_libs(version))])
+  if version != '4.4.4':
+    flags.extend(['-Ximage:%s' % IMAGE])
+    if version != '5.1.1':
+      flags.extend(['-Xcompiler-option', '--debuggable'])
   return flags
 
 def get_debuggee_flags(version):
@@ -97,7 +113,6 @@
   lib_dir = get_lib_dir(version)
   fw_dir = get_fw_dir(version)
   cmd = [get_vm(version)]
-  cmd.append('-Xbootclasspath:%s' % ':'.join(get_boot_libs(version)))
   cmd.extend(get_debuggee_flags(version))
   cmd.extend(args)
   setup_environment(version)
@@ -108,10 +123,9 @@
   art_dir = get_art_dir(version)
   lib_dir = get_lib_dir(version)
   fw_dir = get_fw_dir(version)
-  dalvikvm = os.path.join(art_dir, 'bin', 'dalvikvm64')
+  dalvikvm = os.path.join(art_dir, 'bin', 'dalvikvm')
   cmd = [dalvikvm]
   cmd.extend(['-classpath', '%s:%s' % (classpath, JUNIT_HOSTDEX)])
-  cmd.append('-Xbootclasspath:%s' % ':'.join(get_boot_libs(version)))
   cmd.extend(get_debugger_flags(version))
   cmd.append('-Djpda.settings.debuggeeJavaPath=%s %s' %\
              (dalvikvm, ' '.join(get_debuggee_flags(version))))