Loading fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp +34 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,40 @@ TEST_F(CowTestV3, MaxOp) { ASSERT_EQ(reader.header_v3().op_count, 20); } TEST_F(CowTestV3, MaxOpSingleThreadCompression) { CowOptions options; options.op_count_max = 20; options.num_compress_threads = 1; options.compression_factor = 4096 * 8; options.compression = "lz4"; auto writer = CreateCowWriter(3, options, GetCowFd()); ASSERT_TRUE(writer->AddZeroBlocks(1, 20)); 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()); } TEST_F(CowTestV3, MaxOpMultiThreadCompression) { CowOptions options; options.op_count_max = 20; options.num_compress_threads = 2; options.compression_factor = 4096 * 8; options.compression = "lz4"; auto writer = CreateCowWriter(3, options, GetCowFd()); ASSERT_TRUE(writer->AddZeroBlocks(1, 20)); 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()); } TEST_F(CowTestV3, ZeroOp) { CowOptions options; options.op_count_max = 20; Loading fs_mgr/libsnapshot/libsnapshot_cow/writer_v3.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -356,6 +356,9 @@ bool CowWriterV3::ConstructCowOpCompressedBuffers(uint64_t new_block_start, cons << ", actual number of blocks received from compressor " << blocks.size(); return false; } if (!CheckOpCount(blocks.size())) { return false; } size_t blocks_written = 0; for (size_t blk_index = 0; blk_index < blocks.size(); blk_index++) { CowOperation& op = cached_ops_.emplace_back(); Loading Loading @@ -395,9 +398,6 @@ bool CowWriterV3::EmitBlocks(uint64_t new_block_start, const void* data, size_t } const auto bytes = reinterpret_cast<const uint8_t*>(data); const size_t num_blocks = (size / header_.block_size); if (!CheckOpCount(num_blocks)) { return false; } for (size_t i = 0; i < num_blocks;) { const size_t blocks_to_write = std::min<size_t>(batch_size_ - cached_data_.size(), num_blocks - i); Loading Loading
fs_mgr/libsnapshot/libsnapshot_cow/test_v3.cpp +34 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,40 @@ TEST_F(CowTestV3, MaxOp) { ASSERT_EQ(reader.header_v3().op_count, 20); } TEST_F(CowTestV3, MaxOpSingleThreadCompression) { CowOptions options; options.op_count_max = 20; options.num_compress_threads = 1; options.compression_factor = 4096 * 8; options.compression = "lz4"; auto writer = CreateCowWriter(3, options, GetCowFd()); ASSERT_TRUE(writer->AddZeroBlocks(1, 20)); 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()); } TEST_F(CowTestV3, MaxOpMultiThreadCompression) { CowOptions options; options.op_count_max = 20; options.num_compress_threads = 2; options.compression_factor = 4096 * 8; options.compression = "lz4"; auto writer = CreateCowWriter(3, options, GetCowFd()); ASSERT_TRUE(writer->AddZeroBlocks(1, 20)); 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()); } TEST_F(CowTestV3, ZeroOp) { CowOptions options; options.op_count_max = 20; Loading
fs_mgr/libsnapshot/libsnapshot_cow/writer_v3.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -356,6 +356,9 @@ bool CowWriterV3::ConstructCowOpCompressedBuffers(uint64_t new_block_start, cons << ", actual number of blocks received from compressor " << blocks.size(); return false; } if (!CheckOpCount(blocks.size())) { return false; } size_t blocks_written = 0; for (size_t blk_index = 0; blk_index < blocks.size(); blk_index++) { CowOperation& op = cached_ops_.emplace_back(); Loading Loading @@ -395,9 +398,6 @@ bool CowWriterV3::EmitBlocks(uint64_t new_block_start, const void* data, size_t } const auto bytes = reinterpret_cast<const uint8_t*>(data); const size_t num_blocks = (size / header_.block_size); if (!CheckOpCount(num_blocks)) { return false; } for (size_t i = 0; i < num_blocks;) { const size_t blocks_to_write = std::min<size_t>(batch_size_ - cached_data_.size(), num_blocks - i); Loading