summaryrefslogtreecommitdiff
path: root/artd/artd_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'artd/artd_test.cc')
-rw-r--r--artd/artd_test.cc49
1 files changed, 49 insertions, 0 deletions
diff --git a/artd/artd_test.cc b/artd/artd_test.cc
index d6e383daf3..b7244451fa 100644
--- a/artd/artd_test.cc
+++ b/artd/artd_test.cc
@@ -2230,15 +2230,23 @@ TEST_F(ArtdTest, mergeProfilesWithOptionsDumpClassesAndMethods) {
CheckContent(output_profile.profilePath.tmpPath, "dump");
}
+static std::string EncodeLocationForDalvikCache(const std::string& location) {
+ std::string encoded = location.substr(/*pos=*/1); // Remove the leading '/';
+ std::replace(encoded.begin(), encoded.end(), '/', '@');
+ return encoded;
+}
+
class ArtdCleanupTest : public ArtdTest {
protected:
void SetUpForCleanup() {
// Unmanaged files.
CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/1.odex");
+ CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/1.arm64.sdm");
CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/oat/1.odex");
CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/oat/1.txt");
CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/oat/arm64/1.txt");
CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/oat/arm64/1.tmp");
+ CreateGcKeptFile(android_data_ + "/user_de/0/com.android.foo/oat/arm64/1.sdc");
// Files to keep.
CreateGcKeptFile(android_data_ + "/misc/profiles/cur/1/com.android.foo/primary.prof");
@@ -2266,6 +2274,15 @@ class ArtdCleanupTest : public ArtdTest {
"/123456-7890/user/1/com.android.foo/cache/oat_primary/arm64/base.art");
CreateGcKeptFile(android_data_ +
"/user/0/com.android.foo/cache/not_oat_dir/oat_primary/arm64/base.art");
+ CreateGcKeptFile(android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/base.arm64.sdm");
+ CreateGcKeptFile(android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/oat/arm64/base.sdc");
+ CreateGcKeptFile(android_data_ +
+ "/app/~~jhrwafasr==/com.android.qux-bredcweff==/base.arm64.sdm");
+ CreateGcKeptFile(android_data_ + "/dalvik-cache/arm64/" +
+ EncodeLocationForDalvikCache(android_data_) +
+ "@app@~~jhrwafasr==@com.android.qux-bredcweff==@base.apk@classes.sdc");
// Files to remove.
CreateGcRemovedFile(android_data_ + "/misc/profiles/ref/com.android.foo/primary.prof");
@@ -2307,6 +2324,26 @@ class ArtdCleanupTest : public ArtdTest {
"/user/0/com.android.foo/cache/oat_primary/arm64/different_dex.art");
CreateGcRemovedFile(android_data_ +
"/user/0/com.android.foo/cache/oat_primary/different_isa/base.art");
+ CreateGcRemovedFile(android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/different_dex.arm64.sdm");
+ CreateGcRemovedFile(
+ android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/oat/arm64/different_dex.sdc");
+ CreateGcRemovedFile(android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/base.different_isa.sdm");
+ CreateGcRemovedFile(
+ android_data_ +
+ "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/oat/different_isa/base.sdc");
+ CreateGcRemovedFile(android_data_ +
+ "/app/~~jhrwafasr==/com.android.qux-bredcweff==/different_dex.arm64.sdm");
+ CreateGcRemovedFile(
+ android_data_ + "/dalvik-cache/arm64/" + EncodeLocationForDalvikCache(android_data_) +
+ "@app@~~jhrwafasr==@com.android.qux-bredcweff==@different_dex.apk@classes.sdc");
+ CreateGcRemovedFile(android_data_ +
+ "/app/~~jhrwafasr==/com.android.qux-bredcweff==/base.different_isa.sdm");
+ CreateGcRemovedFile(android_data_ + "/dalvik-cache/different_isa/" +
+ EncodeLocationForDalvikCache(android_data_) +
+ "@app@~~jhrwafasr==@com.android.qux-bredcweff==@base.apk@classes.sdc");
}
void CreateGcRemovedFile(const std::string& path) {
@@ -2347,6 +2384,18 @@ class ArtdCleanupTest : public ArtdTest {
.isInDalvikCache = false}},
},
{
+ SecureDexMetadataWithCompanionPaths{
+ .dexPath =
+ android_data_ + "/app/~~fadsfgadg==/com.android.baz-fadsfgadg==/base.apk",
+ .isa = "arm64",
+ .isInDalvikCache = false},
+ SecureDexMetadataWithCompanionPaths{
+ .dexPath =
+ android_data_ + "/app/~~jhrwafasr==/com.android.qux-bredcweff==/base.apk",
+ .isa = "arm64",
+ .isInDalvikCache = true},
+ },
+ {
RuntimeArtifactsPath{
.packageName = "com.android.foo", .dexPath = "/a/b/base.apk", .isa = "arm64"},
},