diff options
author | Justin DeMartino <jjdemartino@google.com> | 2020-10-14 19:39:53 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-10-14 19:39:53 +0000 |
commit | 0d11af03e43f110b0bb160f7e20436d0043e3038 (patch) | |
tree | 48f8bcca856276ec73a86dd3fb26143d3ca64578 /fs_mgr/libsnapshot/snapshot_test.cpp | |
parent | 075666ebd0dee8d0c4a2efa54f7c324a3f67ee2a (diff) | |
parent | a6c01e4e98d2b343dcecfc99611e2e6250c730db (diff) |
Merge changes from topic "SP1A.200921.001" into s-keystone-qcom-dev
* changes:
fs_mgr: adb-remount-test.sh: filter out more administrivia mounts.
Merge SP1A.200921.001 Change-Id: I90b97c4e9fb10b1f45e74def404823eed5b1aaa8
Diffstat (limited to 'fs_mgr/libsnapshot/snapshot_test.cpp')
-rw-r--r-- | fs_mgr/libsnapshot/snapshot_test.cpp | 97 |
1 files changed, 52 insertions, 45 deletions
diff --git a/fs_mgr/libsnapshot/snapshot_test.cpp b/fs_mgr/libsnapshot/snapshot_test.cpp index 2bd013599..6ff935bac 100644 --- a/fs_mgr/libsnapshot/snapshot_test.cpp +++ b/fs_mgr/libsnapshot/snapshot_test.cpp @@ -83,9 +83,7 @@ void MountMetadata(); class SnapshotTest : public ::testing::Test { public: - SnapshotTest() : dm_(DeviceMapper::Instance()) { - is_virtual_ab_ = android::base::GetBoolProperty("ro.virtual_ab.enabled", false); - } + SnapshotTest() : dm_(DeviceMapper::Instance()) {} // This is exposed for main. void Cleanup() { @@ -95,7 +93,7 @@ class SnapshotTest : public ::testing::Test { protected: void SetUp() override { - if (!is_virtual_ab_) GTEST_SKIP() << "Test for Virtual A/B devices only"; + SKIP_IF_NON_VIRTUAL_AB(); SnapshotTestPropertyFetcher::SetUp(); InitializeState(); @@ -106,7 +104,7 @@ class SnapshotTest : public ::testing::Test { } void TearDown() override { - if (!is_virtual_ab_) return; + RETURN_IF_NON_VIRTUAL_AB(); lock_ = nullptr; @@ -341,7 +339,6 @@ class SnapshotTest : public ::testing::Test { } static constexpr std::chrono::milliseconds snapshot_timeout_ = 5s; - bool is_virtual_ab_; DeviceMapper& dm_; std::unique_ptr<SnapshotManager::LockedFile> lock_; android::fiemap::IImageManager* image_manager_ = nullptr; @@ -722,11 +719,13 @@ class LockTestConsumer { class LockTest : public ::testing::Test { public: void SetUp() { + SKIP_IF_NON_VIRTUAL_AB(); first_consumer.StartHandleRequestsInBackground(); second_consumer.StartHandleRequestsInBackground(); } void TearDown() { + RETURN_IF_NON_VIRTUAL_AB(); EXPECT_TRUE(first_consumer.MakeRequest(Request::EXIT)); EXPECT_TRUE(second_consumer.MakeRequest(Request::EXIT)); } @@ -770,7 +769,7 @@ INSTANTIATE_TEST_SUITE_P( class SnapshotUpdateTest : public SnapshotTest { public: void SetUp() override { - if (!is_virtual_ab_) GTEST_SKIP() << "Test for Virtual A/B devices only"; + SKIP_IF_NON_VIRTUAL_AB(); SnapshotTest::SetUp(); Cleanup(); @@ -832,7 +831,7 @@ class SnapshotUpdateTest : public SnapshotTest { } } void TearDown() override { - if (!is_virtual_ab_) return; + RETURN_IF_NON_VIRTUAL_AB(); Cleanup(); SnapshotTest::TearDown(); @@ -1365,13 +1364,17 @@ TEST_F(SnapshotUpdateTest, MergeCannotRemoveCow) { ASSERT_EQ(UpdateState::MergeCompleted, init->ProcessUpdateState()); } -class MetadataMountedTest : public SnapshotUpdateTest { +class MetadataMountedTest : public ::testing::Test { public: + // This is so main() can instantiate this to invoke Cleanup. + virtual void TestBody() override {} void SetUp() override { + SKIP_IF_NON_VIRTUAL_AB(); metadata_dir_ = test_device->GetMetadataDir(); ASSERT_TRUE(ReadDefaultFstab(&fstab_)); } void TearDown() override { + RETURN_IF_NON_VIRTUAL_AB(); SetUp(); // Remount /metadata test_device->set_recovery(false); @@ -1702,8 +1705,6 @@ class FlashAfterUpdateTest : public SnapshotUpdateTest, }; TEST_P(FlashAfterUpdateTest, FlashSlotAfterUpdate) { - if (!is_virtual_ab_) GTEST_SKIP() << "Test for Virtual A/B devices only"; - // OTA client blindly unmaps all partitions that are possibly mapped. for (const auto& name : {"sys_b", "vnd_b", "prd_b"}) { ASSERT_TRUE(sm->UnmapUpdateSnapshot(name)); @@ -1803,14 +1804,13 @@ INSTANTIATE_TEST_SUITE_P(Snapshot, FlashAfterUpdateTest, Combine(Values(0, 1), B class ImageManagerTest : public SnapshotTest, public WithParamInterface<uint64_t> { protected: void SetUp() override { - if (!is_virtual_ab_) GTEST_SKIP() << "Test for Virtual A/B devices only"; - + SKIP_IF_NON_VIRTUAL_AB(); SnapshotTest::SetUp(); userdata_ = std::make_unique<LowSpaceUserdata>(); ASSERT_TRUE(userdata_->Init(GetParam())); } void TearDown() override { - if (!is_virtual_ab_) return; + RETURN_IF_NON_VIRTUAL_AB(); return; // BUG(149738928) EXPECT_TRUE(!image_manager_->BackingImageExists(kImageName) || @@ -1852,11 +1852,6 @@ std::vector<uint64_t> ImageManagerTestParams() { INSTANTIATE_TEST_SUITE_P(ImageManagerTest, ImageManagerTest, ValuesIn(ImageManagerTestParams())); -} // namespace snapshot -} // namespace android - -using namespace android::snapshot; - bool Mkdir(const std::string& path) { if (mkdir(path.c_str(), 0700) && errno != EEXIST) { std::cerr << "Could not mkdir " << path << ": " << strerror(errno) << std::endl; @@ -1865,8 +1860,21 @@ bool Mkdir(const std::string& path) { return true; } -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); +class SnapshotTestEnvironment : public ::testing::Environment { + public: + ~SnapshotTestEnvironment() override {} + void SetUp() override; + void TearDown() override; + + private: + std::unique_ptr<IImageManager> super_images_; +}; + +void SnapshotTestEnvironment::SetUp() { + // b/163082876: GTEST_SKIP in Environment will make atest report incorrect results. Until + // that is fixed, don't call GTEST_SKIP here, but instead call GTEST_SKIP in individual test + // suites. + RETURN_IF_NON_VIRTUAL_AB_MSG("Virtual A/B is not enabled, skipping global setup.\n"); std::vector<std::string> paths = { // clang-format off @@ -1879,18 +1887,13 @@ int main(int argc, char** argv) { // clang-format on }; for (const auto& path : paths) { - if (!Mkdir(path)) { - return 1; - } + ASSERT_TRUE(Mkdir(path)); } // Create this once, otherwise, gsid will start/stop between each test. test_device = new TestDeviceInfo(); sm = SnapshotManager::New(test_device); - if (!sm) { - std::cerr << "Could not create snapshot manager\n"; - return 1; - } + ASSERT_NE(nullptr, sm) << "Could not create snapshot manager"; // Clean up previous run. MetadataMountedTest().TearDown(); @@ -1898,31 +1901,35 @@ int main(int argc, char** argv) { SnapshotTest().Cleanup(); // Use a separate image manager for our fake super partition. - auto super_images = IImageManager::Open("ota/test/super", 10s); - if (!super_images) { - std::cerr << "Could not create image manager\n"; - return 1; - } + super_images_ = IImageManager::Open("ota/test/super", 10s); + ASSERT_NE(nullptr, super_images_) << "Could not create image manager"; // Clean up any old copy. - DeleteBackingImage(super_images.get(), "fake-super"); + DeleteBackingImage(super_images_.get(), "fake-super"); // Create and map the fake super partition. static constexpr int kImageFlags = IImageManager::CREATE_IMAGE_DEFAULT | IImageManager::CREATE_IMAGE_ZERO_FILL; - if (!super_images->CreateBackingImage("fake-super", kSuperSize, kImageFlags)) { - std::cerr << "Could not create fake super partition\n"; - return 1; - } - if (!super_images->MapImageDevice("fake-super", 10s, &fake_super)) { - std::cerr << "Could not map fake super partition\n"; - return 1; - } + ASSERT_TRUE(super_images_->CreateBackingImage("fake-super", kSuperSize, kImageFlags)) + << "Could not create fake super partition"; + + ASSERT_TRUE(super_images_->MapImageDevice("fake-super", 10s, &fake_super)) + << "Could not map fake super partition"; test_device->set_fake_super(fake_super); +} - auto result = RUN_ALL_TESTS(); +void SnapshotTestEnvironment::TearDown() { + RETURN_IF_NON_VIRTUAL_AB(); + if (super_images_ != nullptr) { + DeleteBackingImage(super_images_.get(), "fake-super"); + } +} - DeleteBackingImage(super_images.get(), "fake-super"); +} // namespace snapshot +} // namespace android - return result; +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new ::android::snapshot::SnapshotTestEnvironment()); + return RUN_ALL_TESTS(); } |