]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/librados/stat_cxx.cc
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / test / librados / stat_cxx.cc
1 #include "gtest/gtest.h"
2
3 #include "include/rados/librados.hpp"
4
5 #include "test/librados/test_cxx.h"
6 #include "test/librados/testcase_cxx.h"
7
8 using namespace librados;
9
10 typedef RadosTestPP LibRadosStatPP;
11 typedef RadosTestECPP LibRadosStatECPP;
12
13 TEST_F(LibRadosStatPP, StatPP) {
14 char buf[128];
15 memset(buf, 0xcc, sizeof(buf));
16 bufferlist bl;
17 bl.append(buf, sizeof(buf));
18 ASSERT_EQ(0, ioctx.write("foo", bl, sizeof(buf), 0));
19 uint64_t size;
20 time_t mtime;
21 ASSERT_EQ(0, ioctx.stat("foo", &size, &mtime));
22 ASSERT_EQ(sizeof(buf), size);
23 ASSERT_EQ(-ENOENT, ioctx.stat("nonexistent", &size, &mtime));
24 }
25
26 TEST_F(LibRadosStatPP, Stat2Mtime2PP) {
27 char buf[128];
28 memset(buf, 0xcc, sizeof(buf));
29 bufferlist bl;
30 bl.append(buf, sizeof(buf));
31 librados::ObjectWriteOperation op;
32 struct timespec ts;
33 ts.tv_sec = 1457129052;
34 ts.tv_nsec = 123456789;
35 op.mtime2(&ts);
36 op.write(0, bl);
37 ASSERT_EQ(0, ioctx.operate("foo", &op));
38
39 /* XXX time comparison asserts could spuriously fail */
40
41 uint64_t size;
42 time_t mtime;
43 ASSERT_EQ(0, ioctx.stat("foo", &size, &mtime));
44 ASSERT_EQ(sizeof(buf), size);
45 ASSERT_EQ(mtime, ts.tv_sec);
46
47 struct timespec ts2;
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);
52
53 ASSERT_EQ(-ENOENT, ioctx.stat2("nonexistent", &size, &ts2));
54 }
55
56 TEST_F(LibRadosStatPP, ClusterStatPP) {
57 cluster_stat_t cstat;
58 ASSERT_EQ(0, cluster.cluster_stat(cstat));
59 }
60
61 TEST_F(LibRadosStatPP, PoolStatPP) {
62 std::string n = ioctx.get_pool_name();
63 ASSERT_EQ(n, pool_name);
64 char buf[128];
65 memset(buf, 0xff, sizeof(buf));
66 bufferlist bl1;
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));
72 }
73
74 TEST_F(LibRadosStatECPP, StatPP) {
75 char buf[128];
76 memset(buf, 0xcc, sizeof(buf));
77 bufferlist bl;
78 bl.append(buf, sizeof(buf));
79 ASSERT_EQ(0, ioctx.write("foo", bl, sizeof(buf), 0));
80 uint64_t size;
81 time_t mtime;
82 ASSERT_EQ(0, ioctx.stat("foo", &size, &mtime));
83 ASSERT_EQ(sizeof(buf), size);
84 ASSERT_EQ(-ENOENT, ioctx.stat("nonexistent", &size, &mtime));
85 }
86
87 TEST_F(LibRadosStatECPP, ClusterStatPP) {
88 cluster_stat_t cstat;
89 ASSERT_EQ(0, cluster.cluster_stat(cstat));
90 }
91
92 TEST_F(LibRadosStatECPP, PoolStatPP) {
93 std::string n = ioctx.get_pool_name();
94 ASSERT_EQ(n, pool_name);
95 char buf[128];
96 memset(buf, 0xff, sizeof(buf));
97 bufferlist bl1;
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));
103 }
104
105 TEST_F(LibRadosStatPP, StatPPNS) {
106 char buf[128];
107 memset(buf, 0xcc, sizeof(buf));
108 bufferlist bl;
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));
113
114 char buf2[64];
115 memset(buf2, 0xbb, sizeof(buf2));
116 bufferlist bl2;
117 bl2.append(buf2, sizeof(buf2));
118 ioctx.set_namespace("nspace");
119 ASSERT_EQ(0, ioctx.write("foo", bl2, sizeof(buf2), 0));
120
121 uint64_t size;
122 time_t mtime;
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));
127
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));
133 }
134
135 TEST_F(LibRadosStatECPP, StatPPNS) {
136 char buf[128];
137 memset(buf, 0xcc, sizeof(buf));
138 bufferlist bl;
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));
143
144 char buf2[64];
145 memset(buf2, 0xbb, sizeof(buf2));
146 bufferlist bl2;
147 bl2.append(buf2, sizeof(buf2));
148 ioctx.set_namespace("nspace");
149 ASSERT_EQ(0, ioctx.write("foo", bl2, sizeof(buf2), 0));
150
151 uint64_t size;
152 time_t mtime;
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));
157
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));
163 }