From 61fdbbf69907a60c8d1c81982715bedb304dc8eb Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Wed, 6 Jul 2011 15:41:34 -0700 Subject: [PATCH] librados: add conf_parse_argv, use in tests Signed-off-by: Colin McCabe --- src/include/rados/librados.h | 3 +++ src/include/rados/librados.hpp | 1 + src/librados.cc | 16 ++++++++++++++++ src/test/system/rados_list_parallel.cc | 3 +++ 4 files changed, 23 insertions(+) diff --git a/src/include/rados/librados.h b/src/include/rados/librados.h index 7708f5d897d52..f3c52161afe68 100644 --- a/src/include/rados/librados.h +++ b/src/include/rados/librados.h @@ -71,6 +71,9 @@ void rados_shutdown(rados_t cluster); */ int rados_conf_read_file(rados_t cluster, const char *path); +/* Parse argv */ +void rados_conf_parse_argv(rados_t cluster, int argc, const char **argv); + /* Sets a configuration value from a string. * Returns 0 on success, error code otherwise. */ int rados_conf_set(rados_t cluster, const char *option, const char *value); diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp index f6319b5d910f4..df09b7d799063 100644 --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@ -284,6 +284,7 @@ namespace librados int connect(); void shutdown(); int conf_read_file(const char * const path) const; + void conf_parse_argv(int argc, const char ** argv) const; int conf_set(const char *option, const char *value); int conf_get(const char *option, std::string &val); diff --git a/src/librados.cc b/src/librados.cc index a77c43d821858..041e8a10777fa 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -3010,6 +3010,12 @@ conf_read_file(const char * const path) const return rados_conf_read_file((rados_t)client, path); } +void librados::Rados:: +conf_parse_argv(int argc, const char ** argv) const +{ + rados_conf_parse_argv((rados_t)client, argc, argv); +} + int librados::Rados:: conf_set(const char *option, const char *value) { @@ -3223,6 +3229,16 @@ extern "C" int rados_conf_read_file(rados_t cluster, const char *path_list) return 0; } +extern "C" void rados_conf_parse_argv(rados_t cluster, int argc, const char **argv) +{ + librados::RadosClient *client = (librados::RadosClient *)cluster; + md_config_t *conf = client->cct->_conf; + vector args; + argv_to_vec(argc, argv, args); + conf->parse_argv(args); + conf->apply_changes(); +} + extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *value) { librados::RadosClient *client = (librados::RadosClient *)cluster; diff --git a/src/test/system/rados_list_parallel.cc b/src/test/system/rados_list_parallel.cc index 69fc42ad32e71..2823e8b0ee91c 100644 --- a/src/test/system/rados_list_parallel.cc +++ b/src/test/system/rados_list_parallel.cc @@ -63,6 +63,7 @@ public: { rados_t cl; RETURN_IF_NONZERO(rados_create(&cl, NULL)); + rados_conf_parse_argv(cl, m_argc, m_argv); RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL)); RETURN_IF_NONZERO(rados_connect(cl)); int ret = rados_pool_delete(cl, "foo"); @@ -127,6 +128,7 @@ public: { rados_t cl; RETURN_IF_NONZERO(rados_create(&cl, NULL)); + rados_conf_parse_argv(cl, m_argc, m_argv); RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL)); RETURN_IF_NONZERO(rados_connect(cl)); pool_setup_sem->wait(); @@ -187,6 +189,7 @@ public: int ret; rados_t cl; RETURN_IF_NONZERO(rados_create(&cl, NULL)); + rados_conf_parse_argv(cl, m_argc, m_argv); RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL)); RETURN_IF_NONZERO(rados_connect(cl)); pool_setup_sem->wait(); -- 2.39.5