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))))