diff options
author | 2022-10-28 13:41:10 +0100 | |
---|---|---|
committer | 2022-10-29 09:36:31 +0000 | |
commit | 3ed6b50a3013c4786f58e983255aae22e38bf4b8 (patch) | |
tree | 75a31b284ec5d3c94437ccc558a9bc5f4093e320 | |
parent | 2847729bd291b225f0f289242ee10020ca69eee2 (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
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 |