diff --git a/fs_mgr/libsnapshot/snapshot_test.cpp b/fs_mgr/libsnapshot/snapshot_test.cpp index 460d49db2..f472babdf 100644 --- a/fs_mgr/libsnapshot/snapshot_test.cpp +++ b/fs_mgr/libsnapshot/snapshot_test.cpp @@ -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(); @@ -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. @@ -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 @@ -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_); { @@ -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()); } @@ -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_); { @@ -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_); { @@ -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()); @@ -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()); @@ -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()); @@ -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()); @@ -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()); @@ -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. @@ -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());