1 #include "include/rados/librados.h"
2 #include "test/librados/test.h"
3 #include "test/librados/TestCase.h"
5 #include "common/ceph_time.h"
9 #include "gtest/gtest.h"
11 typedef RadosTest LibRadosStat
;
12 typedef RadosTestEC LibRadosStatEC
;
14 TEST_F(LibRadosStat
, Stat
) {
16 memset(buf
, 0xcc, sizeof(buf
));
17 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
20 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
21 ASSERT_EQ(sizeof(buf
), size
);
22 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
25 TEST_F(LibRadosStat
, StatNS
) {
27 memset(buf
, 0xcc, sizeof(buf
));
28 rados_ioctx_set_namespace(ioctx
, "");
29 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
30 ASSERT_EQ(0, rados_write(ioctx
, "foo2", buf
, sizeof(buf
), 0));
33 memset(buf2
, 0xcc, sizeof(buf2
));
34 rados_ioctx_set_namespace(ioctx
, "nspace");
35 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf2
, sizeof(buf2
), 0));
39 rados_ioctx_set_namespace(ioctx
, "");
40 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
41 ASSERT_EQ(sizeof(buf
), size
);
42 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
44 rados_ioctx_set_namespace(ioctx
, "nspace");
45 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
46 ASSERT_EQ(sizeof(buf2
), size
);
47 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
48 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "foo2", &size
, &mtime
));
51 TEST_F(LibRadosStat
, ClusterStat
) {
52 struct rados_cluster_stat_t result
;
53 ASSERT_EQ(0, rados_cluster_stat(cluster
, &result
));
56 TEST_F(LibRadosStat
, PoolStat
) {
58 char actual_pool_name
[80];
59 unsigned l
= rados_ioctx_get_pool_name(ioctx
, actual_pool_name
, sizeof(actual_pool_name
));
60 ASSERT_EQ(strlen(actual_pool_name
), l
);
61 ASSERT_EQ(0, strcmp(actual_pool_name
, pool_name
.c_str()));
62 memset(buf
, 0xff, sizeof(buf
));
63 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
64 struct rados_pool_stat_t stats
;
65 memset(&stats
, 0, sizeof(stats
));
66 ASSERT_EQ(0, rados_ioctx_pool_stat(ioctx
, &stats
));
69 TEST_F(LibRadosStatEC
, Stat
) {
71 memset(buf
, 0xcc, sizeof(buf
));
72 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
75 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
76 ASSERT_EQ(sizeof(buf
), size
);
77 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
80 TEST_F(LibRadosStatEC
, StatNS
) {
82 memset(buf
, 0xcc, sizeof(buf
));
83 rados_ioctx_set_namespace(ioctx
, "");
84 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
85 ASSERT_EQ(0, rados_write(ioctx
, "foo2", buf
, sizeof(buf
), 0));
88 memset(buf2
, 0xcc, sizeof(buf2
));
89 rados_ioctx_set_namespace(ioctx
, "nspace");
90 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf2
, sizeof(buf2
), 0));
94 rados_ioctx_set_namespace(ioctx
, "");
95 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
96 ASSERT_EQ(sizeof(buf
), size
);
97 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
99 rados_ioctx_set_namespace(ioctx
, "nspace");
100 ASSERT_EQ(0, rados_stat(ioctx
, "foo", &size
, &mtime
));
101 ASSERT_EQ(sizeof(buf2
), size
);
102 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "nonexistent", &size
, &mtime
));
103 ASSERT_EQ(-ENOENT
, rados_stat(ioctx
, "foo2", &size
, &mtime
));
106 TEST_F(LibRadosStatEC
, ClusterStat
) {
107 struct rados_cluster_stat_t result
;
108 ASSERT_EQ(0, rados_cluster_stat(cluster
, &result
));
111 TEST_F(LibRadosStatEC
, PoolStat
) {
113 char actual_pool_name
[80];
114 unsigned l
= rados_ioctx_get_pool_name(ioctx
, actual_pool_name
, sizeof(actual_pool_name
));
115 ASSERT_EQ(strlen(actual_pool_name
), l
);
116 ASSERT_EQ(0, strcmp(actual_pool_name
, pool_name
.c_str()));
117 memset(buf
, 0xff, sizeof(buf
));
118 ASSERT_EQ(0, rados_write(ioctx
, "foo", buf
, sizeof(buf
), 0));
119 struct rados_pool_stat_t stats
;
120 memset(&stats
, 0, sizeof(stats
));
121 ASSERT_EQ(0, rados_ioctx_pool_stat(ioctx
, &stats
));