summaryrefslogtreecommitdiff
path: root/libartbase/base/file_utils_test.cc
diff options
context:
space:
mode:
author Alan Stokes <alanstokes@google.com> 2021-10-13 11:07:25 +0100
committer Treehugger Robot <treehugger-gerrit@google.com> 2021-10-15 15:03:44 +0000
commitd4d21bf191f2afcd4d6479d60a4d3ab7a19af839 (patch)
tree904e32af33a858babf5b05bfee05683e5866069c /libartbase/base/file_utils_test.cc
parent740e1f972ab1401d0afa98f365d9f5fe70a8a895 (diff)
Allow odrefresh to write elsewhere than dalvik-cache
For CompOS we want to be able to generate artifacts in different subdirectories, e.g. /data/misc/apexdata/com.android.art/pending rather than /data/misc/apexdata/com.android.art/dalvik-cache. Add a command line flag to enable this. Bug: 200020887 Test: atest art_standalone_libartbase_tests Test: manual: odrefresh --dalvik-cache=foo --force-compile Change-Id: Id10c9bcc8cb9f810c48727abc1858f5b16b360d2
Diffstat (limited to 'libartbase/base/file_utils_test.cc')
-rw-r--r--libartbase/base/file_utils_test.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/libartbase/base/file_utils_test.cc b/libartbase/base/file_utils_test.cc
index a0b3325648..7678df40b0 100644
--- a/libartbase/base/file_utils_test.cc
+++ b/libartbase/base/file_utils_test.cc
@@ -29,6 +29,21 @@ namespace art {
static constexpr const char kAndroidWifiApexDefaultPath[] = "/apex/com.android.wifi";
+namespace {
+class ScopedOverrideDalvikCacheSubDirectory {
+ public:
+ explicit ScopedOverrideDalvikCacheSubDirectory(const char* override) {
+ OverrideDalvikCacheSubDirectory(override);
+ }
+
+ ~ScopedOverrideDalvikCacheSubDirectory() {
+ OverrideDalvikCacheSubDirectory("dalvik-cache");
+ }
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ScopedOverrideDalvikCacheSubDirectory);
+};
+} // namespace
+
class FileUtilsTest : public CommonArtTest {};
TEST_F(FileUtilsTest, GetDalvikCacheFilename) {
@@ -271,6 +286,33 @@ TEST_F(FileUtilsTest, GetApexDataDalvikCacheFilename) {
CHECK_EQ(vdex_filename, ReplaceFileExtension(art_filename, "vdex"));
}
+TEST_F(FileUtilsTest, OverrideDalvikCacheSubDirectory) {
+ ScopedUnsetEnvironmentVariable android_root("ANDROID_ROOT");
+ ScopedUnsetEnvironmentVariable i18n_root("ANDROID_I18N_ROOT");
+ ScopedUnsetEnvironmentVariable art_apex_data("ART_APEX_DATA");
+
+ ScopedOverrideDalvikCacheSubDirectory dalvik_cache("overridden-cache");
+
+ EXPECT_EQ(GetArtApexData() + "/overridden-cache/arm/boot-beep.oat",
+ GetApexDataOatFilename("/product/javalib/beep.jar", InstructionSet::kArm));
+
+ EXPECT_EQ(GetArtApexData() + "/overridden-cache/arm/data@some@code.odex",
+ GetApexDataOdexFilename("/data/some/code.dex", InstructionSet::kArm));
+
+ const std::string system_jar = "/system/framework/disk.jar";
+ const std::string boot_image = GetApexDataBootImage(system_jar.c_str());
+ EXPECT_EQ(GetArtApexData() + "/overridden-cache/boot-disk.art", boot_image);
+
+ EXPECT_EQ(
+ GetArtApexData() + "/overridden-cache/apex@com.android.wifi@lib@javalib@bar.jar@classes.art",
+ GetApexDataImage(std::string {kAndroidWifiApexDefaultPath} + "/lib/javalib/bar.jar"));
+
+ const std::string apex_jar = std::string {kAndroidWifiApexDefaultPath} + "/lib/javalib/bar.jar";
+ EXPECT_EQ(GetArtApexData() +
+ "/overridden-cache/x86_64/apex@com.android.wifi@lib@javalib@bar.jar@classes.art",
+ GetApexDataDalvikCacheFilename(apex_jar, InstructionSet::kX86_64, "art"));
+}
+
TEST_F(FileUtilsTest, GetSystemOdexFilenameForApex) {
ScopedUnsetEnvironmentVariable android_root("ANDROID_ROOT");