diff options
author | 2021-10-13 11:07:25 +0100 | |
---|---|---|
committer | 2021-10-15 15:03:44 +0000 | |
commit | d4d21bf191f2afcd4d6479d60a4d3ab7a19af839 (patch) | |
tree | 904e32af33a858babf5b05bfee05683e5866069c /libartbase/base/file_utils_test.cc | |
parent | 740e1f972ab1401d0afa98f365d9f5fe70a8a895 (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.cc | 42 |
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"); |