mock_image_ctx.journal = &mock_journal;
}
- ASSERT_EQ(0, update_features(ictx,
- RBD_FEATURE_EXCLUSIVE_LOCK |
- RBD_FEATURE_OBJECT_MAP |
- RBD_FEATURE_FAST_DIFF |
- RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_FAST_DIFF)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_FAST_DIFF , false));
+ }
+ if (ictx->test_features(RBD_FEATURE_OBJECT_MAP)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_OBJECT_MAP , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_EXCLUSIVE_LOCK , false));
+ }
+
expect_op_work_queue(mock_image_ctx);
expect_test_features(mock_image_ctx);
MockExclusiveLock mock_exclusive_lock;
mock_image_ctx.exclusive_lock = &mock_exclusive_lock;
- ASSERT_EQ(0, update_features(ictx,
- RBD_FEATURE_EXCLUSIVE_LOCK |
- RBD_FEATURE_OBJECT_MAP |
- RBD_FEATURE_FAST_DIFF |
- RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_FAST_DIFF)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_FAST_DIFF , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_OBJECT_MAP)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_OBJECT_MAP , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_EXCLUSIVE_LOCK , false));
+ }
expect_op_work_queue(mock_image_ctx);
expect_test_features(mock_image_ctx);
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
- ASSERT_EQ(0, update_features(ictx,
- RBD_FEATURE_OBJECT_MAP |
- RBD_FEATURE_FAST_DIFF, false));
+ if (ictx->test_features(RBD_FEATURE_FAST_DIFF)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_FAST_DIFF , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_OBJECT_MAP)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_OBJECT_MAP , false));
+ }
MockRefreshImageCtx mock_image_ctx(*ictx);
MockRefreshParentRequest mock_refresh_parent_request;
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
- ASSERT_EQ(0, update_features(ictx,
- RBD_FEATURE_OBJECT_MAP |
- RBD_FEATURE_FAST_DIFF, false));
+ if (ictx->test_features(RBD_FEATURE_FAST_DIFF)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_FAST_DIFF , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_OBJECT_MAP)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_OBJECT_MAP , false));
+ }
MockRefreshImageCtx mock_image_ctx(*ictx);
MockRefreshParentRequest mock_refresh_parent_request;
MockJournal *mock_journal = new MockJournal();
mock_image_ctx.journal = mock_journal;
- ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING , false));
+ }
expect_op_work_queue(mock_image_ctx);
expect_test_features(mock_image_ctx);
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
- ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING , false));
+ }
MockRefreshImageCtx mock_image_ctx(*ictx);
MockRefreshParentRequest mock_refresh_parent_request;
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
- ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING , false));
+ }
MockRefreshImageCtx mock_image_ctx(*ictx);
MockRefreshParentRequest mock_refresh_parent_request;
mock_image_ctx.journal = &mock_journal;
}
- ASSERT_EQ(0, update_features(ictx,
- RBD_FEATURE_OBJECT_MAP |
- RBD_FEATURE_FAST_DIFF, false));
+ if (ictx->test_features(RBD_FEATURE_FAST_DIFF)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_FAST_DIFF , false));
+ }
+
+ if (ictx->test_features(RBD_FEATURE_OBJECT_MAP)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_OBJECT_MAP , false));
+ }
expect_op_work_queue(mock_image_ctx);
expect_test_features(mock_image_ctx);
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));
- ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING, false));
+ if (ictx->test_features(RBD_FEATURE_JOURNALING)) {
+ ASSERT_EQ(0, update_features(ictx, RBD_FEATURE_JOURNALING , false));
+ }
MockRefreshImageCtx mock_image_ctx(*ictx);
MockRefreshParentRequest mock_refresh_parent_request;
uint64_t init_features = 0;
init_features |= RBD_FEATURE_OBJECT_MAP;
init_features |= RBD_FEATURE_EXCLUSIVE_LOCK;
- uint64_t features = init_features | RBD_FEATURE_JOURNALING;
+ uint64_t features = RBD_FEATURE_JOURNALING;
check_mirroring_on_update_features(init_features, true, false, features, 0,
RBD_MIRROR_MODE_DISABLED, RBD_MIRROR_IMAGE_DISABLED);
}
uint64_t init_features = 0;
init_features |= RBD_FEATURE_OBJECT_MAP;
init_features |= RBD_FEATURE_EXCLUSIVE_LOCK;
- uint64_t features = init_features | RBD_FEATURE_JOURNALING;
+ uint64_t features = RBD_FEATURE_JOURNALING;
check_mirroring_on_update_features(init_features, true, false, features, 0,
RBD_MIRROR_MODE_IMAGE, RBD_MIRROR_IMAGE_DISABLED);
}
uint64_t init_features = 0;
init_features |= RBD_FEATURE_OBJECT_MAP;
init_features |= RBD_FEATURE_EXCLUSIVE_LOCK;
- uint64_t features = init_features | RBD_FEATURE_JOURNALING;
+ uint64_t features = RBD_FEATURE_JOURNALING;
check_mirroring_on_update_features(init_features, true, false, features, 0,
RBD_MIRROR_MODE_POOL, RBD_MIRROR_IMAGE_ENABLED);
}