diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-03-04 22:15:15 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-03-04 22:15:15 +0000 |
commit | d9f1ae881b559a8584f622b37cb46d6e8d6935fa (patch) | |
tree | 511ff8081fd064bc09a5063fdf68339785732a75 | |
parent | 03ecc4f25380350916a167f501f74a9a0fa6b7ca (diff) | |
parent | d2971742bb5ada4e07507ae7f7d62bb2865c636e (diff) | |
download | apex-simpleperf-release.tar.gz |
Snap for 11526323 from d2971742bb5ada4e07507ae7f7d62bb2865c636e to simpleperf-releasesimpleperf-release
Change-Id: Idf685549de92cfc138dc42d41bf67e0e54d55684
-rw-r--r-- | OWNERS | 5 | ||||
-rw-r--r-- | apexd/apexd.h | 2 | ||||
-rw-r--r-- | apexd/apexd_main.cpp | 8 | ||||
-rw-r--r-- | apexd/apexd_test.cpp | 54 |
4 files changed, 35 insertions, 34 deletions
@@ -1,6 +1,3 @@ # Bug component: 494373 -dariofreni@google.com jiyong@google.com -maco@google.com -malchev@google.com -narayan@google.com +jooyung@google.com
\ No newline at end of file diff --git a/apexd/apexd.h b/apexd/apexd.h index 592bf785..409b0e75 100644 --- a/apexd/apexd.h +++ b/apexd/apexd.h @@ -211,7 +211,7 @@ int OnStartInVmMode(); // Activates apexes in otapreot_chroot environment. // If `also_include_staged_apexes` is true, it's for Pre-reboot Dexopt. -int OnOtaChrootBootstrap(bool also_include_staged_apexes = false); +int OnOtaChrootBootstrap(bool also_include_staged_apexes); android::apex::MountedApexDatabase& GetApexDatabaseForTesting(); diff --git a/apexd/apexd_main.cpp b/apexd/apexd_main.cpp index 4cbab752..c7d89194 100644 --- a/apexd/apexd_main.cpp +++ b/apexd/apexd_main.cpp @@ -22,6 +22,8 @@ #include <strings.h> #include <sys/stat.h> +#include <memory> + #include "apexd.h" #include "apexd_checkpoint_vold.h" #include "apexd_lifecycle.h" @@ -41,8 +43,9 @@ int HandleSubcommand(int argc, char** argv) { SetDefaultTag("apexd-unmount-all"); bool also_include_staged_apexes = argc >= 3 && strcmp("--also-include-staged-apexes", argv[2]) == 0; + std::unique_ptr<android::apex::ApexSessionManager> session_manager; if (also_include_staged_apexes) { - auto session_manager = android::apex::ApexSessionManager::Create( + session_manager = android::apex::ApexSessionManager::Create( android::apex::GetSessionsDir()); android::apex::InitializeSessionManager(session_manager.get()); } @@ -53,8 +56,9 @@ int HandleSubcommand(int argc, char** argv) { SetDefaultTag("apexd-otachroot"); bool also_include_staged_apexes = argc >= 3 && strcmp("--also-include-staged-apexes", argv[2]) == 0; + std::unique_ptr<android::apex::ApexSessionManager> session_manager; if (also_include_staged_apexes) { - auto session_manager = android::apex::ApexSessionManager::Create( + session_manager = android::apex::ApexSessionManager::Create( android::apex::GetSessionsDir()); android::apex::InitializeSessionManager(session_manager.get()); } diff --git a/apexd/apexd_test.cpp b/apexd/apexd_test.cpp index 3e01a129..fb388557 100644 --- a/apexd/apexd_test.cpp +++ b/apexd/apexd_test.cpp @@ -1933,7 +1933,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapOnlyPreInstalledApexes) { std::string apex_path_2 = AddPreInstalledApex("apex.apexd_test_different_app.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); UnmountOnTearDown(apex_path_2); @@ -1970,7 +1970,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapFailsToScanPreInstalledApexes) { AddPreInstalledApex("apex.apexd_test.apex"); AddPreInstalledApex("apex.apexd_test_corrupt_superblock_apex.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 1); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 1); } TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHasHigherVersion) { @@ -1979,7 +1979,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHasHigherVersion) { AddPreInstalledApex("apex.apexd_test_different_app.apex"); std::string apex_path_3 = AddDataApex("apex.apexd_test_v2.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); @@ -2027,7 +2027,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHasSameVersion) { AddPreInstalledApex("apex.apexd_test_different_app.apex"); std::string apex_path_3 = AddDataApex("apex.apexd_test.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); @@ -2075,7 +2075,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSystemHasHigherVersion) { AddPreInstalledApex("apex.apexd_test_different_app.apex"); AddDataApex("apex.apexd_test.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); UnmountOnTearDown(apex_path_2); @@ -2116,7 +2116,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHasSameVersionButDifferentKey) { AddPreInstalledApex("apex.apexd_test_different_app.apex"); AddDataApex("apex.apexd_test_different_key.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); UnmountOnTearDown(apex_path_2); @@ -2165,7 +2165,7 @@ TEST_F(ApexdMountTest, ASSERT_EQ(static_cast<uint64_t>(apex->GetManifest().version()), 2ULL); } - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); UnmountOnTearDown(apex_path_2); @@ -2204,7 +2204,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataApexWithoutPreInstalledApex) { std::string apex_path_1 = AddPreInstalledApex("apex.apexd_test.apex"); AddDataApex("apex.apexd_test_different_app.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); @@ -2235,7 +2235,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapPreInstalledSharedLibsApex) { "com.android.apex.test.sharedlibs_generated.v1.libvX.apex"); std::string apex_path_3 = AddDataApex("apex.apexd_test_v2.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); @@ -2317,7 +2317,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSharedLibsApexBothVersions) { std::string apex_path_4 = AddDataApex("com.android.apex.test.sharedlibs_generated.v2.libvY.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); @@ -2414,7 +2414,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapOnlyCompressedApexes) { std::string apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Decompressed APEX should be mounted from decompression_dir std::string decompressed_apex = @@ -2458,7 +2458,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDecompressOnlyOnceMultipleCalls) { std::string apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Decompressed OTA APEX should be mounted std::string decompressed_ota_apex = @@ -2475,7 +2475,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDecompressOnlyOnceMultipleCalls) { // Call OnOtaChrootBootstrap again. Since we do not hardlink decompressed APEX // to /data/apex/active directory when in chroot, when selecting apex for // activation, we will end up selecting compressed APEX again. - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Compare write time to ensure we did not decompress again auto last_write_time_2 = fs::last_write_time(decompressed_ota_apex, ec); @@ -2493,7 +2493,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapUpgradeCapex) { std::string apex_path = AddPreInstalledApex("com.android.apex.compressed.v2.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Upgraded decompressed APEX should be mounted from decompression dir std::string decompressed_active_apex = @@ -2542,7 +2542,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSamegradeCapex) { StringPrintf("%s/different-name.capex", GetBuiltInDir().c_str()); fs::copy(GetTestFile("com.android.apex.compressed.v1.capex"), apex_path); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Previously decompressed APEX should be mounted from decompression_dir std::string decompressed_active_apex = StringPrintf( @@ -2591,7 +2591,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSamegradeCapexDifferentDigest) { // digest auto apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // New decompressed ota APEX should be mounted with kOtaApexPackageSuffix std::string decompressed_ota_apex = @@ -2656,7 +2656,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSamegradeCapexDifferentKey) { // Place a same version capex in current built_in_dir, which has different key auto apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // New decompressed APEX should be mounted from ota_reserved directory std::string decompressed_active_apex = @@ -2704,7 +2704,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapCapexToApex) { std::string apex_path = AddPreInstalledApex("com.android.apex.compressed.v1_original.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // New uncompressed APEX should be mounted UnmountOnTearDown(apex_path); @@ -2740,7 +2740,7 @@ TEST_F(ApexdMountTest, std::string apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Pre-installed CAPEX should be decompressed again and mounted from // decompression_dir @@ -2777,7 +2777,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHigherThanCapex) { auto data_apex_path = AddDataApex("com.android.apex.compressed.v2_original.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Data APEX should be mounted UnmountOnTearDown(data_apex_path); @@ -2825,7 +2825,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataLowerThanCapex) { auto apex_path = AddPreInstalledApex("com.android.apex.compressed.v2.capex"); AddDataApex("com.android.apex.compressed.v1_original.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Decompressed APEX should be mounted from reserved dir std::string decompressed_active_apex = @@ -2871,7 +2871,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataSameAsCapex) { auto data_apex_path = AddDataApex("com.android.apex.compressed.v1_original.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // Data APEX should be mounted UnmountOnTearDown(data_apex_path); @@ -2919,7 +2919,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDataHasDifferentKeyThanCapex) { // Place a same version capex in current built_in_dir, which has different key auto apex_path = AddPreInstalledApex("com.android.apex.compressed.v1.capex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); // New decompressed APEX should be mounted from ota_reserved directory std::string decompressed_active_apex = @@ -3052,7 +3052,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapSelinuxLabelsAreCorrect) { UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); EXPECT_EQ(GetSelinuxContext("/apex/apex-info-list.xml"), "u:object_r:apex_info_file:s0"); @@ -3072,7 +3072,7 @@ TEST_F(ApexdMountTest, OnOtaChrootBootstrapDmDevicesHaveCorrectName) { AddPreInstalledApex("apex.apexd_test_different_app.apex"); std::string apex_path_3 = AddDataApex("apex.apexd_test_v2.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); UnmountOnTearDown(apex_path_3); @@ -3102,7 +3102,7 @@ TEST_F(ApexdMountTest, std::string apex_path_2 = AddPreInstalledApex("apex.apexd_test_different_app.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_2); auto apex_mounts = GetApexMounts(); @@ -3141,7 +3141,7 @@ TEST_F(ApexdMountTest, std::string apex_path_3 = AddDataApex("apex.apexd_test_manifest_mismatch.apex"); - ASSERT_EQ(OnOtaChrootBootstrap(), 0); + ASSERT_EQ(OnOtaChrootBootstrap(/*also_include_staged_apexes=*/false), 0); UnmountOnTearDown(apex_path_1); UnmountOnTearDown(apex_path_2); |