@@ -7545,6 +7545,10 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministic)
75457545 vector_iterate_cb, &extents));
75467546 ASSERT_EQ (0u , extents.size ());
75477547
7548+ ASSERT_EQ (-ENOENT, rbd_diff_iterate2 (image, " snap1" , 0 , size, true ,
7549+ this ->whole_object , vector_iterate_cb,
7550+ &extents));
7551+
75487552 ASSERT_EQ (0 , rbd_snap_create (image, " snap1" ));
75497553
75507554 std::string buf (256 , ' 1' );
@@ -7621,31 +7625,61 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministic)
76217625 ASSERT_EQ (diff_extent (1 << order, 256 , true , object_size), extents[0 ]);
76227626 extents.clear ();
76237627
7628+ // 8. snap3 -> snap3
7629+ ASSERT_EQ (0 , rbd_diff_iterate2 (image, " snap3" , 0 , size, true , this ->whole_object ,
7630+ vector_iterate_cb, &extents));
7631+ ASSERT_EQ (0u , extents.size ());
7632+
76247633 ASSERT_PASSED (this ->validate_object_map , image);
76257634 ASSERT_EQ (0 , rbd_snap_set (image, " snap2" ));
76267635
7627- // 8 . beginning of time -> snap2
7636+ // 9 . beginning of time -> snap2
76287637 ASSERT_EQ (0 , rbd_diff_iterate2 (image, NULL , 0 , size, true , this ->whole_object ,
76297638 vector_iterate_cb, &extents));
76307639 ASSERT_EQ (1u , extents.size ());
76317640 ASSERT_EQ (diff_extent (0 , 256 , true , object_size), extents[0 ]);
76327641 extents.clear ();
76337642
7634- // 9 . snap1 -> snap2
7643+ // 10 . snap1 -> snap2
76357644 ASSERT_EQ (0 , rbd_diff_iterate2 (image, " snap1" , 0 , size, true , this ->whole_object ,
76367645 vector_iterate_cb, &extents));
76377646 ASSERT_EQ (1u , extents.size ());
76387647 ASSERT_EQ (diff_extent (0 , 256 , true , object_size), extents[0 ]);
76397648 extents.clear ();
76407649
7650+ // 11. snap2 -> snap2
7651+ ASSERT_EQ (0 , rbd_diff_iterate2 (image, " snap2" , 0 , size, true , this ->whole_object ,
7652+ vector_iterate_cb, &extents));
7653+ ASSERT_EQ (0u , extents.size ());
7654+
7655+ // 12. snap3 -> snap2
7656+ ASSERT_EQ (-EINVAL, rbd_diff_iterate2 (image, " snap3" , 0 , size, true ,
7657+ this ->whole_object , vector_iterate_cb,
7658+ &extents));
7659+
76417660 ASSERT_PASSED (this ->validate_object_map , image);
76427661 ASSERT_EQ (0 , rbd_snap_set (image, " snap1" ));
76437662
7644- // 10 . beginning of time -> snap1
7663+ // 13 . beginning of time -> snap1
76457664 ASSERT_EQ (0 , rbd_diff_iterate2 (image, NULL , 0 , size, true , this ->whole_object ,
76467665 vector_iterate_cb, &extents));
76477666 ASSERT_EQ (0u , extents.size ());
76487667
7668+ // 14. snap1 -> snap1
7669+ ASSERT_EQ (0 , rbd_diff_iterate2 (image, " snap1" , 0 , size, true , this ->whole_object ,
7670+ vector_iterate_cb, &extents));
7671+ ASSERT_EQ (0u , extents.size ());
7672+
7673+ // 15. snap2 -> snap1
7674+ ASSERT_EQ (-EINVAL, rbd_diff_iterate2 (image, " snap2" , 0 , size, true ,
7675+ this ->whole_object , vector_iterate_cb,
7676+ &extents));
7677+
7678+ // 16. snap3 -> snap1
7679+ ASSERT_EQ (-EINVAL, rbd_diff_iterate2 (image, " snap3" , 0 , size, true ,
7680+ this ->whole_object , vector_iterate_cb,
7681+ &extents));
7682+
76497683 ASSERT_PASSED (this ->validate_object_map , image);
76507684
76517685 ASSERT_EQ (0 , rbd_close (image));
@@ -7678,6 +7712,10 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministicPP)
76787712 vector_iterate_cb, &extents));
76797713 ASSERT_EQ (0u , extents.size ());
76807714
7715+ ASSERT_EQ (-ENOENT, image.diff_iterate2 (" snap1" , 0 , size, true ,
7716+ this ->whole_object , vector_iterate_cb,
7717+ &extents));
7718+
76817719 ASSERT_EQ (0 , image.snap_create (" snap1" ));
76827720
76837721 ceph::bufferlist bl;
@@ -7755,31 +7793,61 @@ TYPED_TEST(DiffIterateTest, DiffIterateDeterministicPP)
77557793 ASSERT_EQ (diff_extent (1 << order, 256 , true , object_size), extents[0 ]);
77567794 extents.clear ();
77577795
7796+ // 8. snap3 -> snap3
7797+ ASSERT_EQ (0 , image.diff_iterate2 (" snap3" , 0 , size, true , this ->whole_object ,
7798+ vector_iterate_cb, &extents));
7799+ ASSERT_EQ (0u , extents.size ());
7800+
77587801 ASSERT_PASSED (this ->validate_object_map , image);
77597802 ASSERT_EQ (0 , image.snap_set (" snap2" ));
77607803
7761- // 8 . beginning of time -> snap2
7804+ // 9 . beginning of time -> snap2
77627805 ASSERT_EQ (0 , image.diff_iterate2 (NULL , 0 , size, true , this ->whole_object ,
77637806 vector_iterate_cb, &extents));
77647807 ASSERT_EQ (1u , extents.size ());
77657808 ASSERT_EQ (diff_extent (0 , 256 , true , object_size), extents[0 ]);
77667809 extents.clear ();
77677810
7768- // 9 . snap1 -> snap2
7811+ // 10 . snap1 -> snap2
77697812 ASSERT_EQ (0 , image.diff_iterate2 (" snap1" , 0 , size, true , this ->whole_object ,
77707813 vector_iterate_cb, &extents));
77717814 ASSERT_EQ (1u , extents.size ());
77727815 ASSERT_EQ (diff_extent (0 , 256 , true , object_size), extents[0 ]);
77737816 extents.clear ();
77747817
7818+ // 11. snap2 -> snap2
7819+ ASSERT_EQ (0 , image.diff_iterate2 (" snap2" , 0 , size, true , this ->whole_object ,
7820+ vector_iterate_cb, &extents));
7821+ ASSERT_EQ (0u , extents.size ());
7822+
7823+ // 12. snap3 -> snap2
7824+ ASSERT_EQ (-EINVAL, image.diff_iterate2 (" snap3" , 0 , size, true ,
7825+ this ->whole_object , vector_iterate_cb,
7826+ &extents));
7827+
77757828 ASSERT_PASSED (this ->validate_object_map , image);
77767829 ASSERT_EQ (0 , image.snap_set (" snap1" ));
77777830
7778- // 10 . beginning of time -> snap1
7831+ // 13 . beginning of time -> snap1
77797832 ASSERT_EQ (0 , image.diff_iterate2 (NULL , 0 , size, true , this ->whole_object ,
77807833 vector_iterate_cb, &extents));
77817834 ASSERT_EQ (0u , extents.size ());
77827835
7836+ // 14. snap1 -> snap1
7837+ ASSERT_EQ (0 , image.diff_iterate2 (" snap1" , 0 , size, true , this ->whole_object ,
7838+ vector_iterate_cb, &extents));
7839+ ASSERT_EQ (0u , extents.size ());
7840+
7841+ // 15. snap2 -> snap1
7842+ ASSERT_EQ (-EINVAL, image.diff_iterate2 (" snap2" , 0 , size, true ,
7843+ this ->whole_object , vector_iterate_cb,
7844+ &extents));
7845+
7846+ // 16. snap3 -> snap1
7847+ ASSERT_EQ (-EINVAL, image.diff_iterate2 (" snap3" , 0 , size, true ,
7848+ this ->whole_object , vector_iterate_cb,
7849+ &extents));
7850+
77837851 ASSERT_PASSED (this ->validate_object_map , image);
77847852}
77857853
0 commit comments