diff options
author | 2025-03-14 21:10:02 +0000 | |
---|---|---|
committer | 2025-03-21 09:37:10 -0700 | |
commit | 751ffe4a74b5b7aa11f8449ed5d48e5f1a23e0fa (patch) | |
tree | 7de736c8561280b3c34fb2f5e0c7c0c29bb79d92 /artd/artd_test.cc | |
parent | 0f7d94bd99bb554d663a4a527155eee6192780ee (diff) |
Update the file GC to clean up SDM files.
If the best compilation artifacts are the ones generated on device, the
file GC should delete the SDM files.
Bug: 377474232
Test: atest ArtServiceTests
Test: atest art_standalone_artd_tests
Change-Id: If2f7c31525ff9a8a03cc16fefc16a6ebcf9fad96
Diffstat (limited to 'artd/artd_test.cc')
-rw-r--r-- | artd/artd_test.cc | 49 |
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"}, }, |