namespace librbd {
namespace object_map {
-class TestMockObjectMapDiffRequest : public TestMockFixture {
+class TestMockObjectMapDiffRequest : public TestMockFixture,
+ public ::testing::WithParamInterface<bool> {
public:
typedef DiffRequest<MockTestImageCtx> MockDiffRequest;
}
bool is_diff_iterate() const {
- return true;
+ return GetParam();
}
void expect_get_flags(MockTestImageCtx& mock_image_ctx, uint64_t snap_id,
BitVector<2> m_object_diff_state;
};
-TEST_F(TestMockObjectMapDiffRequest, InvalidStartSnap) {
+TEST_P(TestMockObjectMapDiffRequest, InvalidStartSnap) {
MockTestImageCtx mock_image_ctx(*m_image_ctx);
InSequence seq;
ASSERT_EQ(-EINVAL, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, StartEndSnapEqual) {
+TEST_P(TestMockObjectMapDiffRequest, StartEndSnapEqual) {
MockTestImageCtx mock_image_ctx(*m_image_ctx);
InSequence seq;
ASSERT_EQ(0U, m_object_diff_state.size());
}
-TEST_F(TestMockObjectMapDiffRequest, FastDiffDisabled) {
+TEST_P(TestMockObjectMapDiffRequest, FastDiffDisabled) {
// negative test -- object-map implicitly enables fast-diff
REQUIRE(!is_feature_enabled(RBD_FEATURE_OBJECT_MAP));
ASSERT_EQ(-EINVAL, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, FastDiffInvalid) {
+TEST_P(TestMockObjectMapDiffRequest, FastDiffInvalid) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
MockTestImageCtx mock_image_ctx(*m_image_ctx);
ASSERT_EQ(-EINVAL, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, FullDelta) {
+TEST_P(TestMockObjectMapDiffRequest, FullDelta) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(expected_diff_state, m_object_diff_state);
}
-TEST_F(TestMockObjectMapDiffRequest, IntermediateDelta) {
+TEST_P(TestMockObjectMapDiffRequest, IntermediateDelta) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(expected_diff_state, m_object_diff_state);
}
-TEST_F(TestMockObjectMapDiffRequest, EndDelta) {
+TEST_P(TestMockObjectMapDiffRequest, EndDelta) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(expected_diff_state, m_object_diff_state);
}
-TEST_F(TestMockObjectMapDiffRequest, StartSnapDNE) {
+TEST_P(TestMockObjectMapDiffRequest, StartSnapDNE) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(-ENOENT, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, EndSnapDNE) {
+TEST_P(TestMockObjectMapDiffRequest, EndSnapDNE) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(-ENOENT, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, IntermediateSnapDNE) {
+TEST_P(TestMockObjectMapDiffRequest, IntermediateSnapDNE) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(expected_diff_state, m_object_diff_state);
}
-TEST_F(TestMockObjectMapDiffRequest, LoadObjectMapDNE) {
+TEST_P(TestMockObjectMapDiffRequest, LoadObjectMapDNE) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(-ENOENT, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, LoadIntermediateObjectMapDNE) {
+TEST_P(TestMockObjectMapDiffRequest, LoadIntermediateObjectMapDNE) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(expected_diff_state, m_object_diff_state);
}
-TEST_F(TestMockObjectMapDiffRequest, LoadObjectMapError) {
+TEST_P(TestMockObjectMapDiffRequest, LoadObjectMapError) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(-EPERM, ctx.wait());
}
-TEST_F(TestMockObjectMapDiffRequest, ObjectMapTooSmall) {
+TEST_P(TestMockObjectMapDiffRequest, ObjectMapTooSmall) {
REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
uint32_t object_count = 5;
ASSERT_EQ(-EINVAL, ctx.wait());
}
+INSTANTIATE_TEST_SUITE_P(MockObjectMapDiffRequestTests,
+ TestMockObjectMapDiffRequest, ::testing::Bool());
+
} // namespace object_map
} // librbd