#include <errno.h>
#include "gtest/gtest.h"
-///* snapshots */
-//void rados_ioctx_snap_set_read(rados_ioctx_t io, rados_snap_t snap);
-//int rados_ioctx_selfmanaged_snap_create(rados_ioctx_t io, uint64_t *snapid);
-//int rados_ioctx_selfmanaged_snap_remove(rados_ioctx_t io, uint64_t snapid);
-//int rados_ioctx_selfmanaged_snap_rollback(rados_ioctx_t io, const char *oid, uint64_t snapid);
-//int rados_ioctx_selfmanaged_snap_set_write_ctx(rados_ioctx_t io, rados_snap_t seq, rados_snap_t *snaps, int num_snaps);
-
TEST(LibRadosSnapshots, SnapList) {
char buf[128];
rados_t cluster;
ASSERT_EQ(0, rados_ioctx_snap_create(ioctx, "snapfoo"));
rados_snap_t rid;
ASSERT_EQ(0, rados_ioctx_snap_lookup(ioctx, "snapfoo", &rid));
- ASSERT_EQ(0, rados_ioctx_snap_lookup(ioctx, "snapfoo", &rid));
+ ASSERT_EQ(-ENOENT, rados_ioctx_snap_lookup(ioctx, "snapbar", &rid));
char name[128];
memset(name, 0, sizeof(name));
ASSERT_EQ(0, rados_ioctx_snap_get_name(ioctx, rid, name, sizeof(name)));
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
}
+TEST(LibRadosSnapshots, SelfManagedSnapTest) {
+ char buf[128];
+ rados_t cluster;
+ rados_ioctx_t ioctx;
+ std::string pool_name = get_temp_pool_name();
+ ASSERT_EQ("", create_one_pool(pool_name, &cluster));
+ rados_ioctx_create(cluster, pool_name.c_str(), &ioctx);
+ memset(buf, 0xcc, sizeof(buf));
+ ASSERT_EQ((int)sizeof(buf), rados_write(ioctx, "foo", buf, sizeof(buf), 0));
+ uint64_t snapid;
+ ASSERT_EQ(0, rados_ioctx_selfmanaged_snap_create(ioctx, &snapid));
+ char buf2[sizeof(buf)];
+ memset(buf2, 0xdd, sizeof(buf2));
+ ASSERT_EQ(0, rados_write_full(ioctx, "foo", buf2, sizeof(buf2), 0));
+ //rados_ioctx_snap_set_read(ioctx, snapid);
+ //ASSERT_EQ(0, rados_ioctx_selfmanaged_snap_rollback(ioctx, "foo", snapid));
+// char buf3[sizeof(buf)];
+// memset(buf3, 0, sizeof(buf3));
+// ASSERT_EQ((int)sizeof(buf3), rados_read(ioctx, "foo", buf3, sizeof(buf3), 0));
+// ASSERT_EQ(0, memcmp(buf, buf3, sizeof(buf3)));
+ ASSERT_EQ(0, rados_ioctx_selfmanaged_snap_remove(ioctx, snapid));
+ rados_ioctx_destroy(ioctx);
+ ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
+}
+// int rados_ioctx_selfmanaged_snap_set_write_ctx(rados_ioctx_t io, rados_snap_t seq, rados_snap_t *snaps, int num_snaps);