diff options
author | David Zafman <david.zafman@inktank.com> | 2013-03-01 18:27:03 -0800 |
---|---|---|
committer | David Zafman <david.zafman@inktank.com> | 2013-03-04 23:16:50 -0800 |
commit | 7cd1cb2f9e872e854b20e4b993cf1f9db2982ef6 (patch) | |
tree | 0e0e0c1a39726c585e070f62a52e641503e19c46 | |
parent | 818f3d298e2d070451c49b67d2c0150f0ca35960 (diff) | |
download | ceph-7cd1cb2f9e872e854b20e4b993cf1f9db2982ef6.tar.gz |
Add list_snaps() calls to snapshots test cases
Signed-off-by: David Zafman <david.zafman@inktank.com>
-rw-r--r-- | src/test/librados/snapshots.cc | 102 |
1 files changed, 100 insertions, 2 deletions
diff --git a/src/test/librados/snapshots.cc b/src/test/librados/snapshots.cc index 512ad3a123d..1aec45456ba 100644 --- a/src/test/librados/snapshots.cc +++ b/src/test/librados/snapshots.cc @@ -1,4 +1,4 @@ -#include "include/rados/librados.h" +#include "include/rados/librados.hpp" #include "test/librados/test.h" #include <algorithm> @@ -330,6 +330,16 @@ TEST(LibRadosSnapshots, SelfManagedSnapRollbackPP) { ASSERT_EQ((int)sizeof(buf), ioctx.write("foo", bl1, sizeof(buf), bufsize)); ASSERT_EQ((int)sizeof(buf), ioctx.write("foo", bl1, sizeof(buf), bufsize*2)); + snap_set_t ss; + + snap_t head = clone_info_t::HEAD; + ASSERT_EQ(0, ioctx.list_snaps("foo", &ss)); + ASSERT_EQ(1u, ss.clones.size()); + ASSERT_EQ(head, ss.clones[0].cloneid); + ASSERT_EQ(1u, ss.clones[0].snaps.size()); //this could go away in the future + ASSERT_EQ(0u, ss.clones[0].overlap.size()); + ASSERT_EQ(384u, ss.clones[0].size); + my_snaps.push_back(-2); ASSERT_EQ(0, ioctx.selfmanaged_snap_create(&my_snaps.back())); ::std::reverse(my_snaps.begin(), my_snaps.end()); @@ -344,6 +354,23 @@ TEST(LibRadosSnapshots, SelfManagedSnapRollbackPP) { //Add another after ASSERT_EQ((int)sizeof(buf2), ioctx.write("foo", bl2, sizeof(buf2), bufsize*3)); + ASSERT_EQ(0, ioctx.list_snaps("foo", &ss)); + ASSERT_EQ(2u, ss.clones.size()); + ASSERT_EQ(3u, ss.clones[0].cloneid); + ASSERT_EQ(2u, ss.clones[0].snaps.size()); + ASSERT_EQ(2u, ss.clones[0].snaps[0]); //this could go away in the future + ASSERT_EQ(3u, ss.clones[0].snaps[1]); + ASSERT_EQ(2u, ss.clones[0].overlap.size()); + ASSERT_EQ(0u, ss.clones[0].overlap[0].first); + ASSERT_EQ(128u, ss.clones[0].overlap[0].second); + ASSERT_EQ(256u, ss.clones[0].overlap[1].first); + ASSERT_EQ(128u, ss.clones[0].overlap[1].second); + ASSERT_EQ(384u, ss.clones[0].size); + ASSERT_EQ(head, ss.clones[1].cloneid); + ASSERT_EQ(0u, ss.clones[1].snaps.size()); + ASSERT_EQ(0u, ss.clones[1].overlap.size()); + ASSERT_EQ(512u, ss.clones[1].size); + ioctx.selfmanaged_snap_rollback("foo", my_snaps[1]); bufferlist bl3; @@ -363,7 +390,7 @@ TEST(LibRadosSnapshots, SelfManagedSnapRollbackPP) { ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster)); } -TEST(LibRadosSnapshots, SelfManagedSnapOverlap) { +TEST(LibRadosSnapshots, SelfManagedSnapOverlapPP) { std::vector<uint64_t> my_snaps; Rados cluster; IoCtx ioctx; @@ -386,6 +413,16 @@ TEST(LibRadosSnapshots, SelfManagedSnapOverlap) { ASSERT_EQ((int)sizeof(buf), ioctx.write("foo", bl1, sizeof(buf), bufsize*6)); ASSERT_EQ((int)sizeof(buf), ioctx.write("foo", bl1, sizeof(buf), bufsize*8)); + snap_set_t ss; + snap_t head = clone_info_t::HEAD; + ASSERT_EQ(0, ioctx.list_snaps("foo", &ss)); + ASSERT_EQ(1u, ss.clones.size()); + ASSERT_EQ(head, ss.clones[0].cloneid); + ASSERT_EQ(1u, ss.clones[0].snaps.size()); + ASSERT_EQ(2u, ss.clones[0].snaps[0]); //this could go away in the future + ASSERT_EQ(0u, ss.clones[0].overlap.size()); + ASSERT_EQ(1152u, ss.clones[0].size); + my_snaps.push_back(-2); ASSERT_EQ(0, ioctx.selfmanaged_snap_create(&my_snaps.back())); ::std::reverse(my_snaps.begin(), my_snaps.end()); @@ -401,6 +438,29 @@ TEST(LibRadosSnapshots, SelfManagedSnapOverlap) { ASSERT_EQ((int)sizeof(buf2), ioctx.write("foo", bl2, sizeof(buf2), bufsize*7)); ASSERT_EQ((int)sizeof(buf2), ioctx.write("foo", bl2, sizeof(buf2), bufsize*9)); + ASSERT_EQ(0, ioctx.list_snaps("foo", &ss)); + ASSERT_EQ(2u, ss.clones.size()); + ASSERT_EQ(3u, ss.clones[0].cloneid); + ASSERT_EQ(2u, ss.clones[0].snaps.size()); + ASSERT_EQ(2u, ss.clones[0].snaps[0]); //this could go away in the future + ASSERT_EQ(3u, ss.clones[0].snaps[1]); + ASSERT_EQ(5u, ss.clones[0].overlap.size()); + ASSERT_EQ(0u, ss.clones[0].overlap[0].first); + ASSERT_EQ(128u, ss.clones[0].overlap[0].second); + ASSERT_EQ(256u, ss.clones[0].overlap[1].first); + ASSERT_EQ(128u, ss.clones[0].overlap[1].second); + ASSERT_EQ(512u, ss.clones[0].overlap[2].first); + ASSERT_EQ(128u, ss.clones[0].overlap[2].second); + ASSERT_EQ(768u, ss.clones[0].overlap[3].first); + ASSERT_EQ(128u, ss.clones[0].overlap[3].second); + ASSERT_EQ(1024u, ss.clones[0].overlap[4].first); + ASSERT_EQ(128u, ss.clones[0].overlap[4].second); + ASSERT_EQ(1152u, ss.clones[0].size); + ASSERT_EQ(head, ss.clones[1].cloneid); + ASSERT_EQ(0u, ss.clones[1].snaps.size()); + ASSERT_EQ(0u, ss.clones[1].overlap.size()); + ASSERT_EQ(1280u, ss.clones[1].size); + my_snaps.push_back(-2); ASSERT_EQ(0, ioctx.selfmanaged_snap_create(&my_snaps.back())); ::std::reverse(my_snaps.begin(), my_snaps.end()); @@ -416,6 +476,44 @@ TEST(LibRadosSnapshots, SelfManagedSnapOverlap) { ASSERT_EQ((int)sizeof(buf3), ioctx.write("foo", bl2, sizeof(buf3), bufsize*5)); ASSERT_EQ((int)sizeof(buf3), ioctx.write("foo", bl2, sizeof(buf3), bufsize*8)); + ASSERT_EQ(0, ioctx.list_snaps("foo", &ss)); + ASSERT_EQ(3u, ss.clones.size()); + ASSERT_EQ(3u, ss.clones[0].cloneid); + ASSERT_EQ(2u, ss.clones[0].snaps.size()); + ASSERT_EQ(2u, ss.clones[0].snaps[0]); //this could go away in the future + ASSERT_EQ(3u, ss.clones[0].snaps[1]); + ASSERT_EQ(5u, ss.clones[0].overlap.size()); + ASSERT_EQ(0u, ss.clones[0].overlap[0].first); + ASSERT_EQ(128u, ss.clones[0].overlap[0].second); + ASSERT_EQ(256u, ss.clones[0].overlap[1].first); + ASSERT_EQ(128u, ss.clones[0].overlap[1].second); + ASSERT_EQ(512u, ss.clones[0].overlap[2].first); + ASSERT_EQ(128u, ss.clones[0].overlap[2].second); + ASSERT_EQ(768u, ss.clones[0].overlap[3].first); + ASSERT_EQ(128u, ss.clones[0].overlap[3].second); + ASSERT_EQ(1024u, ss.clones[0].overlap[4].first); + ASSERT_EQ(128u, ss.clones[0].overlap[4].second); + ASSERT_EQ(1152u, ss.clones[0].size); + + ASSERT_EQ(4u, ss.clones[1].cloneid); + ASSERT_EQ(1u, ss.clones[1].snaps.size()); + ASSERT_EQ(4u, ss.clones[1].snaps[0]); + ASSERT_EQ(4u, ss.clones[1].overlap.size()); + ASSERT_EQ(0u, ss.clones[1].overlap[0].first); + ASSERT_EQ(128u, ss.clones[1].overlap[0].second); + ASSERT_EQ(256u, ss.clones[1].overlap[1].first); + ASSERT_EQ(256u, ss.clones[1].overlap[1].second); + ASSERT_EQ(768u, ss.clones[1].overlap[2].first); + ASSERT_EQ(256u, ss.clones[1].overlap[2].second); + ASSERT_EQ(1152u, ss.clones[1].overlap[3].first); + ASSERT_EQ(128u, ss.clones[1].overlap[3].second); + ASSERT_EQ(1280u, ss.clones[1].size); + + ASSERT_EQ(head, ss.clones[2].cloneid); + ASSERT_EQ(0u, ss.clones[2].snaps.size()); + ASSERT_EQ(0u, ss.clones[2].overlap.size()); + ASSERT_EQ(1280u, ss.clones[2].size); + ASSERT_EQ(0, ioctx.selfmanaged_snap_remove(my_snaps.back())); my_snaps.pop_back(); ASSERT_EQ(0, ioctx.selfmanaged_snap_remove(my_snaps.back())); |