summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Roland Levillain <rpl@google.com> 2022-10-28 13:41:10 +0100
committer Roland Levillain <rpl@google.com> 2022-10-29 09:36:31 +0000
commit3ed6b50a3013c4786f58e983255aae22e38bf4b8 (patch)
tree75a31b284ec5d3c94437ccc558a9bc5f4093e320
parent2847729bd291b225f0f289242ee10020ca69eee2 (diff)
Add build-parameter test metadata to ART run-tests.
For now, use these build parameters to determine whether to safely ignore a test's `build.py` Python script while regenerating ART test files. Also remove the old logic checking the `build.py` Python script (originally the `build` Bash script) directly. Test: art/test/utils/regen-test-files Bug: 147814778 Change-Id: I384258d3e1cd0d0a0589fe64b9c2bc1f599b1401
-rw-r--r--test/004-UnsafeTest/test-metadata.json5
-rw-r--r--test/030-bad-finalizer/test-metadata.json5
-rw-r--r--test/122-npe/test-metadata.json5
-rw-r--r--test/1336-short-finalizer-timeout/test-metadata.json5
-rw-r--r--test/1339-dead-reference-safe/test-metadata.json5
-rw-r--r--test/160-read-barrier-stress/test-metadata.json6
-rw-r--r--test/178-app-image-native-method/test-metadata.json5
-rw-r--r--test/1981-structural-redef-private-method-handles/test-metadata.json5
-rw-r--r--test/1983-structural-redefinition-failures/test-metadata.json5
-rw-r--r--test/2005-pause-all-redefine-multithreaded/test-metadata.json5
-rw-r--r--test/2040-huge-native-alloc/test-metadata.json5
-rw-r--r--test/2041-bad-cleaner/test-metadata.json5
-rw-r--r--test/2235-JdkUnsafeTest/test-metadata.json5
-rw-r--r--test/612-jit-dex-cache/test-metadata.json5
-rw-r--r--test/613-inlining-dex-cache/test-metadata.json5
-rw-r--r--test/676-resolve-field-type/test-metadata.json5
-rw-r--r--test/689-zygote-jit-deopt/test-metadata.json5
-rw-r--r--test/692-vdex-inmem-loader/test-metadata.json5
-rw-r--r--test/692-vdex-secondary-loader/test-metadata.json5
-rw-r--r--test/693-vdex-inmem-loader-evict/test-metadata.json5
-rw-r--r--test/710-varhandle-creation/test-metadata.json5
-rw-r--r--test/713-varhandle-invokers/test-metadata.json5
-rw-r--r--test/716-jli-jit-samples/test-metadata.json5
-rw-r--r--test/719-varhandle-concurrency/test-metadata.json5
-rw-r--r--test/811-checker-invoke-super-secondary/test-metadata.json5
-rw-r--r--test/831-unverified-bcp/test-metadata.json5
-rwxr-xr-xtest/utils/regen-test-files69
27 files changed, 164 insertions, 36 deletions
diff --git a/test/004-UnsafeTest/test-metadata.json b/test/004-UnsafeTest/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/004-UnsafeTest/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/030-bad-finalizer/test-metadata.json b/test/030-bad-finalizer/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/030-bad-finalizer/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/122-npe/test-metadata.json b/test/122-npe/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/122-npe/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/1336-short-finalizer-timeout/test-metadata.json b/test/1336-short-finalizer-timeout/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/1336-short-finalizer-timeout/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/1339-dead-reference-safe/test-metadata.json b/test/1339-dead-reference-safe/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/1339-dead-reference-safe/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/160-read-barrier-stress/test-metadata.json b/test/160-read-barrier-stress/test-metadata.json
new file mode 100644
index 0000000000..b7e262c804
--- /dev/null
+++ b/test/160-read-barrier-stress/test-metadata.json
@@ -0,0 +1,6 @@
+{
+ "build-param": {
+ "experimental": "var-handles",
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/178-app-image-native-method/test-metadata.json b/test/178-app-image-native-method/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/178-app-image-native-method/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/1981-structural-redef-private-method-handles/test-metadata.json b/test/1981-structural-redef-private-method-handles/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/1981-structural-redef-private-method-handles/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/1983-structural-redefinition-failures/test-metadata.json b/test/1983-structural-redefinition-failures/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/1983-structural-redefinition-failures/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/2005-pause-all-redefine-multithreaded/test-metadata.json b/test/2005-pause-all-redefine-multithreaded/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/2005-pause-all-redefine-multithreaded/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/2040-huge-native-alloc/test-metadata.json b/test/2040-huge-native-alloc/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/2040-huge-native-alloc/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/2041-bad-cleaner/test-metadata.json b/test/2041-bad-cleaner/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/2041-bad-cleaner/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/2235-JdkUnsafeTest/test-metadata.json b/test/2235-JdkUnsafeTest/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/2235-JdkUnsafeTest/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/612-jit-dex-cache/test-metadata.json b/test/612-jit-dex-cache/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/612-jit-dex-cache/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/613-inlining-dex-cache/test-metadata.json b/test/613-inlining-dex-cache/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/613-inlining-dex-cache/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/676-resolve-field-type/test-metadata.json b/test/676-resolve-field-type/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/676-resolve-field-type/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/689-zygote-jit-deopt/test-metadata.json b/test/689-zygote-jit-deopt/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/689-zygote-jit-deopt/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/692-vdex-inmem-loader/test-metadata.json b/test/692-vdex-inmem-loader/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/692-vdex-inmem-loader/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/692-vdex-secondary-loader/test-metadata.json b/test/692-vdex-secondary-loader/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/692-vdex-secondary-loader/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/693-vdex-inmem-loader-evict/test-metadata.json b/test/693-vdex-inmem-loader-evict/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/693-vdex-inmem-loader-evict/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/710-varhandle-creation/test-metadata.json b/test/710-varhandle-creation/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/710-varhandle-creation/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/713-varhandle-invokers/test-metadata.json b/test/713-varhandle-invokers/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/713-varhandle-invokers/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/716-jli-jit-samples/test-metadata.json b/test/716-jli-jit-samples/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/716-jli-jit-samples/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/719-varhandle-concurrency/test-metadata.json b/test/719-varhandle-concurrency/test-metadata.json
new file mode 100644
index 0000000000..ed296916c8
--- /dev/null
+++ b/test/719-varhandle-concurrency/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "experimental": "var-handles"
+ }
+}
diff --git a/test/811-checker-invoke-super-secondary/test-metadata.json b/test/811-checker-invoke-super-secondary/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/811-checker-invoke-super-secondary/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/831-unverified-bcp/test-metadata.json b/test/831-unverified-bcp/test-metadata.json
new file mode 100644
index 0000000000..75f6c0270f
--- /dev/null
+++ b/test/831-unverified-bcp/test-metadata.json
@@ -0,0 +1,5 @@
+{
+ "build-param": {
+ "jvm-supported": "false"
+ }
+}
diff --git a/test/utils/regen-test-files b/test/utils/regen-test-files
index aec34e4920..19ed04070a 100755
--- a/test/utils/regen-test-files
+++ b/test/utils/regen-test-files
@@ -319,36 +319,37 @@ class Generator:
for run_test in os.listdir(self.art_test_dir)
if re.match("^[0-9]{3,}-", run_test)])
- # Read build file (Bash script) and return a canonized version of it
- # (without comments, blank lines, "debugging" statements, etc.).
- def canonize_build_script(self, build_file):
-
- def is_comment(line):
- return re.match("^\\s*#", line)
-
- def is_blank(line):
- return re.match("^\\s*$", line)
-
- def is_import(line):
- return re.match("^\\s*from .* import .*", line)
-
- # Should `line` be kept in the canonized build script?
- def keep_line(line):
- return not (is_comment(line) or is_blank(line) or is_import(line))
-
- with open(build_file, "r") as f:
- lines = f.readlines()
- return list(filter(keep_line, lines))
-
- # Can the build script in `build_file` be safely ignored?
- def can_ignore_build_script(self, build_file):
- build_script = self.canonize_build_script(build_file)
- if len(build_script) == 1:
- if build_script[0] == 'build_run_test(experimental="var-handles")\n':
- # Soong builds JARs with VarHandle support by default (i.e. by
- # using an API level greater or equal to 28), so we can ignore
- # build scripts that just request support for this feature.
- return True
+ # Return the metadata of a test, if any.
+ def get_test_metadata(self, run_test):
+ run_test_path = os.path.join(self.art_test_dir, run_test)
+ metadata_file = os.path.join(run_test_path, "test-metadata.json")
+ metadata = {}
+ if os.path.exists(metadata_file):
+ with open(metadata_file, "r") as f:
+ try:
+ metadata = json.load(f)
+ except json.decoder.JSONDecodeError:
+ logging.error(f"Unable to parse test metadata file `{metadata_file}`")
+ raise
+ return metadata
+
+ # Can the build script of `run_test` be safely ignored?
+ def can_ignore_build_script(self, run_test):
+ # Check whether there are test metadata with build parameters
+ # enabling us to safely ignore the build script.
+ metadata = self.get_test_metadata(run_test)
+ build_param = metadata.get("build-param", {})
+ # Ignore build scripts that are just about preventing building for
+ # the JVM and/or using VarHandles (Soong builds JARs with
+ # VarHandle support by default (i.e. by using an API level greater
+ # or equal to 28), so we can ignore build scripts that just
+ # request support for this feature.)
+ experimental_var_handles = {"experimental": "var-handles"}
+ jvm_supported_false = {"jvm-supported": "false"}
+ if (build_param == experimental_var_handles or
+ build_param == jvm_supported_false or
+ build_param == experimental_var_handles | jvm_supported_false):
+ return True
return False
# Is building `run_test` supported?
@@ -362,7 +363,7 @@ class Generator:
os.path.isfile(os.path.join(run_test_path, "javac_wrapper.sh"))):
return False
if os.path.isfile(os.path.join(run_test_path, "build.py")):
- if not self.can_ignore_build_script(os.path.join(run_test_path, "build.py")):
+ if not self.can_ignore_build_script(run_test):
return False
# Skip tests with sources outside the `src` directory.
for subdir in ["jasmin",
@@ -435,11 +436,7 @@ class Generator:
bp_file = os.path.join(run_test_path, "Android.bp")
# Optional test metadata (JSON file).
- metadata_file = os.path.join(run_test_path, "test-metadata.json")
- metadata = {}
- if os.path.exists(metadata_file):
- with open(metadata_file, "r") as f:
- metadata = json.load(f)
+ metadata = self.get_test_metadata(run_test)
run_test_module_name = ART_RUN_TEST_MODULE_NAME_PREFIX + run_test