From: Josh Durgin Date: Thu, 19 May 2016 01:47:59 +0000 (-0700) Subject: test/librados: add a way to pass ceph config options X-Git-Tag: ses5-milestone5~413^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=56f71156327df735a8c0cdc97677b39c9ecbf2e1;p=ceph.git test/librados: add a way to pass ceph config options This way individual tests or testcases can change settings Signed-off-by: Josh Durgin --- diff --git a/src/test/librados/test.cc b/src/test/librados/test.cc index 0ee9c5af57a..afb855f3eed 100644 --- a/src/test/librados/test.cc +++ b/src/test/librados/test.cc @@ -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 #include #include #include @@ -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 &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 &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(); diff --git a/src/test/librados/test.h b/src/test/librados/test.h index 28f5a851c3f..3d249787bf8 100644 --- a/src/test/librados/test.h +++ b/src/test/librados/test.h @@ -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 &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 &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);