]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/librados/stat.cc
import quincy 17.2.0
[ceph.git] / ceph / src / test / librados / stat.cc
1 #include "include/rados/librados.h"
2 #include "test/librados/test.h"
3 #include "test/librados/TestCase.h"
4
5 #include "common/ceph_time.h"
6
7 #include <algorithm>
8 #include <errno.h>
9 #include "gtest/gtest.h"
10
11 typedef RadosTest LibRadosStat;
12 typedef RadosTestEC LibRadosStatEC;
13
14 TEST_F(LibRadosStat, Stat) {
15 char buf[128];
16 memset(buf, 0xcc, sizeof(buf));
17 ASSERT_EQ(0, rados_write(ioctx, "foo", buf, sizeof(buf), 0));
18 uint64_t size;
19 time_t mtime;
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));
23 }
24
25 TEST_F(LibRadosStat, StatNS) {
26 char buf[128];
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));
31
32 char buf2[64];
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));
36
37 uint64_t size;
38 time_t mtime;
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));
43
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));
49 }
50
51 TEST_F(LibRadosStat, ClusterStat) {
52 struct rados_cluster_stat_t result;
53 ASSERT_EQ(0, rados_cluster_stat(cluster, &result));
54 }
55
56 TEST_F(LibRadosStat, PoolStat) {
57 char buf[128];
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));
67 }
68
69 TEST_F(LibRadosStatEC, Stat) {
70 char buf[128];
71 memset(buf, 0xcc, sizeof(buf));
72 ASSERT_EQ(0, rados_write(ioctx, "foo", buf, sizeof(buf), 0));
73 uint64_t size;
74 time_t mtime;
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));
78 }
79
80 TEST_F(LibRadosStatEC, StatNS) {
81 char buf[128];
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));
86
87 char buf2[64];
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));
91
92 uint64_t size;
93 time_t mtime;
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));
98
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));
104 }
105
106 TEST_F(LibRadosStatEC, ClusterStat) {
107 struct rados_cluster_stat_t result;
108 ASSERT_EQ(0, rados_cluster_stat(cluster, &result));
109 }
110
111 TEST_F(LibRadosStatEC, PoolStat) {
112 char buf[128];
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));
122 }