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

Commit a16436d5 authored by Daniel Zheng's avatar Daniel Zheng
Browse files

Adding test for reader compatibility

Reader + Parser v3 should be able to read V2 cow format written to disk.
This test reads in a small cow file written by basic_v2_cow_writer and
parses it to ensure this compatibility checks out.

Test: cow_api_test
Change-Id: I46ebf4e3f12cdb3e4716ca5b624aab5836086733
parent 310e7ae4
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -415,6 +415,9 @@ cc_test {
    test_options: {
    test_options: {
        min_shipping_api_level: 30,
        min_shipping_api_level: 30,
    },
    },
    data: [
        "tools/testdata/cow_v2",
    ],
    auto_gen_config: true,
    auto_gen_config: true,
    require_root: false,
    require_root: false,
    host_supported: true,
    host_supported: true,
+31 −0
Original line number Original line Diff line number Diff line
@@ -1504,6 +1504,37 @@ TEST_F(CowTest, InvalidMergeOrderTest) {
    ASSERT_FALSE(reader.VerifyMergeOps());
    ASSERT_FALSE(reader.VerifyMergeOps());
}
}


unique_fd OpenTestFile(const std::string& file, int flags) {
    std::string path = "tools/testdata/" + file;

    unique_fd fd(open(path.c_str(), flags));
    if (fd >= 0) {
        return fd;
    }

    path = android::base::GetExecutableDirectory() + "/" + path;
    return unique_fd{open(path.c_str(), flags)};
}

TEST_F(CowTest, CompatibilityTest) {
    std::string filename = "cow_v2";
    auto fd = OpenTestFile(filename, O_RDONLY);
    if (fd.get() == -1) {
        LOG(ERROR) << filename << " not found";
        GTEST_SKIP();
    }
    CowReader reader;
    reader.Parse(fd);

    const auto& header = reader.GetHeader();
    ASSERT_EQ(header.prefix.magic, kCowMagicNumber);
    ASSERT_EQ(header.prefix.major_version, kCowVersionMajor);
    ASSERT_EQ(header.prefix.minor_version, kCowVersionMinor);

    CowFooter footer;
    ASSERT_TRUE(reader.GetFooter(&footer));
}

}  // namespace snapshot
}  // namespace snapshot
}  // namespace android
}  // namespace android