1
#include "include/rados/librados.h"
2
#include "test/librados/test.h"
4
#include "gtest/gtest.h"
8
#define POOL_LIST_BUF_SZ 32768
10
TEST(LibRadosPools, PoolList) {
11
std::vector<char> pool_list_buf(POOL_LIST_BUF_SZ, '\0');
12
char *buf = &pool_list_buf[0];
14
std::string pool_name = get_temp_pool_name();
15
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
16
ASSERT_LT(rados_pool_list(cluster, buf, POOL_LIST_BUF_SZ), POOL_LIST_BUF_SZ);
18
bool found_pool = false;
19
while (buf[0] != '\0') {
20
if ((found_pool == false) && (strcmp(buf, pool_name.c_str()) == 0)) {
23
buf += strlen(buf) + 1;
25
ASSERT_EQ(found_pool, true);
26
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
29
int64_t rados_pool_lookup(rados_t cluster, const char *pool_name);
31
TEST(LibRadosPools, PoolLookup) {
33
std::string pool_name = get_temp_pool_name();
34
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
35
ASSERT_LT(0, rados_pool_lookup(cluster, pool_name.c_str()));
36
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
39
TEST(LibRadosPools, PoolLookup2) {
41
std::string pool_name = get_temp_pool_name();
42
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
43
int64_t pool_id = rados_pool_lookup(cluster, pool_name.c_str());
44
ASSERT_GT(pool_id, 0);
46
ASSERT_EQ(0, rados_ioctx_create(cluster, pool_name.c_str(), &ioctx));
47
int64_t pool_id2 = rados_ioctx_get_id(ioctx);
48
ASSERT_EQ(pool_id, pool_id2);
49
rados_ioctx_destroy(ioctx);
50
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
53
TEST(LibRadosPools, PoolDelete) {
55
std::string pool_name = get_temp_pool_name();
56
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
57
ASSERT_EQ(0, rados_pool_delete(cluster, pool_name.c_str()));
58
ASSERT_GT(0, rados_pool_lookup(cluster, pool_name.c_str()));
59
ASSERT_EQ(0, rados_pool_create(cluster, pool_name.c_str()));
60
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
63
TEST(LibRadosPools, PoolCreateDelete) {
65
std::string pool_name = get_temp_pool_name();
66
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
68
std::string n = pool_name + "abc123";
69
ASSERT_EQ(0, rados_pool_create(cluster, n.c_str()));
70
ASSERT_EQ(-EEXIST, rados_pool_create(cluster, n.c_str()));
71
ASSERT_EQ(0, rados_pool_delete(cluster, n.c_str()));
72
ASSERT_EQ(-ENOENT, rados_pool_delete(cluster, n.c_str()));
74
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
77
TEST(LibRadosPools, PoolCreateWithCrushRule) {
79
std::string pool_name = get_temp_pool_name();
80
ASSERT_EQ("", create_one_pool(pool_name, &cluster));
82
std::string pool2_name = get_temp_pool_name();
83
ASSERT_EQ(0, rados_pool_create_with_crush_rule(cluster,
84
pool2_name.c_str(), 0));
85
ASSERT_EQ(0, rados_pool_delete(cluster, pool2_name.c_str()));
87
std::string pool3_name = get_temp_pool_name();
88
ASSERT_EQ(0, rados_pool_create_with_all(cluster, pool3_name.c_str(),
91
ASSERT_EQ(0, rados_ioctx_create(cluster, pool3_name.c_str(), &ioctx));
93
ASSERT_EQ(0, rados_ioctx_pool_get_auid(ioctx, &auid));
94
ASSERT_EQ(456ull, auid);
95
ASSERT_EQ(0, rados_pool_delete(cluster, pool3_name.c_str()));
96
rados_ioctx_destroy(ioctx);
97
ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));