Merge "libsnapshot: Fix test failures on certain configurations."
This commit is contained in:
commit
57feb3fbbd
4 changed files with 48 additions and 2 deletions
|
@ -3216,6 +3216,8 @@ Return SnapshotManager::CreateUpdateSnapshots(const DeltaArchiveManifest& manife
|
|||
vabc_disable_reason = "recovery";
|
||||
} else if (!cow_format_support) {
|
||||
vabc_disable_reason = "cow format not supported";
|
||||
} else if (!KernelSupportsCompressedSnapshots()) {
|
||||
vabc_disable_reason = "kernel missing userspace block device support";
|
||||
}
|
||||
|
||||
if (!vabc_disable_reason.empty()) {
|
||||
|
|
|
@ -124,6 +124,10 @@ class SnapshotTest : public ::testing::Test {
|
|||
SKIP_IF_NON_VIRTUAL_AB();
|
||||
|
||||
SetupProperties();
|
||||
if (!DeviceSupportsMode()) {
|
||||
GTEST_SKIP() << "Mode not supported on this device";
|
||||
}
|
||||
|
||||
InitializeState();
|
||||
CleanupTestArtifacts();
|
||||
FormatFakeSuper();
|
||||
|
@ -159,7 +163,13 @@ class SnapshotTest : public ::testing::Test {
|
|||
IPropertyFetcher::OverrideForTesting(std::move(fetcher));
|
||||
|
||||
if (GetLegacyCompressionEnabledProperty() || CanUseUserspaceSnapshots()) {
|
||||
snapuserd_required_ = true;
|
||||
// If we're asked to test the device's actual configuration, then it
|
||||
// may be misconfigured, so check for kernel support as libsnapshot does.
|
||||
if (FLAGS_force_mode.empty()) {
|
||||
snapuserd_required_ = KernelSupportsCompressedSnapshots();
|
||||
} else {
|
||||
snapuserd_required_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -176,6 +186,16 @@ class SnapshotTest : public ::testing::Test {
|
|||
LOG(INFO) << "Teardown complete for test: " << test_name_;
|
||||
}
|
||||
|
||||
bool DeviceSupportsMode() {
|
||||
if (FLAGS_force_mode.empty()) {
|
||||
return true;
|
||||
}
|
||||
if (snapuserd_required_ && !KernelSupportsCompressedSnapshots()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void InitializeState() {
|
||||
ASSERT_TRUE(sm->EnsureImageManager());
|
||||
image_manager_ = sm->image_manager();
|
||||
|
@ -193,6 +213,11 @@ class SnapshotTest : public ::testing::Test {
|
|||
// get an accurate list to remove.
|
||||
lock_ = nullptr;
|
||||
|
||||
// If there is no image manager, the test was skipped.
|
||||
if (!image_manager_) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<std::string> snapshots = {"test-snapshot", "test_partition_a",
|
||||
"test_partition_b"};
|
||||
for (const auto& snapshot : snapshots) {
|
||||
|
@ -946,6 +971,11 @@ class SnapshotUpdateTest : public SnapshotTest {
|
|||
SKIP_IF_NON_VIRTUAL_AB();
|
||||
|
||||
SnapshotTest::SetUp();
|
||||
if (!image_manager_) {
|
||||
// Test was skipped.
|
||||
return;
|
||||
}
|
||||
|
||||
Cleanup();
|
||||
|
||||
// Cleanup() changes slot suffix, so initialize it again.
|
||||
|
@ -2680,6 +2710,9 @@ class ImageManagerTest : public SnapshotTest {
|
|||
CleanUp();
|
||||
}
|
||||
void CleanUp() {
|
||||
if (!image_manager_) {
|
||||
return;
|
||||
}
|
||||
EXPECT_TRUE(!image_manager_->BackingImageExists(kImageName) ||
|
||||
image_manager_->DeleteBackingImage(kImageName));
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <fs_mgr/roots.h>
|
||||
#include <liblp/property_fetcher.h>
|
||||
|
||||
using android::dm::DeviceMapper;
|
||||
using android::dm::kSectorSize;
|
||||
using android::fiemap::FiemapStatus;
|
||||
using android::fs_mgr::EnsurePathMounted;
|
||||
|
@ -251,7 +252,10 @@ bool CanUseUserspaceSnapshots() {
|
|||
LOG(INFO) << "Userspace snapshots disabled for testing";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!KernelSupportsCompressedSnapshots()) {
|
||||
LOG(ERROR) << "Userspace snapshots requested, but no kernel support is available.";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -278,5 +282,10 @@ bool IsDmSnapshotTestingEnabled() {
|
|||
return fetcher->GetBoolProperty("snapuserd.test.dm.snapshots", false);
|
||||
}
|
||||
|
||||
bool KernelSupportsCompressedSnapshots() {
|
||||
auto& dm = DeviceMapper::Instance();
|
||||
return dm.GetTargetByName("user", nullptr);
|
||||
}
|
||||
|
||||
} // namespace snapshot
|
||||
} // namespace android
|
||||
|
|
|
@ -127,6 +127,8 @@ std::ostream& operator<<(std::ostream& os, const Now&);
|
|||
void AppendExtent(google::protobuf::RepeatedPtrField<chromeos_update_engine::Extent>* extents,
|
||||
uint64_t start_block, uint64_t num_blocks);
|
||||
|
||||
bool KernelSupportsCompressedSnapshots();
|
||||
|
||||
bool GetLegacyCompressionEnabledProperty();
|
||||
bool GetUserspaceSnapshotsEnabledProperty();
|
||||
bool GetIouringEnabledProperty();
|
||||
|
|
Loading…
Reference in a new issue