Loading fs_mgr/libsnapshot/snapshot_test.cpp +63 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,17 @@ class SnapshotTest : public ::testing::Test { return true; } bool ShouldSkipLegacyMerging() { if (!GetLegacyCompressionEnabledProperty() || !snapuserd_required_) { return false; } int api_level = android::base::GetIntProperty("ro.board.api_level", -1); if (api_level == -1) { api_level = android::base::GetIntProperty("ro.product.first_api_level", -1); } return api_level != __ANDROID_API_S__; } void InitializeState() { ASSERT_TRUE(sm->EnsureImageManager()); image_manager_ = sm->image_manager(); Loading Loading @@ -654,6 +665,10 @@ TEST_F(SnapshotTest, Merge) { test_device->set_slot_suffix("_b"); ASSERT_TRUE(sm->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(sm->InitiateMerge()); // The device should have been switched to a snapshot-merge target. Loading Loading @@ -761,6 +776,10 @@ TEST_F(SnapshotTest, FlashSuperDuringMerge) { ASSERT_NE(init, nullptr); ASSERT_TRUE(init->NeedSnapshotsInFirstStageMount()); ASSERT_TRUE(init->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); // Now, reflash super. Note that we haven't called ProcessUpdateState, so the Loading Loading @@ -1344,6 +1363,10 @@ TEST_F(SnapshotUpdateTest, FullUpdateFlow) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1407,6 +1430,10 @@ TEST_F(SnapshotUpdateTest, DuplicateOps) { ASSERT_TRUE(init->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, init->ProcessUpdateState()); } Loading Loading @@ -1476,6 +1503,10 @@ TEST_F(SnapshotUpdateTest, SpaceSwapUpdate) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1584,6 +1615,10 @@ TEST_F(SnapshotUpdateTest, ConsistencyCheckResume) { }); // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1786,6 +1821,10 @@ TEST_F(SnapshotUpdateTest, ReclaimCow) { // Initiate the merge and wait for it to be completed. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, new_sm->ProcessUpdateState()); Loading Loading @@ -1924,6 +1963,10 @@ TEST_F(SnapshotUpdateTest, MergeCannotRemoveCow) { ASSERT_GE(fd, 0); // COW cannot be removed due to open fd, so expect a soft failure. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeNeedsReboot, init->ProcessUpdateState()); Loading Loading @@ -2027,6 +2070,10 @@ TEST_F(SnapshotUpdateTest, MergeInRecovery) { // Initiate the merge and then immediately stop it to simulate a reboot. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_TRUE(UnmapAll()); Loading Loading @@ -2059,6 +2106,10 @@ TEST_F(SnapshotUpdateTest, MergeInFastboot) { // Initiate the merge and then immediately stop it to simulate a reboot. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_TRUE(UnmapAll()); Loading Loading @@ -2136,6 +2187,10 @@ TEST_F(SnapshotUpdateTest, DataWipeAfterRollback) { // Test update package that requests data wipe. TEST_F(SnapshotUpdateTest, DataWipeRequiredInPackage) { if (ShouldSkipLegacyMerging()) { GTEST_SKIP() << "Skipping legacy merge in test"; } AddOperationForPartitions(); // Execute the update. ASSERT_TRUE(sm->BeginUpdate()); Loading Loading @@ -2175,6 +2230,10 @@ TEST_F(SnapshotUpdateTest, DataWipeRequiredInPackage) { // Test update package that requests data wipe. TEST_F(SnapshotUpdateTest, DataWipeWithStaleSnapshots) { if (ShouldSkipLegacyMerging()) { GTEST_SKIP() << "Skipping legacy merge in test"; } AddOperationForPartitions(); // Execute the update. Loading Loading @@ -2397,6 +2456,10 @@ TEST_F(SnapshotUpdateTest, AddPartition) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, init->ProcessUpdateState()); Loading Loading
fs_mgr/libsnapshot/snapshot_test.cpp +63 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,17 @@ class SnapshotTest : public ::testing::Test { return true; } bool ShouldSkipLegacyMerging() { if (!GetLegacyCompressionEnabledProperty() || !snapuserd_required_) { return false; } int api_level = android::base::GetIntProperty("ro.board.api_level", -1); if (api_level == -1) { api_level = android::base::GetIntProperty("ro.product.first_api_level", -1); } return api_level != __ANDROID_API_S__; } void InitializeState() { ASSERT_TRUE(sm->EnsureImageManager()); image_manager_ = sm->image_manager(); Loading Loading @@ -654,6 +665,10 @@ TEST_F(SnapshotTest, Merge) { test_device->set_slot_suffix("_b"); ASSERT_TRUE(sm->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(sm->InitiateMerge()); // The device should have been switched to a snapshot-merge target. Loading Loading @@ -761,6 +776,10 @@ TEST_F(SnapshotTest, FlashSuperDuringMerge) { ASSERT_NE(init, nullptr); ASSERT_TRUE(init->NeedSnapshotsInFirstStageMount()); ASSERT_TRUE(init->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); // Now, reflash super. Note that we haven't called ProcessUpdateState, so the Loading Loading @@ -1344,6 +1363,10 @@ TEST_F(SnapshotUpdateTest, FullUpdateFlow) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1407,6 +1430,10 @@ TEST_F(SnapshotUpdateTest, DuplicateOps) { ASSERT_TRUE(init->CreateLogicalAndSnapshotPartitions("super", snapshot_timeout_)); // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, init->ProcessUpdateState()); } Loading Loading @@ -1476,6 +1503,10 @@ TEST_F(SnapshotUpdateTest, SpaceSwapUpdate) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1584,6 +1615,10 @@ TEST_F(SnapshotUpdateTest, ConsistencyCheckResume) { }); // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(init->IsSnapuserdRequired(), snapuserd_required_); { Loading Loading @@ -1786,6 +1821,10 @@ TEST_F(SnapshotUpdateTest, ReclaimCow) { // Initiate the merge and wait for it to be completed. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, new_sm->ProcessUpdateState()); Loading Loading @@ -1924,6 +1963,10 @@ TEST_F(SnapshotUpdateTest, MergeCannotRemoveCow) { ASSERT_GE(fd, 0); // COW cannot be removed due to open fd, so expect a soft failure. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeNeedsReboot, init->ProcessUpdateState()); Loading Loading @@ -2027,6 +2070,10 @@ TEST_F(SnapshotUpdateTest, MergeInRecovery) { // Initiate the merge and then immediately stop it to simulate a reboot. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_TRUE(UnmapAll()); Loading Loading @@ -2059,6 +2106,10 @@ TEST_F(SnapshotUpdateTest, MergeInFastboot) { // Initiate the merge and then immediately stop it to simulate a reboot. auto new_sm = SnapshotManager::New(new TestDeviceInfo(fake_super, "_b")); if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(new_sm->InitiateMerge()); ASSERT_TRUE(UnmapAll()); Loading Loading @@ -2136,6 +2187,10 @@ TEST_F(SnapshotUpdateTest, DataWipeAfterRollback) { // Test update package that requests data wipe. TEST_F(SnapshotUpdateTest, DataWipeRequiredInPackage) { if (ShouldSkipLegacyMerging()) { GTEST_SKIP() << "Skipping legacy merge in test"; } AddOperationForPartitions(); // Execute the update. ASSERT_TRUE(sm->BeginUpdate()); Loading Loading @@ -2175,6 +2230,10 @@ TEST_F(SnapshotUpdateTest, DataWipeRequiredInPackage) { // Test update package that requests data wipe. TEST_F(SnapshotUpdateTest, DataWipeWithStaleSnapshots) { if (ShouldSkipLegacyMerging()) { GTEST_SKIP() << "Skipping legacy merge in test"; } AddOperationForPartitions(); // Execute the update. Loading Loading @@ -2397,6 +2456,10 @@ TEST_F(SnapshotUpdateTest, AddPartition) { } // Initiate the merge and wait for it to be completed. if (ShouldSkipLegacyMerging()) { LOG(INFO) << "Skipping legacy merge in test"; return; } ASSERT_TRUE(init->InitiateMerge()); ASSERT_EQ(UpdateState::MergeCompleted, init->ProcessUpdateState()); Loading