]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados_test_stub: implement conf get/set API methods
authorJason Dillaman <dillaman@redhat.com>
Thu, 30 Jul 2015 13:00:57 +0000 (09:00 -0400)
committerLoic Dachary <ldachary@redhat.com>
Sun, 6 Sep 2015 14:05:30 +0000 (16:05 +0200)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 4d03c664f2a9362009c7e3077ed65e2989f0f21b)

src/test/librados_test_stub/LibradosTestStub.cc

index f7f597c6f31d2be5167a6fff319b2cc9d3cb47de..8efd6ac5e4267320ae480dd19d13dc6a8b5bd1c7 100644 (file)
@@ -113,6 +113,14 @@ extern "C" rados_config_t rados_cct(rados_t cluster)
   return reinterpret_cast<rados_config_t>(client->cct());
 }
 
+extern "C" int rados_conf_set(rados_t cluster, const char *option,
+                              const char *value) {
+  librados::TestRadosClient *impl =
+    reinterpret_cast<librados::TestRadosClient*>(cluster);
+  CephContext *cct = impl->cct();
+  return cct->_conf->set_val(option, value);
+}
+
 extern "C" int rados_conf_parse_env(rados_t cluster, const char *var) {
   librados::TestRadosClient *client =
     reinterpret_cast<librados::TestRadosClient*>(cluster);
@@ -198,6 +206,12 @@ extern "C" void rados_ioctx_destroy(rados_ioctx_t io) {
   ctx->put();
 }
 
+extern "C" rados_t rados_ioctx_get_cluster(rados_ioctx_t io) {
+  librados::TestIoCtxImpl *ctx =
+    reinterpret_cast<librados::TestIoCtxImpl*>(io);
+  return reinterpret_cast<rados_t>(ctx->get_rados_client());
+}
+
 extern "C" int rados_mon_command(rados_t cluster, const char **cmd,
                                  size_t cmdlen, const char *inbuf,
                                  size_t inbuflen, char **outbuf,
@@ -704,6 +718,31 @@ int Rados::blacklist_add(const std::string& client_address,
   return impl->blacklist_add(client_address, expire_seconds);
 }
 
+config_t Rados::cct() {
+  TestRadosClient *impl = reinterpret_cast<TestRadosClient*>(client);
+  return reinterpret_cast<config_t>(impl->cct());
+}
+
+int Rados::conf_set(const char *option, const char *value) {
+  return rados_conf_set(reinterpret_cast<rados_t>(client), option, value);
+}
+
+int Rados::conf_get(const char *option, std::string &val) {
+  TestRadosClient *impl = reinterpret_cast<TestRadosClient*>(client);
+  CephContext *cct = impl->cct();
+
+  char *str = NULL;
+  int ret = cct->_conf->get_val(option, &str, -1);
+  if (ret != 0) {
+    free(str);
+    return ret;
+  }
+
+  val = str;
+  free(str);
+  return 0;
+}
+
 int Rados::conf_parse_env(const char *env) const {
   return rados_conf_parse_env(reinterpret_cast<rados_t>(client), env);
 }