]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/librados/service_cxx.cc
1bf682af8c564a1bc009326e535e5a9d353fb4a9
4 #include "gtest/gtest.h"
6 #include "include/rados/librados.hpp"
7 #include "include/stringify.h"
8 #include "common/config_proxy.h"
9 #include "test/librados/test_cxx.h"
10 #include "test/librados/testcase_cxx.h"
11 #include "test/unit.cc"
14 using namespace librados
;
16 TEST(LibRadosServicePP
, RegisterEarly
) {
18 cluster
.init("admin");
19 ASSERT_EQ(0, cluster
.conf_read_file(NULL
));
20 cluster
.conf_parse_env(NULL
);
21 string name
= string("pid") + stringify(getpid());
22 ASSERT_EQ(0, cluster
.service_daemon_register(
23 "laundry", name
, {{"foo", "bar"}, {"this", "that"}}));
24 ASSERT_EQ(-EEXIST
, cluster
.service_daemon_register(
25 "laundry", name
, {{"foo", "bar"}, {"this", "that"}}));
26 ASSERT_EQ(0, cluster
.connect());
31 TEST(LibRadosServicePP
, RegisterLate
) {
33 cluster
.init("admin");
34 ASSERT_EQ(0, cluster
.conf_read_file(NULL
));
35 cluster
.conf_parse_env(NULL
);
36 ASSERT_EQ("", connect_cluster_pp(cluster
));
37 string name
= string("pid") + stringify(getpid());
38 ASSERT_EQ(0, cluster
.service_daemon_register(
39 "laundry", name
, {{"foo", "bar"}, {"this", "that"}}));
42 TEST(LibRadosServicePP
, Status
) {
44 cluster
.init("admin");
45 ASSERT_EQ(0, cluster
.conf_read_file(NULL
));
46 cluster
.conf_parse_env(NULL
);
47 string name
= string("pid") + stringify(getpid());
48 ASSERT_EQ(-ENOTCONN
, cluster
.service_daemon_update_status(
49 {{"testing", "starting"}}));
50 ASSERT_EQ(0, cluster
.connect());
51 ASSERT_EQ(0, cluster
.service_daemon_register(
52 "laundry", name
, {{"foo", "bar"}, {"this", "that"}}));
53 for (int i
=0; i
<20; ++i
) {
54 ASSERT_EQ(0, cluster
.service_daemon_update_status({
55 {"testing", "running"},
56 {"count", stringify(i
)}
63 TEST(LibRadosServicePP
, Close
) {
65 string name
= string("close-test-pid") + stringify(getpid());
67 for (i
= 0; i
< tries
; ++i
) {
68 cout
<< "attempt " << i
<< " of " << tries
<< std::endl
;
71 cluster
.init("admin");
72 ASSERT_EQ(0, cluster
.conf_read_file(NULL
));
73 cluster
.conf_parse_env(NULL
);
74 ASSERT_EQ(0, cluster
.connect());
75 ASSERT_EQ(0, cluster
.service_daemon_register(
76 "laundry", name
, {{"foo", "bar"}, {"this", "that"}}));
77 sleep(3); // let it register
80 // mgr updates servicemap every tick
81 //sleep(g_conf().get_val<int64_t>("mgr_tick_period"));
82 std::this_thread::sleep_for(g_conf().get_val
<std::chrono::seconds
>(
84 // make sure we are deregistered
87 cluster
.init("admin");
88 ASSERT_EQ(0, cluster
.conf_read_file(NULL
));
89 cluster
.conf_parse_env(NULL
);
90 ASSERT_EQ(0, cluster
.connect());
91 bufferlist inbl
, outbl
;
92 ASSERT_EQ(0, cluster
.mon_command("{\"prefix\": \"service dump\"}",
94 string s
= outbl
.to_str();
97 if (s
.find(name
) != string::npos
) {
98 cout
<< " failed to deregister:\n" << s
<< std::endl
;