From: Ilya Dryomov Date: Tue, 11 Jun 2024 17:02:23 +0000 (+0200) Subject: test/librbd: cover empty and invalid snap id ranges for diff-iterate X-Git-Tag: testing/wip-jcollin-testing-20240718.061041-squid~24^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=43ff3f8574053976360f87bc0cc4b94bf72e0dad;p=ceph-ci.git test/librbd: cover empty and invalid snap id ranges for diff-iterate Signed-off-by: Ilya Dryomov (cherry picked from commit 4f8aca21960088e80c4917ac2bb8df49ea16c28a) --- diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index d4f0396ec3d..fe47b7985d6 100644 --- a/src/test/librbd/test_librbd.cc +++ b/src/test/librbd/test_librbd.cc @@ -7545,6 +7545,10 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministic) vector_iterate_cb, &extents)); ASSERT_EQ(0u, extents.size()); + ASSERT_EQ(-ENOENT, rbd_diff_iterate2(image, "snap1", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_EQ(0, rbd_snap_create(image, "snap1")); std::string buf(256, '1'); @@ -7621,31 +7625,61 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministic) ASSERT_EQ(diff_extent(1 << order, 256, true, object_size), extents[0]); extents.clear(); + // 8. snap3 -> snap3 + ASSERT_EQ(0, rbd_diff_iterate2(image, "snap3", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + ASSERT_PASSED(this->validate_object_map, image); ASSERT_EQ(0, rbd_snap_set(image, "snap2")); - // 8. beginning of time -> snap2 + // 9. beginning of time -> snap2 ASSERT_EQ(0, rbd_diff_iterate2(image, NULL, 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(1u, extents.size()); ASSERT_EQ(diff_extent(0, 256, true, object_size), extents[0]); extents.clear(); - // 9. snap1 -> snap2 + // 10. snap1 -> snap2 ASSERT_EQ(0, rbd_diff_iterate2(image, "snap1", 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(1u, extents.size()); ASSERT_EQ(diff_extent(0, 256, true, object_size), extents[0]); extents.clear(); + // 11. snap2 -> snap2 + ASSERT_EQ(0, rbd_diff_iterate2(image, "snap2", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + + // 12. snap3 -> snap2 + ASSERT_EQ(-EINVAL, rbd_diff_iterate2(image, "snap3", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_PASSED(this->validate_object_map, image); ASSERT_EQ(0, rbd_snap_set(image, "snap1")); - // 10. beginning of time -> snap1 + // 13. beginning of time -> snap1 ASSERT_EQ(0, rbd_diff_iterate2(image, NULL, 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(0u, extents.size()); + // 14. snap1 -> snap1 + ASSERT_EQ(0, rbd_diff_iterate2(image, "snap1", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + + // 15. snap2 -> snap1 + ASSERT_EQ(-EINVAL, rbd_diff_iterate2(image, "snap2", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + + // 16. snap3 -> snap1 + ASSERT_EQ(-EINVAL, rbd_diff_iterate2(image, "snap3", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_PASSED(this->validate_object_map, image); ASSERT_EQ(0, rbd_close(image)); @@ -7678,6 +7712,10 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministicPP) vector_iterate_cb, &extents)); ASSERT_EQ(0u, extents.size()); + ASSERT_EQ(-ENOENT, image.diff_iterate2("snap1", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_EQ(0, image.snap_create("snap1")); ceph::bufferlist bl; @@ -7755,31 +7793,61 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministicPP) ASSERT_EQ(diff_extent(1 << order, 256, true, object_size), extents[0]); extents.clear(); + // 8. snap3 -> snap3 + ASSERT_EQ(0, image.diff_iterate2("snap3", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + ASSERT_PASSED(this->validate_object_map, image); ASSERT_EQ(0, image.snap_set("snap2")); - // 8. beginning of time -> snap2 + // 9. beginning of time -> snap2 ASSERT_EQ(0, image.diff_iterate2(NULL, 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(1u, extents.size()); ASSERT_EQ(diff_extent(0, 256, true, object_size), extents[0]); extents.clear(); - // 9. snap1 -> snap2 + // 10. snap1 -> snap2 ASSERT_EQ(0, image.diff_iterate2("snap1", 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(1u, extents.size()); ASSERT_EQ(diff_extent(0, 256, true, object_size), extents[0]); extents.clear(); + // 11. snap2 -> snap2 + ASSERT_EQ(0, image.diff_iterate2("snap2", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + + // 12. snap3 -> snap2 + ASSERT_EQ(-EINVAL, image.diff_iterate2("snap3", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_PASSED(this->validate_object_map, image); ASSERT_EQ(0, image.snap_set("snap1")); - // 10. beginning of time -> snap1 + // 13. beginning of time -> snap1 ASSERT_EQ(0, image.diff_iterate2(NULL, 0, size, true, this->whole_object, vector_iterate_cb, &extents)); ASSERT_EQ(0u, extents.size()); + // 14. snap1 -> snap1 + ASSERT_EQ(0, image.diff_iterate2("snap1", 0, size, true, this->whole_object, + vector_iterate_cb, &extents)); + ASSERT_EQ(0u, extents.size()); + + // 15. snap2 -> snap1 + ASSERT_EQ(-EINVAL, image.diff_iterate2("snap2", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + + // 16. snap3 -> snap1 + ASSERT_EQ(-EINVAL, image.diff_iterate2("snap3", 0, size, true, + this->whole_object, vector_iterate_cb, + &extents)); + ASSERT_PASSED(this->validate_object_map, image); }