Merge "libsnapshot: Fix vts_libsnapshot_test for GRF with Vendor on S"

This commit is contained in:
Akilesh Kailash 2022-06-15 23:24:47 +00:00 committed by Gerrit Code Review
commit 7e6cdc9f5e
2 changed files with 33 additions and 7 deletions

View file

@ -3273,8 +3273,21 @@ Return SnapshotManager::CreateUpdateSnapshots(const DeltaArchiveManifest& manife
snapuserd_client_ = nullptr;
}
} else {
status.set_userspace_snapshots(!IsDmSnapshotTestingEnabled());
if (IsDmSnapshotTestingEnabled()) {
bool userSnapshotsEnabled = true;
const std::string UNKNOWN = "unknown";
const std::string vendor_release = android::base::GetProperty(
"ro.vendor.build.version.release_or_codename", UNKNOWN);
// No user-space snapshots if vendor partition is on Android 12
if (vendor_release.find("12") != std::string::npos) {
LOG(INFO) << "Userspace snapshots disabled as vendor partition is on Android: "
<< vendor_release;
userSnapshotsEnabled = false;
}
userSnapshotsEnabled = (userSnapshotsEnabled && !IsDmSnapshotTestingEnabled());
status.set_userspace_snapshots(userSnapshotsEnabled);
if (!userSnapshotsEnabled) {
is_snapshot_userspace_ = false;
LOG(INFO) << "User-space snapshots disabled for testing";
} else {

View file

@ -91,7 +91,7 @@ std::string fake_super;
void MountMetadata();
bool ShouldUseCompression();
bool ShouldUseUserspaceSnapshots();
bool IsDaemonRequired();
class SnapshotTest : public ::testing::Test {
public:
@ -1208,7 +1208,7 @@ TEST_F(SnapshotUpdateTest, FullUpdateFlow) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// We should have started in SECOND_PHASE since nothing shrinks.
ASSERT_TRUE(AcquireLock());
@ -1342,7 +1342,7 @@ TEST_F(SnapshotUpdateTest, SpaceSwapUpdate) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// Check that the merge phase is FIRST_PHASE until at least one call
// to ProcessUpdateState() occurs.
@ -1450,7 +1450,7 @@ TEST_F(SnapshotUpdateTest, ConsistencyCheckResume) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// Check that the merge phase is FIRST_PHASE until at least one call
// to ProcessUpdateState() occurs.
@ -2750,13 +2750,26 @@ void SnapshotTestEnvironment::TearDown() {
}
}
bool ShouldUseUserspaceSnapshots() {
bool IsDaemonRequired() {
if (FLAGS_force_config == "dmsnap") {
return false;
}
const std::string UNKNOWN = "unknown";
const std::string vendor_release =
android::base::GetProperty("ro.vendor.build.version.release_or_codename", UNKNOWN);
// No userspace snapshots if vendor partition is on Android 12
// However, for GRF devices, snapuserd daemon will be on
// vendor ramdisk in Android 12.
if (vendor_release.find("12") != std::string::npos) {
return true;
}
if (!FLAGS_force_config.empty()) {
return true;
}
return IsUserspaceSnapshotsEnabled();
}