From 16d35611ed7feaaa5c64d8ae81d09fdecf0b181c Mon Sep 17 00:00:00 2001 From: Daniel Zheng Date: Thu, 2 Nov 2023 14:25:48 -0700 Subject: [PATCH] test_v3: Add max op test case Add test case to ensure that add blocks will fail when we try to add more blocks that options.op_count_max specifies. Expected behavior is that we will write until that count and then fail Test: cow_api_test Change-Id: Icb44508c1bacbbe676347df9a58c0526068eebe0 --- fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp index 3277c990e..8a67c08c8 100644 --- a/fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp +++ b/fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp @@ -94,6 +94,24 @@ TEST_F(CowTestV3, Header) { ASSERT_EQ(header.cluster_ops, 0); } +TEST_F(CowTestV3, MaxOp) { + CowOptions options; + options.op_count_max = 20; + auto writer = CreateCowWriter(3, options, GetCowFd()); + ASSERT_FALSE(writer->AddZeroBlocks(1, 21)); + ASSERT_FALSE(writer->AddZeroBlocks(1, 1)); + std::string data = "This is some data, believe it"; + data.resize(options.block_size, '\0'); + + ASSERT_FALSE(writer->AddRawBlocks(5, data.data(), data.size())); + + ASSERT_TRUE(writer->Finalize()); + + CowReader reader; + ASSERT_TRUE(reader.Parse(cow_->fd)); + ASSERT_EQ(reader.header_v3().op_count, 20); +} + TEST_F(CowTestV3, ZeroOp) { CowOptions options; options.op_count_max = 20;