Skip to content

Instantly share code, notes, and snippets.

@MahatiC
Created January 22, 2021 10:24
Show Gist options
  • Save MahatiC/f2c08c78c4fec810e68c22ca850491a8 to your computer and use it in GitHub Desktop.
Save MahatiC/f2c08c78c4fec810e68c22ca850491a8 to your computer and use it in GitHub Desktop.
TEST_F(TestMockCacheSSDWriteLog, write) {
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
MockImageCtx mock_image_ctx(*ictx);
MockImageWriteback mock_image_writeback(mock_image_ctx);
MockApi mock_api;
MockSSDWriteLog rwl(
mock_image_ctx, get_cache_state(mock_image_ctx, mock_api),
mock_image_writeback, mock_api);
MockContextSSD finish_ctx1;
expect_op_work_queue(mock_image_ctx);
expect_metadata_set(mock_image_ctx);
expect_context_complete(finish_ctx1, 0);
rwl.init(&finish_ctx1);
ASSERT_EQ(0, finish_ctx1.wait());
MockContextSSD finish_ctx2;
expect_context_complete(finish_ctx2, 0);
Extents image_extents{{0, 4096}};
bufferlist bl;
bl.append(std::string(4096, '1'));
int fadvise_flags = 0;
rwl.write(std::move(image_extents), std::move(bl), fadvise_flags, &finish_ctx2);
ASSERT_EQ(0, finish_ctx2.wait());
MockContextSSD finish_ctx4;
expect_context_complete(finish_ctx4, 0);
rwl.flush(librbd::io::FLUSH_SOURCE_USER, &finish_ctx4);
MockContextSSD finish_ctx5;
expect_context_complete(finish_ctx5, 0);
Extents image_extents2{{0, 4096}};
bufferlist bl2;
bl2.append(std::string(4096, '1'));
int fadvise_flags2 = 0;
rwl.write(std::move(image_extents2), std::move(bl2), fadvise_flags2, &finish_ctx5);
ASSERT_EQ(0, finish_ctx5.wait());
MockContextSSD finish_ctx3;
expect_context_complete(finish_ctx3, 0);
rwl.shut_down(&finish_ctx3);
ASSERT_EQ(0, finish_ctx3.wait());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment