Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8d53703 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8762906 from 1ae6338d to tm-qpr1-release

Change-Id: I6725caf117b2308a0a3650dbf252478807da1e20
parents 4b8837f7 1ae6338d
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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 {
+18 −5
Original line number Diff line number Diff line
@@ -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();
}

+4 −4
Original line number Diff line number Diff line
@@ -231,24 +231,24 @@ void atrace_async_end_body(const char* name, int32_t cookie)

void atrace_async_for_track_begin_body(const char* track_name, const char* name, int32_t cookie) {
    if (CC_LIKELY(atrace_use_container_sock)) {
        WRITE_MSG_IN_CONTAINER("T", "|", "|%d", track_name, name, cookie);
        WRITE_MSG_IN_CONTAINER("G", "|", "|%d", track_name, name, cookie);
        return;
    }

    if (atrace_marker_fd < 0) return;

    WRITE_MSG("T|%d|", "|%" PRId32, track_name, name, cookie);
    WRITE_MSG("G|%d|", "|%" PRId32, track_name, name, cookie);
}

void atrace_async_for_track_end_body(const char* track_name, const char* name, int32_t cookie) {
    if (CC_LIKELY(atrace_use_container_sock)) {
        WRITE_MSG_IN_CONTAINER("U", "|", "|%d", track_name, name, cookie);
        WRITE_MSG_IN_CONTAINER("H", "|", "|%d", track_name, name, cookie);
        return;
    }

    if (atrace_marker_fd < 0) return;

    WRITE_MSG("U|%d|", "|%" PRId32, track_name, name, cookie);
    WRITE_MSG("H|%d|", "|%" PRId32, track_name, name, cookie);
}

void atrace_instant_body(const char* name) {
+2 −2
Original line number Diff line number Diff line
@@ -90,11 +90,11 @@ void atrace_async_end_body(const char* name, int32_t cookie)
}

void atrace_async_for_track_begin_body(const char* track_name, const char* name, int32_t cookie) {
    WRITE_MSG("T|%d|", "|%" PRId32, track_name, name, cookie);
    WRITE_MSG("G|%d|", "|%" PRId32, track_name, name, cookie);
}

void atrace_async_for_track_end_body(const char* track_name, const char* name, int32_t cookie) {
    WRITE_MSG("U|%d|", "|%" PRId32, track_name, name, cookie);
    WRITE_MSG("H|%d|", "|%" PRId32, track_name, name, cookie);
}

void atrace_instant_body(const char* name) {
+14 −14
Original line number Diff line number Diff line
@@ -202,13 +202,13 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_normal) {

    std::string actual;
    ASSERT_TRUE(android::base::ReadFdToString(atrace_marker_fd, &actual));
    std::string expected = android::base::StringPrintf("T|%d|fake_track|fake_name|12345", getpid());
    std::string expected = android::base::StringPrintf("G|%d|fake_track|fake_name|12345", getpid());
    ASSERT_STREQ(expected.c_str(), actual.c_str());
}

TEST_F(TraceDevTest, atrace_async_for_track_begin_body_exact_track_name) {
    const int name_size = 5;
    std::string expected = android::base::StringPrintf("T|%d|", getpid());
    std::string expected = android::base::StringPrintf("G|%d|", getpid());
    std::string track_name =
            MakeName(ATRACE_MESSAGE_LENGTH - expected.length() - 1 - name_size - 6);
    atrace_async_for_track_begin_body(track_name.c_str(), "name", 12345);
@@ -224,7 +224,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_exact_track_name) {
    // Add a single character and verify name truncation
    ASSERT_EQ(0, lseek(atrace_marker_fd, 0, SEEK_SET));
    track_name += '*';
    expected = android::base::StringPrintf("T|%d|", getpid());
    expected = android::base::StringPrintf("G|%d|", getpid());
    expected += track_name + "|nam|12345";
    atrace_async_for_track_begin_body(track_name.c_str(), "name", 12345);
    EXPECT_EQ(ATRACE_MESSAGE_LENGTH - 1, lseek(atrace_marker_fd, 0, SEEK_CUR));
@@ -234,7 +234,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_exact_track_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_begin_body_truncated_track_name) {
    std::string expected = android::base::StringPrintf("T|%d|", getpid());
    std::string expected = android::base::StringPrintf("G|%d|", getpid());
    std::string track_name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_begin_body(track_name.c_str(), "name", 12345);

@@ -250,7 +250,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_truncated_track_name) {

TEST_F(TraceDevTest, atrace_async_for_track_begin_body_exact_name) {
    const int track_name_size = 11;
    std::string expected = android::base::StringPrintf("T|%d|", getpid());
    std::string expected = android::base::StringPrintf("G|%d|", getpid());
    std::string name =
            MakeName(ATRACE_MESSAGE_LENGTH - expected.length() - 1 - track_name_size - 6);
    atrace_async_for_track_begin_body("track_name", name.c_str(), 12345);
@@ -274,7 +274,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_exact_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_begin_body_truncated_name) {
    std::string expected = android::base::StringPrintf("T|%d|track_name|", getpid());
    std::string expected = android::base::StringPrintf("G|%d|track_name|", getpid());
    std::string name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_begin_body("track_name", name.c_str(), 12345);

@@ -289,7 +289,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_begin_body_truncated_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_begin_body_truncated_both) {
    std::string expected = android::base::StringPrintf("T|%d|", getpid());
    std::string expected = android::base::StringPrintf("G|%d|", getpid());
    std::string name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    std::string track_name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_begin_body(track_name.c_str(), name.c_str(), 12345);
@@ -312,13 +312,13 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_normal) {

    std::string actual;
    ASSERT_TRUE(android::base::ReadFdToString(atrace_marker_fd, &actual));
    std::string expected = android::base::StringPrintf("U|%d|fake_track|fake_name|12345", getpid());
    std::string expected = android::base::StringPrintf("H|%d|fake_track|fake_name|12345", getpid());
    ASSERT_STREQ(expected.c_str(), actual.c_str());
}

TEST_F(TraceDevTest, atrace_async_for_track_end_body_exact_track_name) {
    const int name_size = 5;
    std::string expected = android::base::StringPrintf("U|%d|", getpid());
    std::string expected = android::base::StringPrintf("H|%d|", getpid());
    std::string track_name =
            MakeName(ATRACE_MESSAGE_LENGTH - expected.length() - 1 - name_size - 6);
    atrace_async_for_track_end_body(track_name.c_str(), "name", 12345);
@@ -334,7 +334,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_exact_track_name) {
    // Add a single character and verify name truncation
    ASSERT_EQ(0, lseek(atrace_marker_fd, 0, SEEK_SET));
    track_name += '*';
    expected = android::base::StringPrintf("U|%d|", getpid());
    expected = android::base::StringPrintf("H|%d|", getpid());
    expected += track_name + "|nam|12345";
    atrace_async_for_track_end_body(track_name.c_str(), "name", 12345);
    EXPECT_EQ(ATRACE_MESSAGE_LENGTH - 1, lseek(atrace_marker_fd, 0, SEEK_CUR));
@@ -344,7 +344,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_exact_track_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_end_body_truncated_track_name) {
    std::string expected = android::base::StringPrintf("U|%d|", getpid());
    std::string expected = android::base::StringPrintf("H|%d|", getpid());
    std::string track_name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_end_body(track_name.c_str(), "name", 12345);

@@ -360,7 +360,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_truncated_track_name) {

TEST_F(TraceDevTest, atrace_async_for_track_end_body_exact_name) {
    const int track_name_size = 11;
    std::string expected = android::base::StringPrintf("U|%d|", getpid());
    std::string expected = android::base::StringPrintf("H|%d|", getpid());
    std::string name =
            MakeName(ATRACE_MESSAGE_LENGTH - expected.length() - 1 - track_name_size - 6);
    atrace_async_for_track_end_body("track_name", name.c_str(), 12345);
@@ -384,7 +384,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_exact_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_end_body_truncated_name) {
    std::string expected = android::base::StringPrintf("U|%d|track_name|", getpid());
    std::string expected = android::base::StringPrintf("H|%d|track_name|", getpid());
    std::string name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_end_body("track_name", name.c_str(), 12345);

@@ -399,7 +399,7 @@ TEST_F(TraceDevTest, atrace_async_for_track_end_body_truncated_name) {
}

TEST_F(TraceDevTest, atrace_async_for_track_end_body_truncated_both) {
    std::string expected = android::base::StringPrintf("U|%d|", getpid());
    std::string expected = android::base::StringPrintf("H|%d|", getpid());
    std::string name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    std::string track_name = MakeName(2 * ATRACE_MESSAGE_LENGTH);
    atrace_async_for_track_end_body(track_name.c_str(), name.c_str(), 12345);