]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/librados: add a way to pass ceph config options
authorJosh Durgin <jdurgin@redhat.com>
Thu, 19 May 2016 01:47:59 +0000 (18:47 -0700)
committerJosh Durgin <jdurgin@redhat.com>
Sat, 9 Jul 2016 01:33:14 +0000 (18:33 -0700)
This way individual tests or testcases can change settings

Signed-off-by: Josh Durgin <jdurgin@redhat.com>
src/test/librados/test.cc
src/test/librados/test.h

index 0ee9c5af57a0c6b8460bf28e7ee1db26fac79d46..afb855f3eed6b17194c3d1769d4c37727dacd799 100644 (file)
@@ -8,8 +8,9 @@
 #include "include/stringify.h"
 #include "common/Formatter.h"
 #include "json_spirit/json_spirit.h"
-#include "errno.h"
+#include "common/errno.h"
 
+#include <errno.h>
 #include <sstream>
 #include <stdlib.h>
 #include <string>
@@ -260,7 +261,12 @@ std::string create_one_ec_pool(const std::string &pool_name, rados_t *cluster)
 
 std::string create_one_pool_pp(const std::string &pool_name, Rados &cluster)
 {
-  std::string err = connect_cluster_pp(cluster);
+    return create_one_pool_pp(pool_name, cluster, {});
+}
+std::string create_one_pool_pp(const std::string &pool_name, Rados &cluster,
+                               const std::map<std::string, std::string> &config)
+{
+  std::string err = connect_cluster_pp(cluster, config);
   if (err.length())
     return err;
   int ret = cluster.pool_create(pool_name.c_str());
@@ -375,7 +381,13 @@ std::string connect_cluster(rados_t *cluster)
   return "";
 }
 
-std::string connect_cluster_pp(Rados &cluster)
+std::string connect_cluster_pp(librados::Rados &cluster)
+{
+  return connect_cluster_pp(cluster, {});
+}
+
+std::string connect_cluster_pp(librados::Rados &cluster,
+                               const std::map<std::string, std::string> &config)
 {
   char *id = getenv("CEPH_CLIENT_ID");
   if (id) std::cerr << "Client id is: " << id << std::endl;
@@ -395,6 +407,17 @@ std::string connect_cluster_pp(Rados &cluster)
     return oss.str();
   }
   cluster.conf_parse_env(NULL);
+
+  for (auto &setting : config) {
+    ret = cluster.conf_set(setting.first.c_str(), setting.second.c_str());
+    if (ret) {
+      std::ostringstream oss;
+      oss << "failed to set config value " << setting.first << " to '"
+          << setting.second << "': " << cpp_strerror(ret);
+      return oss.str();
+    }
+  }
+
   ret = cluster.connect();
   if (ret) {
     cluster.shutdown();
index 28f5a851c3f2ac32dd01f27a4d4b8fd5443d0cd5..3d249787bf8deb254aa748189e633d3fad37b461 100644 (file)
@@ -29,6 +29,9 @@ std::string create_one_pool(const std::string &pool_name, rados_t *cluster,
 std::string create_one_ec_pool(const std::string &pool_name, rados_t *cluster);
 std::string create_one_pool_pp(const std::string &pool_name,
                            librados::Rados &cluster);
+std::string create_one_pool_pp(const std::string &pool_name,
+                              librados::Rados &cluster,
+                              const std::map<std::string, std::string> &config);
 std::string create_one_ec_pool_pp(const std::string &pool_name,
                            librados::Rados &cluster);
 std::string set_pg_num(
@@ -36,6 +39,8 @@ std::string set_pg_num(
 
 std::string connect_cluster(rados_t *cluster);
 std::string connect_cluster_pp(librados::Rados &cluster);
+std::string connect_cluster_pp(librados::Rados &cluster,
+                              const std::map<std::string, std::string> &config);
 int destroy_one_pool(const std::string &pool_name, rados_t *cluster);
 int destroy_one_ec_pool(const std::string &pool_name, rados_t *cluster);
 int destroy_one_pool_pp(const std::string &pool_name, librados::Rados &cluster);