summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zafman <david.zafman@inktank.com>2013-03-01 18:27:03 -0800
committerDavid Zafman <david.zafman@inktank.com>2013-03-04 23:16:50 -0800
commit7cd1cb2f9e872e854b20e4b993cf1f9db2982ef6 (patch)
tree0e0e0c1a39726c585e070f62a52e641503e19c46
parent818f3d298e2d070451c49b67d2c0150f0ca35960 (diff)
downloadceph-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.cc102
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()));