1 #include "gtest/gtest.h"
3 #include "include/rados/librados.hpp"
5 #include "test/librados/test_cxx.h"
6 #include "test/librados/testcase_cxx.h"
8 using namespace librados
;
10 typedef RadosTestPP LibRadosStatPP
;
11 typedef RadosTestECPP LibRadosStatECPP
;
13 TEST_F(LibRadosStatPP
, StatPP
) {
15 memset(buf
, 0xcc, sizeof(buf
));
17 bl
.append(buf
, sizeof(buf
));
18 ASSERT_EQ(0, ioctx
.write("foo", bl
, sizeof(buf
), 0));
21 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
22 ASSERT_EQ(sizeof(buf
), size
);
23 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
26 TEST_F(LibRadosStatPP
, Stat2Mtime2PP
) {
28 memset(buf
, 0xcc, sizeof(buf
));
30 bl
.append(buf
, sizeof(buf
));
31 librados::ObjectWriteOperation op
;
33 ts
.tv_sec
= 1457129052;
34 ts
.tv_nsec
= 123456789;
37 ASSERT_EQ(0, ioctx
.operate("foo", &op
));
39 /* XXX time comparison asserts could spuriously fail */
43 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
44 ASSERT_EQ(sizeof(buf
), size
);
45 ASSERT_EQ(mtime
, ts
.tv_sec
);
48 ASSERT_EQ(0, ioctx
.stat2("foo", &size
, &ts2
));
49 ASSERT_EQ(sizeof(buf
), size
);
50 ASSERT_EQ(ts2
.tv_sec
, ts
.tv_sec
);
51 ASSERT_EQ(ts2
.tv_nsec
, ts
.tv_nsec
);
53 ASSERT_EQ(-ENOENT
, ioctx
.stat2("nonexistent", &size
, &ts2
));
56 TEST_F(LibRadosStatPP
, ClusterStatPP
) {
58 ASSERT_EQ(0, cluster
.cluster_stat(cstat
));
61 TEST_F(LibRadosStatPP
, PoolStatPP
) {
62 std::string n
= ioctx
.get_pool_name();
63 ASSERT_EQ(n
, pool_name
);
65 memset(buf
, 0xff, sizeof(buf
));
67 bl1
.append(buf
, sizeof(buf
));
68 ASSERT_EQ(0, ioctx
.write("foo", bl1
, sizeof(buf
), 0));
69 std::list
<std::string
> v
;
70 std::map
<std::string
,stats_map
> stats
;
71 ASSERT_EQ(0, cluster
.get_pool_stats(v
, stats
));
74 TEST_F(LibRadosStatECPP
, StatPP
) {
76 memset(buf
, 0xcc, sizeof(buf
));
78 bl
.append(buf
, sizeof(buf
));
79 ASSERT_EQ(0, ioctx
.write("foo", bl
, sizeof(buf
), 0));
82 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
83 ASSERT_EQ(sizeof(buf
), size
);
84 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
87 TEST_F(LibRadosStatECPP
, ClusterStatPP
) {
89 ASSERT_EQ(0, cluster
.cluster_stat(cstat
));
92 TEST_F(LibRadosStatECPP
, PoolStatPP
) {
93 std::string n
= ioctx
.get_pool_name();
94 ASSERT_EQ(n
, pool_name
);
96 memset(buf
, 0xff, sizeof(buf
));
98 bl1
.append(buf
, sizeof(buf
));
99 ASSERT_EQ(0, ioctx
.write("foo", bl1
, sizeof(buf
), 0));
100 std::list
<std::string
> v
;
101 std::map
<std::string
,stats_map
> stats
;
102 ASSERT_EQ(0, cluster
.get_pool_stats(v
, stats
));
105 TEST_F(LibRadosStatPP
, StatPPNS
) {
107 memset(buf
, 0xcc, sizeof(buf
));
109 bl
.append(buf
, sizeof(buf
));
110 ioctx
.set_namespace("");
111 ASSERT_EQ(0, ioctx
.write("foo", bl
, sizeof(buf
), 0));
112 ASSERT_EQ(0, ioctx
.write("foo2", bl
, sizeof(buf
), 0));
115 memset(buf2
, 0xbb, sizeof(buf2
));
117 bl2
.append(buf2
, sizeof(buf2
));
118 ioctx
.set_namespace("nspace");
119 ASSERT_EQ(0, ioctx
.write("foo", bl2
, sizeof(buf2
), 0));
123 ioctx
.set_namespace("");
124 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
125 ASSERT_EQ(sizeof(buf
), size
);
126 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
128 ioctx
.set_namespace("nspace");
129 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
130 ASSERT_EQ(sizeof(buf2
), size
);
131 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
132 ASSERT_EQ(-ENOENT
, ioctx
.stat("foo2", &size
, &mtime
));
135 TEST_F(LibRadosStatECPP
, StatPPNS
) {
137 memset(buf
, 0xcc, sizeof(buf
));
139 bl
.append(buf
, sizeof(buf
));
140 ioctx
.set_namespace("");
141 ASSERT_EQ(0, ioctx
.write("foo", bl
, sizeof(buf
), 0));
142 ASSERT_EQ(0, ioctx
.write("foo2", bl
, sizeof(buf
), 0));
145 memset(buf2
, 0xbb, sizeof(buf2
));
147 bl2
.append(buf2
, sizeof(buf2
));
148 ioctx
.set_namespace("nspace");
149 ASSERT_EQ(0, ioctx
.write("foo", bl2
, sizeof(buf2
), 0));
153 ioctx
.set_namespace("");
154 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
155 ASSERT_EQ(sizeof(buf
), size
);
156 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
158 ioctx
.set_namespace("nspace");
159 ASSERT_EQ(0, ioctx
.stat("foo", &size
, &mtime
));
160 ASSERT_EQ(sizeof(buf2
), size
);
161 ASSERT_EQ(-ENOENT
, ioctx
.stat("nonexistent", &size
, &mtime
));
162 ASSERT_EQ(-ENOENT
, ioctx
.stat("foo2", &size
, &mtime
));