]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/librbd/test_Groups.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 #include "test/librbd/test_fixture.h"
4 #include "test/librbd/test_support.h"
5 #include "include/int_types.h"
6 #include "include/stringify.h"
7 #include "include/rados/librados.h"
8 #include "include/rbd/librbd.hpp"
9 #include "common/Cond.h"
10 #include "common/errno.h"
11 #include "common/Mutex.h"
12 #include "common/RWLock.h"
13 #include "cls/lock/cls_lock_client.h"
14 #include "cls/lock/cls_lock_types.h"
15 #include "librbd/internal.h"
16 #include "librbd/ImageCtx.h"
17 #include "librbd/ImageWatcher.h"
18 #include "librbd/WatchNotifyTypes.h"
19 #include "librbd/io/AioCompletion.h"
20 #include "librbd/io/ImageRequestWQ.h"
21 #include "test/librados/test.h"
22 #include "gtest/gtest.h"
23 #include <boost/assign/std/set.hpp>
24 #include <boost/assign/std/map.hpp>
25 #include <boost/bind.hpp>
26 #include <boost/scope_exit.hpp>
27 #include <boost/thread/thread.hpp>
35 using namespace boost::assign
;
36 using namespace librbd::watch_notify
;
38 void register_test_groups() {
41 class TestLibCG
: public TestFixture
{
45 TEST_F(TestLibCG
, group_create
)
47 librados::IoCtx ioctx
;
48 ASSERT_EQ(0, _rados
.ioctx_create(_pool_name
.c_str(), ioctx
));
51 ASSERT_EQ(0, rbd
.group_create(ioctx
, "mygroup"));
53 vector
<string
> groups
;
54 ASSERT_EQ(0, rbd
.group_list(ioctx
, &groups
));
55 ASSERT_EQ(1U, groups
.size());
56 ASSERT_EQ("mygroup", groups
[0]);
58 ASSERT_EQ(0, rbd
.group_remove(ioctx
, "mygroup"));
61 ASSERT_EQ(0, rbd
.group_list(ioctx
, &groups
));
62 ASSERT_EQ(0U, groups
.size());
65 TEST_F(TestLibCG
, add_image
)
67 librados::IoCtx ioctx
;
68 ASSERT_EQ(0, _rados
.ioctx_create(_pool_name
.c_str(), ioctx
));
70 const char *group_name
= "mycg";
71 const char *image_name
= "myimage";
73 ASSERT_EQ(0, rbd
.group_create(ioctx
, group_name
));
75 ASSERT_EQ(0, rbd
.create2(ioctx
, image_name
, 65535,
76 RBD_FEATURE_LAYERING
, &order
)); // Specified features make image of new format.
78 ASSERT_EQ(0, rbd
.group_image_add(ioctx
, group_name
, ioctx
, image_name
));
80 vector
<librbd::group_image_status_t
> images
;
81 ASSERT_EQ(0, rbd
.group_image_list(ioctx
, group_name
, &images
));
82 ASSERT_EQ(1U, images
.size());
83 ASSERT_EQ("myimage", images
[0].name
);
84 ASSERT_EQ(ioctx
.get_id(), images
[0].pool
);
86 ASSERT_EQ(0, rbd
.group_image_remove(ioctx
, group_name
, ioctx
, image_name
));
89 ASSERT_EQ(0, rbd
.group_image_list(ioctx
, group_name
, &images
));
90 ASSERT_EQ(0U, images
.size());