From: Kefu Chai Date: Tue, 15 Nov 2016 06:21:03 +0000 (+0800) Subject: common,test: g_ceph_context->put() upon return X-Git-Tag: v10.2.8~63^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8a2f27cc632c26d7c2b8e8528b4d459b1d78705b;p=ceph.git common,test: g_ceph_context->put() upon return prior to this change, global_init() could create a new CephContext and assign it to g_ceph_context. it's our responsibilty to release the CephContext explicitly using cct->put() before the application quits. but sometimes, we fail to do so. in this change, global_init() will return an intrusive_ptr, which calls `g_ceph_context->put()` in its dtor. this ensures that the CephContext is always destroyed before main() returns. so the log is flushed before _log_exp_length is destroyed. there are two cases where global_pre_init() is called directly. - ceph_conf.cc: g_ceph_context->put() will be called by an intrusive_ptr<> deleter. - rgw_main.cc: global_init() is called later on on the success code path, so it will be taken care of. Fixes: http://tracker.ceph.com/issues/17762 Signed-off-by: Kefu Chai (cherry picked from commit cb1cda96713b2ec0f6418c4cbe3d964c2020729c) Conflicts: src/ceph_fuse.cc src/ceph_mgr.cc src/global/global_init.cc src/rgw/rgw_main.cc src/test/compressor/test_compression.cc src/test/compressor/test_compression_plugin.cc src/test/compressor/test_compression_plugin_snappy.cc src/test/compressor/test_compression_plugin_zlib.cc src/test/compressor/test_compression_snappy.cc src/test/compressor/test_compression_zlib.cc src/test/erasure-code/TestErasureCode.cc src/test/erasure-code/TestErasureCodeExample.cc src/test/erasure-code/TestErasureCodeIsa.cc src/test/erasure-code/TestErasureCodeJerasure.cc src/test/erasure-code/TestErasureCodeLrc.cc src/test/erasure-code/TestErasureCodePlugin.cc src/test/erasure-code/TestErasureCodePluginIsa.cc src/test/erasure-code/TestErasureCodePluginJerasure.cc src/test/erasure-code/TestErasureCodePluginLrc.cc src/test/erasure-code/TestErasureCodePluginShec.cc src/test/erasure-code/TestErasureCodeShec.cc src/test/erasure-code/TestErasureCodeShec_thread.cc src/test/fio/fio_ceph_objectstore.cc src/test/librados/misc.cc src/test/mon/PGMap.cc src/test/msgr/test_async_networkstack.cc src/test/msgr/test_userspace_event.cc src/test/objectstore/Allocator_test.cc src/test/objectstore/BitAllocator_test.cc src/test/objectstore/test_bluefs.cc src/test/objectstore/test_bluestore_types.cc src/test/objectstore/test_memstore_clone.cc src/test/osd/TestPGLog.cc src/test/rgw/test_http_manager.cc src/test/rgw/test_rgw_compression.cc src/test/test_mempool.cc src/tools/rados/rados.cc --- diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index a6824481ec9..e8d57c74f6a 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -78,8 +78,9 @@ int main(int argc, const char **argv, const char *envp[]) { } env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); for (std::vector::iterator i = args.begin(); i != args.end(); ) { if (ceph_argparse_double_dash(args, i)) { break; @@ -289,7 +290,6 @@ int main(int argc, const char **argv, const char *envp[]) { } delete messenger; - g_ceph_context->put(); free(newargv); delete mc; diff --git a/src/ceph_mds.cc b/src/ceph_mds.cc index 58bda1b5422..40ac730a3b7 100644 --- a/src/ceph_mds.cc +++ b/src/ceph_mds.cc @@ -93,8 +93,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_MDS, CODE_ENVIRONMENT_DAEMON, - 0, "mds_data"); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_MDS, CODE_ENVIRONMENT_DAEMON, + 0, "mds_data"); ceph_heap_profiler_init(); std::string val, action; @@ -230,8 +231,6 @@ int main(int argc, const char **argv) delete msgr; } - g_ceph_context->put(); - // cd on exit, so that gmon.out (if any) goes into a separate directory for each node. char s[20]; snprintf(s, sizeof(s), "gmon/%d", getpid()); diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc index 4bb5c4a5793..d21445d32aa 100644 --- a/src/ceph_mon.cc +++ b/src/ceph_mon.cc @@ -257,8 +257,9 @@ int main(int argc, const char **argv) } } - global_init(&def_args, args, - CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_DAEMON, flags, "mon_data"); + auto cct = global_init(&def_args, args, + CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_DAEMON, + flags, "mon_data"); ceph_heap_profiler_init(); uuid_d fsid; @@ -781,7 +782,6 @@ int main(int argc, const char **argv) delete msgr; delete client_throttler; delete daemon_throttler; - g_ceph_context->put(); // cd on exit, so that gmon.out (if any) goes into a separate directory for each node. char s[20]; diff --git a/src/ceph_osd.cc b/src/ceph_osd.cc index 3ae3165a514..70377fe53e0 100644 --- a/src/ceph_osd.cc +++ b/src/ceph_osd.cc @@ -118,8 +118,9 @@ int main(int argc, const char **argv) // option, therefore we will pass it as a default argument to global_init(). def_args.push_back("--leveldb-log="); - global_init(&def_args, args, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_DAEMON, - 0, "osd_data"); + auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_OSD, + CODE_ENVIRONMENT_DAEMON, + 0, "osd_data"); ceph_heap_profiler_init(); // osd specific args @@ -646,7 +647,6 @@ flushjournal_out: client_byte_throttler.reset(); client_msg_throttler.reset(); - g_ceph_context->put(); // cd on exit, so that gmon.out (if any) goes into a separate directory for each node. char s[20]; diff --git a/src/ceph_syn.cc b/src/ceph_syn.cc index b872b821568..d3ed16a1295 100644 --- a/src/ceph_syn.cc +++ b/src/ceph_syn.cc @@ -42,7 +42,8 @@ int main(int argc, const char **argv, char *envp[]) vector args; argv_to_vec(argc, argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); parse_syn_options(args); // for SyntheticClient diff --git a/src/global/global_init.cc b/src/global/global_init.cc index daff81a323a..8750a7b2c8c 100644 --- a/src/global/global_init.cc +++ b/src/global/global_init.cc @@ -134,11 +134,12 @@ void global_pre_init(std::vector < const char * > *alt_def_args, g_conf->complain_about_parse_errors(g_ceph_context); } -void global_init(std::vector < const char * > *alt_def_args, - std::vector < const char* >& args, - uint32_t module_type, code_environment_t code_env, - int flags, - const char *data_dir_option, bool run_pre_init) +boost::intrusive_ptr +global_init(std::vector < const char * > *alt_def_args, + std::vector < const char* >& args, + uint32_t module_type, code_environment_t code_env, + int flags, + const char *data_dir_option, bool run_pre_init) { // Ensure we're not calling the global init functions multiple times. static bool first_run = true; @@ -331,6 +332,18 @@ void global_init(std::vector < const char * > *alt_def_args, if (code_env == CODE_ENVIRONMENT_DAEMON && !(flags & CINIT_FLAG_NO_DAEMON_ACTIONS)) output_ceph_version(); + + return boost::intrusive_ptr{g_ceph_context, false}; +} + +void intrusive_ptr_add_ref(CephContext* cct) +{ + cct->get(); +} + +void intrusive_ptr_release(CephContext* cct) +{ + cct->put(); } void global_print_banner(void) diff --git a/src/global/global_init.h b/src/global/global_init.h index 79c0bad5c7e..69ff6dda7da 100644 --- a/src/global/global_init.h +++ b/src/global/global_init.h @@ -19,7 +19,8 @@ #include #include #include - +#include +#include "include/assert.h" #include "common/code_environment.h" #include "common/common_init.h" @@ -30,7 +31,8 @@ class CephContext; * daemons and utility programs need to call. It takes care of a lot of * initialization, including setting up g_ceph_context. */ -void global_init(std::vector < const char * > *alt_def_args, +boost::intrusive_ptr + global_init(std::vector < const char * > *alt_def_args, std::vector < const char* >& args, uint32_t module_type, code_environment_t code_env, @@ -38,6 +40,9 @@ void global_init(std::vector < const char * > *alt_def_args, const char *data_dir_option = 0, bool run_pre_init = true); +void intrusive_ptr_add_ref(CephContext* cct); +void intrusive_ptr_release(CephContext* cct); + // just the first half; enough to get config parsed but doesn't start up the // cct or log. void global_pre_init(std::vector < const char * > *alt_def_args, diff --git a/src/librados-config.cc b/src/librados-config.cc index 83f9704524f..ba4799a412d 100644 --- a/src/librados-config.cc +++ b/src/librados-config.cc @@ -42,8 +42,9 @@ int main(int argc, const char **argv) bool opt_version = false; bool opt_vernum = false; - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); for (std::vector::iterator i = args.begin(); i != args.end(); ) { diff --git a/src/os/bluestore/bluefs_tool.cc b/src/os/bluestore/bluefs_tool.cc index 37385659176..150b16826be 100644 --- a/src/os/bluestore/bluefs_tool.cc +++ b/src/os/bluestore/bluefs_tool.cc @@ -25,7 +25,8 @@ int main(int argc, char **argv) argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val( "enable_experimental_unrecoverable_data_corrupting_features", diff --git a/src/rbd_replay/rbd-replay.cc b/src/rbd_replay/rbd-replay.cc index b00c1310c90..3ec490ecb3b 100644 --- a/src/rbd_replay/rbd-replay.cc +++ b/src/rbd_replay/rbd-replay.cc @@ -60,7 +60,8 @@ int main(int argc, const char **argv) { argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); std::vector::iterator i; string pool_name = "rbd"; diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc index 0e4075c7180..8ba0bdbe2f6 100644 --- a/src/rgw/librgw.cc +++ b/src/rgw/librgw.cc @@ -440,10 +440,10 @@ namespace rgw { def_args.push_back("--keyring=$rgw_data/keyring"); def_args.push_back("--log-file=/var/log/radosgw/$cluster-$name.log"); - global_init(&def_args, args, - CEPH_ENTITY_TYPE_CLIENT, - CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + cct = global_init(&def_args, args, + CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); Mutex mutex("main"); SafeTimer init_timer(g_ceph_context, mutex); @@ -550,7 +550,7 @@ namespace rgw { rgw_perf_stop(g_ceph_context); dout(1) << "final shutdown" << dendl; - g_ceph_context->put(); + cct.reset(); ceph::crypto::shutdown(); diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 3de43b56a29..4e7c4bdd9ac 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2192,7 +2192,8 @@ int main(int argc, char **argv) argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); rgw_user user_id; diff --git a/src/rgw/rgw_lib.h b/src/rgw/rgw_lib.h index f418a6d1973..46014477bea 100644 --- a/src/rgw/rgw_lib.h +++ b/src/rgw/rgw_lib.h @@ -5,6 +5,7 @@ #include #include "include/unordered_map.h" +#include "global/global_init.h" #include "rgw_common.h" #include "rgw_client_io.h" #include "rgw_rest.h" @@ -29,6 +30,7 @@ namespace rgw { rgw::LDAPHelper* ldh; RGWREST rest; // XXX needed for RGWProcessEnv RGWRados* store; + boost::intrusive_ptr cct; public: RGWLib() : fec(nullptr), fe(nullptr), olog(nullptr), store(nullptr) diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index ed9ab67be56..fd821bfcf81 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -178,8 +178,6 @@ static RGWRESTMgr *set_logging(RGWRESTMgr *mgr) return mgr; } -void intrusive_ptr_add_ref(CephContext* cct) { cct->get(); } -void intrusive_ptr_release(CephContext* cct) { cct->put(); } /* * start up the RADOS connection and then handle HTTP messages as they come in @@ -249,8 +247,10 @@ int main(int argc, const char **argv) // Now that we've determined which frontend(s) to use, continue with global // initialization. Passing false as the final argument ensures that // global_pre_init() is not invoked twice. - global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON, - flags, "rgw_data", false); + // claim the reference and release it after subsequent destructors have fired + auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + flags, "rgw_data", false); for (std::vector::iterator i = args.begin(); i != args.end(); ++i) { if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) { @@ -290,9 +290,6 @@ int main(int argc, const char **argv) common_init_finish(g_ceph_context); - // claim the reference and release it after subsequent destructors have fired - boost::intrusive_ptr cct(g_ceph_context, false); - rgw_tools_init(g_ceph_context); rgw_init_resolver(); diff --git a/src/rgw/rgw_object_expirer.cc b/src/rgw/rgw_object_expirer.cc index f044db7f875..d2897eb5da0 100644 --- a/src/rgw/rgw_object_expirer.cc +++ b/src/rgw/rgw_object_expirer.cc @@ -60,8 +60,9 @@ int main(const int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS, "rgw_data"); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS, "rgw_data"); for (std::vector::iterator i = args.begin(); i != args.end(); ) { if (ceph_argparse_double_dash(args, i)) { diff --git a/src/rgw/rgw_token.cc b/src/rgw/rgw_token.cc index c4ae0f0cdfd..04ef1fa7b47 100644 --- a/src/rgw/rgw_token.cc +++ b/src/rgw/rgw_token.cc @@ -64,7 +64,8 @@ int main(int argc, char **argv) argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); char *v{nullptr}; diff --git a/src/test/ObjectMap/test_keyvaluedb_iterators.cc b/src/test/ObjectMap/test_keyvaluedb_iterators.cc index e3ab7daa88c..632f7f7414b 100644 --- a/src/test/ObjectMap/test_keyvaluedb_iterators.cc +++ b/src/test/ObjectMap/test_keyvaluedb_iterators.cc @@ -1786,7 +1786,7 @@ int main(int argc, char *argv[]) vector args; argv_to_vec(argc, (const char **) argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); diff --git a/src/test/ObjectMap/test_object_map.cc b/src/test/ObjectMap/test_object_map.cc index 0d504df576a..a99e9200830 100644 --- a/src/test/ObjectMap/test_object_map.cc +++ b/src/test/ObjectMap/test_object_map.cc @@ -551,7 +551,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); diff --git a/src/test/TestSignalHandlers.cc b/src/test/TestSignalHandlers.cc index 124018d5024..08c4e025c81 100644 --- a/src/test/TestSignalHandlers.cc +++ b/src/test/TestSignalHandlers.cc @@ -71,7 +71,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); test_fn_t fn = NULL; diff --git a/src/test/TestTimers.cc b/src/test/TestTimers.cc index 5e2b6b97395..19f67f7b515 100644 --- a/src/test/TestTimers.cc +++ b/src/test/TestTimers.cc @@ -255,7 +255,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); int ret; diff --git a/src/test/admin_socket.cc b/src/test/admin_socket.cc index 212d754f379..b6777de9dd1 100644 --- a/src/test/admin_socket.cc +++ b/src/test/admin_socket.cc @@ -12,15 +12,12 @@ * */ -#include - #include "common/Mutex.h" #include "common/Cond.h" #include "common/admin_socket.h" #include "common/admin_socket_client.h" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "global/global_context.h" +#include "test/unit.h" #include #include @@ -293,17 +290,6 @@ TEST(AdminSocket, bind_and_listen) { } } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - vector def_args; - global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd .. ; diff --git a/src/test/bench/small_io_bench_dumb.cc b/src/test/bench/small_io_bench_dumb.cc index f118880942a..a9df077c10c 100644 --- a/src/test/bench/small_io_bench_dumb.cc +++ b/src/test/bench/small_io_bench_dumb.cc @@ -95,7 +95,7 @@ int main(int argc, char **argv) ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); diff --git a/src/test/bench/small_io_bench_fs.cc b/src/test/bench/small_io_bench_fs.cc index 9466bd4d87a..7569b332d96 100644 --- a/src/test/bench/small_io_bench_fs.cc +++ b/src/test/bench/small_io_bench_fs.cc @@ -106,7 +106,7 @@ int main(int argc, char **argv) ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); diff --git a/src/test/bench/tp_bench.cc b/src/test/bench/tp_bench.cc index 6a50b6e0855..40267179d11 100644 --- a/src/test/bench/tp_bench.cc +++ b/src/test/bench/tp_bench.cc @@ -142,7 +142,7 @@ int main(int argc, char **argv) ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); diff --git a/src/test/bench_log.cc b/src/test/bench_log.cc index 39e8813ae75..9f5892f1e23 100644 --- a/src/test/bench_log.cc +++ b/src/test/bench_log.cc @@ -39,7 +39,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_OSD, + CODE_ENVIRONMENT_UTILITY, 0); utime_t start = ceph_clock_now(NULL); diff --git a/src/test/common/Throttle.cc b/src/test/common/Throttle.cc index a2001214dcb..279b62edbab 100644 --- a/src/test/common/Throttle.cc +++ b/src/test/common/Throttle.cc @@ -25,8 +25,7 @@ #include "common/Thread.h" #include "common/Throttle.h" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include +#include "test/unit.h" #include #include @@ -412,17 +411,6 @@ TEST(BackoffThrottle, oversaturated) ASSERT_GT(results.second.count(), 0.0005); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; diff --git a/src/test/common/get_command_descriptions.cc b/src/test/common/get_command_descriptions.cc index eb4c0f9db91..1b4da3f8959 100644 --- a/src/test/common/get_command_descriptions.cc +++ b/src/test/common/get_command_descriptions.cc @@ -87,7 +87,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); if (args.empty()) { diff --git a/src/test/common/test_async_compressor.cc b/src/test/common/test_async_compressor.cc index 4ea8dc5a951..67fae85b71e 100644 --- a/src/test/common/test_async_compressor.cc +++ b/src/test/common/test_async_compressor.cc @@ -207,7 +207,7 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/common/test_shared_cache.cc b/src/test/common/test_shared_cache.cc index cd921f52707..1d12800c85f 100644 --- a/src/test/common/test_shared_cache.cc +++ b/src/test/common/test_shared_cache.cc @@ -25,8 +25,7 @@ #include "common/Thread.h" #include "common/shared_cache.hpp" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include +#include "test/unit.h" class SharedLRUTest : public SharedLRU { public: @@ -393,17 +392,6 @@ TEST(SharedCache_all, lru) { ASSERT_TRUE(cache.lookup(0).get()); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - // Local Variables: // compile-command: "cd ../.. ; make unittest_shared_cache && ./unittest_shared_cache # --gtest_filter=*.* --log-to-stderr=true" // End: diff --git a/src/test/common/test_sharedptr_registry.cc b/src/test/common/test_sharedptr_registry.cc index 98379c856aa..88486251a33 100644 --- a/src/test/common/test_sharedptr_registry.cc +++ b/src/test/common/test_sharedptr_registry.cc @@ -24,8 +24,7 @@ #include "common/Thread.h" #include "common/sharedptr_registry.hpp" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include +#include "test/unit.h" class SharedPtrRegistryTest : public SharedPtrRegistry { public: @@ -324,17 +323,6 @@ TEST_F(SharedPtrRegistry_destructor, destructor) { EXPECT_FALSE(registry.lookup(key)); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - // Local Variables: // compile-command: "cd ../.. ; make unittest_sharedptr_registry && ./unittest_sharedptr_registry # --gtest_filter=*.* --log-to-stderr=true" // End: diff --git a/src/test/compressor/test_compression_plugin.cc b/src/test/compressor/test_compression_plugin.cc index 45cffafaf31..6f2ce80f915 100644 --- a/src/test/compressor/test_compression_plugin.cc +++ b/src/test/compressor/test_compression_plugin.cc @@ -18,10 +18,10 @@ #include #include #include -#include -#include "global/global_init.h" +#include "gtest/gtest.h" #include "compressor/CompressionPlugin.h" #include "common/ceph_argparse.h" +#include "global/global_init.h" #include "global/global_context.h" #include "common/config.h" @@ -51,7 +51,10 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/compressor/test_compression_plugin_snappy.cc b/src/test/compressor/test_compression_plugin_snappy.cc index 9e733f4396f..c3be2c3b45c 100644 --- a/src/test/compressor/test_compression_plugin_snappy.cc +++ b/src/test/compressor/test_compression_plugin_snappy.cc @@ -17,10 +17,10 @@ #include #include #include -#include -#include "global/global_init.h" +#include "gtest/gtest.h" #include "compressor/Compressor.h" #include "common/ceph_argparse.h" +#include "global/global_init.h" #include "global/global_context.h" #include "common/config.h" @@ -35,7 +35,10 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/compressor/test_compression_plugin_zlib.cc b/src/test/compressor/test_compression_plugin_zlib.cc index 5af5d14aa3c..529f3c90aff 100644 --- a/src/test/compressor/test_compression_plugin_zlib.cc +++ b/src/test/compressor/test_compression_plugin_zlib.cc @@ -17,10 +17,10 @@ #include #include #include -#include -#include "global/global_init.h" +#include "gtest/gtest.h" #include "compressor/Compressor.h" #include "common/ceph_argparse.h" +#include "global/global_init.h" #include "global/global_context.h" #include "common/config.h" @@ -34,7 +34,10 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/compressor/test_compression_snappy.cc b/src/test/compressor/test_compression_snappy.cc index bbd315cf308..9bdfb34b411 100644 --- a/src/test/compressor/test_compression_snappy.cc +++ b/src/test/compressor/test_compression_snappy.cc @@ -16,12 +16,11 @@ #include #include -#include -#include "global/global_init.h" #include "compressor/snappy/SnappyCompressor.h" #include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" +#include "test/unit.h" TEST(SnappyCompressor, compress_decompress) { @@ -70,21 +69,6 @@ TEST(SnappyCompressor, sharded_input_decompress) EXPECT_EQ(res, 0); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("plugin_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/compressor/test_compression_zlib.cc b/src/test/compressor/test_compression_zlib.cc index 6ba64452f9b..34252197e44 100644 --- a/src/test/compressor/test_compression_zlib.cc +++ b/src/test/compressor/test_compression_zlib.cc @@ -17,12 +17,11 @@ #include #include #include -#include -#include "global/global_init.h" #include "compressor/zlib/CompressionZlib.h" #include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" +#include "test/unit.h" TEST(CompressionZlib, compress_decompress) { @@ -62,21 +61,6 @@ TEST(CompressionZlib, compress_decompress_chunk) EXPECT_TRUE(exp.contents_equal(after)); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("compression_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/crush/CrushWrapper.cc b/src/test/crush/CrushWrapper.cc index 035be924c3d..3d7e152b27e 100644 --- a/src/test/crush/CrushWrapper.cc +++ b/src/test/crush/CrushWrapper.cc @@ -948,7 +948,8 @@ int main(int argc, char **argv) { vector def_args; def_args.push_back("--debug-crush=0"); - global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); diff --git a/src/test/crush/crush.cc b/src/test/crush/crush.cc index c46fa87ab54..997a2dfbcb8 100644 --- a/src/test/crush/crush.cc +++ b/src/test/crush/crush.cc @@ -12,12 +12,10 @@ #include #include "include/stringify.h" -#include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "global/global_context.h" #include "crush/CrushWrapper.h" #include "osd/osd_types.h" +#include "test/unit.h" #include @@ -635,16 +633,3 @@ TEST(CRUSH, straw2_reweight) { cout << " vs " << estddev << std::endl; } } - - - -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/src/test/crypto_init.cc b/src/test/crypto_init.cc index d4b256217b4..781175ebd18 100644 --- a/src/test/crypto_init.cc +++ b/src/test/crypto_init.cc @@ -23,8 +23,9 @@ void *init_crypto(void *p) { // multiple times simultaneously from different threads. TEST(CRYPTO_INIT, NSS_RACE) { std::vector args; - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); // Most reliably reproduced with more threads than cores. long n_thread = sysconf(_SC_NPROCESSORS_ONLN) * 2; pthread_t *ts = (pthread_t*)malloc(n_thread * sizeof(pthread_t)); diff --git a/src/test/erasure-code/TestErasureCode.cc b/src/test/erasure-code/TestErasureCode.cc index 56759c4af18..add9c671ce7 100644 --- a/src/test/erasure-code/TestErasureCode.cc +++ b/src/test/erasure-code/TestErasureCode.cc @@ -17,12 +17,11 @@ #include #include -#include "global/global_init.h" #include "erasure-code/ErasureCode.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" class ErasureCodeTest : public ErasureCode { public: @@ -153,22 +152,6 @@ TEST(ErasureCodeTest, encode_misaligned_non_contiguous) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; diff --git a/src/test/erasure-code/TestErasureCodeExample.cc b/src/test/erasure-code/TestErasureCodeExample.cc index eff590f479c..cabf0765380 100644 --- a/src/test/erasure-code/TestErasureCodeExample.cc +++ b/src/test/erasure-code/TestErasureCodeExample.cc @@ -16,11 +16,11 @@ #include #include "include/stringify.h" -#include "global/global_init.h" #include "ErasureCodeExample.h" #include "common/ceph_argparse.h" #include "global/global_context.h" #include "gtest/gtest.h" +#include "test/unit.h" TEST(ErasureCodeExample, chunk_size) { @@ -234,21 +234,6 @@ TEST(ErasureCodeExample, create_ruleset) EXPECT_EQ(0, example.create_ruleset("myrule", *c, &ss)); } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; diff --git a/src/test/erasure-code/TestErasureCodeIsa.cc b/src/test/erasure-code/TestErasureCodeIsa.cc index 9c01e951c68..a8c9a629811 100644 --- a/src/test/erasure-code/TestErasureCodeIsa.cc +++ b/src/test/erasure-code/TestErasureCodeIsa.cc @@ -20,13 +20,13 @@ #include "crush/CrushWrapper.h" #include "include/stringify.h" -#include "global/global_init.h" #include "erasure-code/isa/ErasureCodeIsa.h" #include "erasure-code/isa/xor_op.h" #include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" ErasureCodeIsaTableCache tcache; @@ -955,22 +955,6 @@ TEST_F(IsaErasureCodeTest, create_ruleset) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **) argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 unittest_erasure_code_isa && diff --git a/src/test/erasure-code/TestErasureCodeJerasure.cc b/src/test/erasure-code/TestErasureCodeJerasure.cc index 52d7c685e84..db0b65fccc3 100644 --- a/src/test/erasure-code/TestErasureCodeJerasure.cc +++ b/src/test/erasure-code/TestErasureCodeJerasure.cc @@ -20,12 +20,12 @@ #include "crush/CrushWrapper.h" #include "include/stringify.h" -#include "global/global_init.h" #include "erasure-code/jerasure/ErasureCodeJerasure.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" + template class ErasureCodeTest : public ::testing::Test { @@ -357,22 +357,6 @@ TEST(ErasureCodeTest, create_ruleset) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; diff --git a/src/test/erasure-code/TestErasureCodeLrc.cc b/src/test/erasure-code/TestErasureCodeLrc.cc index b9452310af6..9057a882f5e 100644 --- a/src/test/erasure-code/TestErasureCodeLrc.cc +++ b/src/test/erasure-code/TestErasureCodeLrc.cc @@ -21,12 +21,12 @@ #include "crush/CrushWrapper.h" #include "common/config.h" #include "include/stringify.h" -#include "global/global_init.h" #include "erasure-code/lrc/ErasureCodeLrc.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" + TEST(ErasureCodeLrc, parse_ruleset) { @@ -908,22 +908,6 @@ TEST(ErasureCodeLrc, encode_decode_2) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; diff --git a/src/test/erasure-code/TestErasureCodePlugin.cc b/src/test/erasure-code/TestErasureCodePlugin.cc index 45f1b281680..8729f553d65 100644 --- a/src/test/erasure-code/TestErasureCodePlugin.cc +++ b/src/test/erasure-code/TestErasureCodePlugin.cc @@ -19,12 +19,12 @@ #include #include #include "common/Thread.h" -#include "global/global_init.h" #include "erasure-code/ErasureCodePlugin.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" + class ErasureCodePluginRegistryTest : public ::testing::Test { protected: @@ -126,21 +126,6 @@ TEST_F(ErasureCodePluginRegistryTest, all) } } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/erasure-code/TestErasureCodePluginIsa.cc b/src/test/erasure-code/TestErasureCodePluginIsa.cc index 1044017df95..b469596abc9 100644 --- a/src/test/erasure-code/TestErasureCodePluginIsa.cc +++ b/src/test/erasure-code/TestErasureCodePluginIsa.cc @@ -22,6 +22,7 @@ #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" TEST(ErasureCodePlugin, factory) { @@ -52,22 +53,6 @@ TEST(ErasureCodePlugin, factory) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/erasure-code/TestErasureCodePluginJerasure.cc b/src/test/erasure-code/TestErasureCodePluginJerasure.cc index f43f296b1fc..0c399f078f2 100644 --- a/src/test/erasure-code/TestErasureCodePluginJerasure.cc +++ b/src/test/erasure-code/TestErasureCodePluginJerasure.cc @@ -20,12 +20,11 @@ #include "arch/probe.h" #include "arch/intel.h" #include "arch/arm.h" -#include "global/global_init.h" #include "erasure-code/ErasureCodePlugin.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" TEST(ErasureCodePlugin, factory) { @@ -249,22 +248,6 @@ TEST(ErasureCodePlugin, sse) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/erasure-code/TestErasureCodePluginLrc.cc b/src/test/erasure-code/TestErasureCodePluginLrc.cc index f88d1cd4fa3..5c2e618372b 100644 --- a/src/test/erasure-code/TestErasureCodePluginLrc.cc +++ b/src/test/erasure-code/TestErasureCodePluginLrc.cc @@ -19,12 +19,12 @@ #include #include "arch/probe.h" #include "arch/intel.h" -#include "global/global_init.h" #include "erasure-code/ErasureCodePlugin.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" #include "gtest/gtest.h" +#include "test/unit.h" + TEST(ErasureCodePlugin, factory) { @@ -40,22 +40,6 @@ TEST(ErasureCodePlugin, factory) EXPECT_TRUE(erasure_code.get()); } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/erasure-code/TestErasureCodePluginShec.cc b/src/test/erasure-code/TestErasureCodePluginShec.cc index 39d552b0111..2f04637d1d6 100644 --- a/src/test/erasure-code/TestErasureCodePluginShec.cc +++ b/src/test/erasure-code/TestErasureCodePluginShec.cc @@ -21,12 +21,10 @@ #include "arch/probe.h" #include "arch/intel.h" #include "arch/arm.h" -#include "global/global_init.h" #include "erasure-code/ErasureCodePlugin.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "common/config.h" -#include "gtest/gtest.h" +#include "test/unit.h" TEST(ErasureCodePlugin, factory) { @@ -245,22 +243,6 @@ TEST(ErasureCodePlugin, sse) } } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make -j4 && diff --git a/src/test/erasure-code/TestErasureCodeShec.cc b/src/test/erasure-code/TestErasureCodeShec.cc index 8da9e69850a..b48fe2a82a5 100644 --- a/src/test/erasure-code/TestErasureCodeShec.cc +++ b/src/test/erasure-code/TestErasureCodeShec.cc @@ -31,6 +31,7 @@ #include "common/ceph_argparse.h" #include "global/global_context.h" #include "gtest/gtest.h" +#include "test/unit.h" void* thread1(void* pParam); void* thread2(void* pParam); @@ -2667,22 +2668,6 @@ TEST(ErasureCodeShec, get_chunk_size_1_2) delete profile; } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **) argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - void* thread1(void* pParam) { ErasureCodeShec* shec = (ErasureCodeShec*) pParam; diff --git a/src/test/erasure-code/TestErasureCodeShec_all.cc b/src/test/erasure-code/TestErasureCodeShec_all.cc index c8715ebe516..7937906d355 100644 --- a/src/test/erasure-code/TestErasureCodeShec_all.cc +++ b/src/test/erasure-code/TestErasureCodeShec_all.cc @@ -294,7 +294,8 @@ int main(int argc, char **argv) vector args; argv_to_vec(argc, (const char **) argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/erasure-code/TestErasureCodeShec_arguments.cc b/src/test/erasure-code/TestErasureCodeShec_arguments.cc index ea68ab24b0b..005fe7de512 100644 --- a/src/test/erasure-code/TestErasureCodeShec_arguments.cc +++ b/src/test/erasure-code/TestErasureCodeShec_arguments.cc @@ -393,7 +393,8 @@ int main(int argc, char **argv) vector args; argv_to_vec(argc, (const char **) argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/erasure-code/TestErasureCodeShec_thread.cc b/src/test/erasure-code/TestErasureCodeShec_thread.cc index 3adab597b87..6060fb7c24a 100644 --- a/src/test/erasure-code/TestErasureCodeShec_thread.cc +++ b/src/test/erasure-code/TestErasureCodeShec_thread.cc @@ -25,12 +25,11 @@ #include "crush/CrushWrapper.h" #include "osd/osd_types.h" #include "include/stringify.h" -#include "global/global_init.h" #include "erasure-code/shec/ErasureCodeShec.h" #include "erasure-code/ErasureCodePlugin.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "gtest/gtest.h" +#include "test/unit.h" void* thread1(void* pParam); @@ -86,22 +85,6 @@ TEST(ErasureCodeShec, thread) pthread_join(tid5, NULL); } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **) argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - const char* env = getenv("CEPH_LIB"); - std::string directory(env ? env : "lib"); - g_conf->set_val("erasure_code_dir", directory, false, false); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - void* thread1(void* pParam) { TestParam* param = static_cast(pParam); diff --git a/src/test/erasure-code/ceph_erasure_code.cc b/src/test/erasure-code/ceph_erasure_code.cc index aaa4304b9b7..8ed2b0ce49e 100644 --- a/src/test/erasure-code/ceph_erasure_code.cc +++ b/src/test/erasure-code/ceph_erasure_code.cc @@ -82,7 +82,7 @@ int ErasureCodeCommand::setup(int argc, char** argv) { ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); diff --git a/src/test/erasure-code/ceph_erasure_code_benchmark.cc b/src/test/erasure-code/ceph_erasure_code_benchmark.cc index 31a73d45a9f..01250cc774b 100644 --- a/src/test/erasure-code/ceph_erasure_code_benchmark.cc +++ b/src/test/erasure-code/ceph_erasure_code_benchmark.cc @@ -81,7 +81,7 @@ int ErasureCodeBench::setup(int argc, char** argv) { ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); diff --git a/src/test/erasure-code/ceph_erasure_code_non_regression.cc b/src/test/erasure-code/ceph_erasure_code_non_regression.cc index 7b0fa2fe72d..46249998a66 100644 --- a/src/test/erasure-code/ceph_erasure_code_non_regression.cc +++ b/src/test/erasure-code/ceph_erasure_code_non_regression.cc @@ -44,6 +44,7 @@ class ErasureCodeNonRegression { string base; string directory; ErasureCodeProfile profile; + boost::intrusive_ptr cct; public: int setup(int argc, char** argv); int run(); @@ -94,10 +95,9 @@ int ErasureCodeNonRegression::setup(int argc, char** argv) { ceph_options.push_back(i->c_str()); } - global_init( - &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, - CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + cct = global_init(&def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); const char* env = getenv("CEPH_LIB"); diff --git a/src/test/filestore/TestFileStore.cc b/src/test/filestore/TestFileStore.cc index a100a5f3a69..6d857be4116 100644 --- a/src/test/filestore/TestFileStore.cc +++ b/src/test/filestore/TestFileStore.cc @@ -68,7 +68,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val("osd_journal_size", "100"); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/journal/test_main.cc b/src/test/journal/test_main.cc index f8c7d3eea1b..66163e5f921 100644 --- a/src/test/journal/test_main.cc +++ b/src/test/journal/test_main.cc @@ -16,11 +16,11 @@ int main(int argc, char **argv) std::vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); g_conf->set_val("lockdep", "true"); common_init_finish(g_ceph_context); int r = RUN_ALL_TESTS(); - g_ceph_context->put(); return r; } diff --git a/src/test/librados/list.cc b/src/test/librados/list.cc index 60b97b52ea4..b1d09a36a6e 100644 --- a/src/test/librados/list.cc +++ b/src/test/librados/list.cc @@ -6,9 +6,7 @@ #include "test/librados/test.h" #include "test/librados/TestCase.h" #include "global/global_context.h" -#include "global/global_init.h" -#include "common/ceph_argparse.h" -#include "common/common_init.h" +#include "test/unit.h" #include "include/types.h" #include "common/hobject.h" @@ -960,18 +958,3 @@ TEST_F(LibRadosListPP, EnumerateObjectsFilterPP) { #pragma GCC diagnostic pop #pragma GCC diagnostic warning "-Wpragmas" - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args); - cout << args << std::endl; - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/librados/misc.cc b/src/test/librados/misc.cc index 3212e03ee3c..9d8c76c7fab 100644 --- a/src/test/librados/misc.cc +++ b/src/test/librados/misc.cc @@ -9,8 +9,6 @@ #include "include/rados/librados.hpp" #include "include/stringify.h" #include "global/global_context.h" -#include "global/global_init.h" -#include "common/ceph_argparse.h" #include "common/common_init.h" #include "test/librados/test.h" #include "test/librados/TestCase.h" @@ -19,6 +17,8 @@ #include #include #include +#include "test/unit.h" + using namespace librados; using std::map; @@ -944,18 +944,3 @@ TEST_F(LibRadosMiscPP, CopyScrubPP) { cout << "done waiting" << std::endl; } } - - - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/librados/tier.cc b/src/test/librados/tier.cc index 3f9a5b33d10..fe93ecc83a9 100755 --- a/src/test/librados/tier.cc +++ b/src/test/librados/tier.cc @@ -10,13 +10,11 @@ #include "include/stringify.h" #include "include/types.h" #include "global/global_context.h" -#include "global/global_init.h" -#include "common/ceph_argparse.h" -#include "common/common_init.h" #include "common/Cond.h" #include "test/librados/test.h" #include "test/librados/TestCase.h" #include "json_spirit/json_spirit.h" +#include "test/unit.h" #include "osd/HitSet.h" @@ -5347,17 +5345,3 @@ TEST_F(LibRadosTwoPoolsECPP, CachePin) { // wait for maps to settle before next test cluster.wait_for_latest_osdmap(); } - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args), - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/mds/TestMDSAuthCaps.cc b/src/test/mds/TestMDSAuthCaps.cc index 919095d9d2f..123a214e73c 100644 --- a/src/test/mds/TestMDSAuthCaps.cc +++ b/src/test/mds/TestMDSAuthCaps.cc @@ -16,9 +16,7 @@ #include "include/stringify.h" #include "mds/MDSAuthCaps.h" -#include "common/ceph_argparse.h" -#include "common/common_init.h" -#include "global/global_init.h" +#include "test/unit.h" #include "gtest/gtest.h" @@ -244,17 +242,3 @@ TEST(MDSAuthCaps, OutputParsed) { ASSERT_EQ(test_values[i].output, stringify(cap)); } } - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args, NULL); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/mds/TestSessionFilter.cc b/src/test/mds/TestSessionFilter.cc index 2d058da41a0..5682281259e 100644 --- a/src/test/mds/TestSessionFilter.cc +++ b/src/test/mds/TestSessionFilter.cc @@ -16,9 +16,7 @@ #include "include/stringify.h" #include "mds/SessionMap.h" -#include "common/ceph_argparse.h" -#include "common/common_init.h" -#include "global/global_init.h" +#include "test/unit.h" #include "gtest/gtest.h" @@ -149,14 +147,3 @@ TEST(MDSSessionFilter, ReconnectingEquality) ASSERT_FALSE(filter.match(*a, [](client_t c) -> bool {return false;})); a->put(); } - -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/src/test/messenger/simple_client.cc b/src/test/messenger/simple_client.cc index a63cb2804bc..f0535eff204 100644 --- a/src/test/messenger/simple_client.cc +++ b/src/test/messenger/simple_client.cc @@ -69,8 +69,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_ANY, CODE_ENVIRONMENT_UTILITY, - 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_ANY, + CODE_ENVIRONMENT_UTILITY, + 0); for (arg_iter = args.begin(); arg_iter != args.end();) { if (ceph_argparse_witharg(args, arg_iter, &val, "--addr", diff --git a/src/test/messenger/simple_server.cc b/src/test/messenger/simple_server.cc index 674ef3e948d..a88c940454e 100644 --- a/src/test/messenger/simple_server.cc +++ b/src/test/messenger/simple_server.cc @@ -52,8 +52,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_ANY, CODE_ENVIRONMENT_DAEMON, - 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_ANY, + CODE_ENVIRONMENT_DAEMON, + 0); for (arg_iter = args.begin(); arg_iter != args.end();) { if (ceph_argparse_witharg(args, arg_iter, &val, "--addr", diff --git a/src/test/messenger/xio_client.cc b/src/test/messenger/xio_client.cc index 414668f37e8..7586b9674ed 100644 --- a/src/test/messenger/xio_client.cc +++ b/src/test/messenger/xio_client.cc @@ -75,8 +75,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, - CEPH_ENTITY_TYPE_ANY, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_ANY, + CODE_ENVIRONMENT_UTILITY, 0); for (arg_iter = args.begin(); arg_iter != args.end();) { if (ceph_argparse_witharg(args, arg_iter, &val, "--addr", diff --git a/src/test/mon/PGMap.cc b/src/test/mon/PGMap.cc index f13fa893666..beedbbb2c89 100644 --- a/src/test/mon/PGMap.cc +++ b/src/test/mon/PGMap.cc @@ -14,9 +14,8 @@ #include "mon/PGMap.h" #include "gtest/gtest.h" -#include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "global/global_context.h" +#include "include/stringify.h" +#include "test/unit.h" TEST(pgmap, min_last_epoch_clean) { @@ -115,15 +114,3 @@ TEST(pgmap, calc_stats) ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean()); } } - -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args); - - vector def_args; - global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/src/test/mon/test-mon-msg.cc b/src/test/mon/test-mon-msg.cc index 3e4e0505ded..e77bba5c57e 100644 --- a/src/test/mon/test-mon-msg.cc +++ b/src/test/mon/test-mon-msg.cc @@ -321,13 +321,12 @@ TEST_F(MonMsgTest, MMonJoin) int main(int argc, char *argv[]) { - vector def_args; vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(&def_args, args, - CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - 0); + auto cct = global_init(nullptr, args, + CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); ::testing::InitGoogleTest(&argc, argv); diff --git a/src/test/mon/test_mon_workloadgen.cc b/src/test/mon/test_mon_workloadgen.cc index 4ad26c31e1f..43a03c66bd7 100644 --- a/src/test/mon/test_mon_workloadgen.cc +++ b/src/test/mon/test_mon_workloadgen.cc @@ -995,9 +995,9 @@ int main(int argc, const char *argv[]) our_name = argv[0]; argv_to_vec(argc, argv, args); - global_init(&def_args, args, - CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, - 0); + auto cct = global_init(&def_args, args, + CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/msgr/perf_msgr_client.cc b/src/test/msgr/perf_msgr_client.cc index 1cb3db2ce79..eb5434900be 100644 --- a/src/test/msgr/perf_msgr_client.cc +++ b/src/test/msgr/perf_msgr_client.cc @@ -172,7 +172,8 @@ int main(int argc, char **argv) vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/msgr/perf_msgr_server.cc b/src/test/msgr/perf_msgr_server.cc index dde679c433e..7b31adc3bf5 100644 --- a/src/test/msgr/perf_msgr_server.cc +++ b/src/test/msgr/perf_msgr_server.cc @@ -144,7 +144,8 @@ int main(int argc, char **argv) vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/msgr/test_async_driver.cc b/src/test/msgr/test_async_driver.cc index 59ac8bf6a33..bdcd1ca7e27 100644 --- a/src/test/msgr/test_async_driver.cc +++ b/src/test/msgr/test_async_driver.cc @@ -52,9 +52,11 @@ #include "msg/async/EventKqueue.h" #endif #include "msg/async/EventSelect.h" +#include "test/unit.h" #include + #if GTEST_HAS_PARAM_TEST class EventDriverTest : public ::testing::TestWithParam { @@ -349,17 +351,6 @@ TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {} #endif -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: * compile-command: "cd ../.. ; make ceph_test_async_driver && diff --git a/src/test/msgr/test_msgr.cc b/src/test/msgr/test_msgr.cc index 43f1060c7cd..37549227fc9 100644 --- a/src/test/msgr/test_msgr.cc +++ b/src/test/msgr/test_msgr.cc @@ -1432,7 +1432,7 @@ int main(int argc, char **argv) { argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); g_ceph_context->_conf->set_val("auth_cluster_required", "none"); g_ceph_context->_conf->set_val("auth_service_required", "none"); g_ceph_context->_conf->set_val("auth_client_required", "none"); diff --git a/src/test/objectstore/ObjectStoreTransactionBenchmark.cc b/src/test/objectstore/ObjectStoreTransactionBenchmark.cc index 46fd25dcebb..279b10b9969 100644 --- a/src/test/objectstore/ObjectStoreTransactionBenchmark.cc +++ b/src/test/objectstore/ObjectStoreTransactionBenchmark.cc @@ -246,7 +246,8 @@ int main(int argc, char **argv) vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); Cycles::init(); diff --git a/src/test/objectstore/TestRocksdbOptionParse.cc b/src/test/objectstore/TestRocksdbOptionParse.cc index f89e27e02e5..8cc40efffbc 100644 --- a/src/test/objectstore/TestRocksdbOptionParse.cc +++ b/src/test/objectstore/TestRocksdbOptionParse.cc @@ -1,12 +1,12 @@ #include #include "include/Context.h" -#include "common/ceph_argparse.h" -#include "global/global_init.h" #include "rocksdb/db.h" #include "rocksdb/env.h" #include "rocksdb/thread_status.h" #include "kv/RocksDBStore.h" +#include "test/unit.h" #include + using namespace std; const string dir("store_test_temp_dir"); @@ -73,13 +73,3 @@ TEST(RocksDBOption, interpret) { //high pri threads is flusher_threads ASSERT_EQ(5, num_high_pri_threads); } - -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/src/test/objectstore/chain_xattr.cc b/src/test/objectstore/chain_xattr.cc index d3b4b1e9eea..5244f0415f4 100644 --- a/src/test/objectstore/chain_xattr.cc +++ b/src/test/objectstore/chain_xattr.cc @@ -377,7 +377,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val("err_to_stderr", "false"); g_ceph_context->_conf->set_val("log_to_stderr", "false"); diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index bdf027e8afc..5ab011ad17d 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -3676,7 +3676,8 @@ int main(int argc, char **argv) { argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val("osd_journal_size", "400"); g_ceph_context->_conf->set_val("filestore_index_retry_probability", "0.5"); @@ -3694,9 +3695,7 @@ int main(int argc, char **argv) { g_ceph_context->_conf->apply_changes(NULL); ::testing::InitGoogleTest(&argc, argv); - int r = RUN_ALL_TESTS(); - g_ceph_context->put(); - return r; + return RUN_ALL_TESTS(); } /* diff --git a/src/test/objectstore/test_bluefs.cc b/src/test/objectstore/test_bluefs.cc index 41bcf99cc67..7dd1009d713 100644 --- a/src/test/objectstore/test_bluefs.cc +++ b/src/test/objectstore/test_bluefs.cc @@ -136,7 +136,13 @@ int main(int argc, char **argv) { argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + vector def_args; + def_args.push_back("--debug-bluefs=1/20"); + def_args.push_back("--debug-bdev=1/20"); + + auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val( "enable_experimental_unrecoverable_data_corrupting_features", diff --git a/src/test/objectstore/test_idempotent.cc b/src/test/objectstore/test_idempotent.cc index edb8e9b3bfc..6b465b12f27 100644 --- a/src/test/objectstore/test_idempotent.cc +++ b/src/test/objectstore/test_idempotent.cc @@ -45,7 +45,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/objectstore/test_idempotent_sequence.cc b/src/test/objectstore/test_idempotent_sequence.cc index 75ebc3377d3..0216b78f334 100644 --- a/src/test/objectstore/test_idempotent_sequence.cc +++ b/src/test/objectstore/test_idempotent_sequence.cc @@ -203,9 +203,9 @@ int main(int argc, const char *argv[]) our_name = argv[0]; argv_to_vec(argc, argv, args); - global_init(&def_args, args, - CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(&def_args, args, + CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/objectstore/test_kv.cc b/src/test/objectstore/test_kv.cc index 06c45e0cb7e..c481055e24c 100644 --- a/src/test/objectstore/test_kv.cc +++ b/src/test/objectstore/test_kv.cc @@ -182,7 +182,8 @@ int main(int argc, char **argv) { argv_to_vec(argc, (const char **)argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->set_val( "enable_experimental_unrecoverable_data_corrupting_features", diff --git a/src/test/objectstore/workload_generator.cc b/src/test/objectstore/workload_generator.cc index bbe3c74675e..2c55fb27bc0 100644 --- a/src/test/objectstore/workload_generator.cc +++ b/src/test/objectstore/workload_generator.cc @@ -568,9 +568,9 @@ int main(int argc, const char *argv[]) // def_args.push_back("workload_gen_dir/journal"); argv_to_vec(argc, argv, args); - global_init(&def_args, args, - CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(&def_args, args, + CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); diff --git a/src/test/objectstore_bench.cc b/src/test/objectstore_bench.cc index 5ec8503fe30..72c43a48ca3 100644 --- a/src/test/objectstore_bench.cc +++ b/src/test/objectstore_bench.cc @@ -155,7 +155,8 @@ int main(int argc, const char *argv[]) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(nullptr, args, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(nullptr, args, CEPH_ENTITY_TYPE_OSD, + CODE_ENVIRONMENT_UTILITY, 0); std::string val; vector::iterator i = args.begin(); diff --git a/src/test/os/TestLFNIndex.cc b/src/test/os/TestLFNIndex.cc index 1ff2e4d8bd2..c377fe482a6 100644 --- a/src/test/os/TestLFNIndex.cc +++ b/src/test/os/TestLFNIndex.cc @@ -450,7 +450,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); diff --git a/src/test/osd/TestOSDMap.cc b/src/test/osd/TestOSDMap.cc index 0b50b32858c..4349ce2846f 100644 --- a/src/test/osd/TestOSDMap.cc +++ b/src/test/osd/TestOSDMap.cc @@ -11,10 +11,10 @@ using namespace std; int main(int argc, char **argv) { - std::vector preargs; std::vector args(argv, argv+argc); - global_init(&preargs, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(nullptr, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); // make sure we have 3 copies, or some tests won't work g_ceph_context->_conf->set_val("osd_pool_default_size", "3", false); diff --git a/src/test/osd/TestOSDScrub.cc b/src/test/osd/TestOSDScrub.cc index a5da6dc6c98..da886d8a50c 100644 --- a/src/test/osd/TestOSDScrub.cc +++ b/src/test/osd/TestOSDScrub.cc @@ -21,13 +21,13 @@ #include #include +#include #include "osd/OSD.h" #include "os/ObjectStore.h" #include "mon/MonClient.h" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include #include "msg/Messenger.h" +#include "test/unit.h" class TestOSDScrub: public OSD { @@ -141,17 +141,6 @@ TEST(TestOSDScrub, scrub_time_permit) { } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - // Local Variables: // compile-command: "cd ../.. ; make unittest_osdscrub ; ./unittest_osdscrub --log-to-stderr=true --debug-osd=20 # --gtest_filter=*.* " // End: diff --git a/src/test/osd/TestPGLog.cc b/src/test/osd/TestPGLog.cc index 34d13133a0c..dba4f074ee7 100644 --- a/src/test/osd/TestPGLog.cc +++ b/src/test/osd/TestPGLog.cc @@ -23,9 +23,7 @@ #include #include "osd/PGLog.h" #include "osd/OSDMap.h" -#include "common/ceph_argparse.h" -#include "global/global_init.h" -#include +#include "test/unit.h" class PGLogTest : public ::testing::Test, protected PGLog { public: @@ -2047,17 +2045,6 @@ TEST_F(PGLogTest, filter_log_1) { } } -int main(int argc, char **argv) { - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - // Local Variables: // compile-command: "cd ../.. ; make unittest_pglog ; ./unittest_pglog --log-to-stderr=true --debug-osd=20 # --gtest_filter=*.* " // End: diff --git a/src/test/osdc/object_cacher_stress.cc b/src/test/osdc/object_cacher_stress.cc index a753295e212..a002ee5c8dc 100644 --- a/src/test/osdc/object_cacher_stress.cc +++ b/src/test/osdc/object_cacher_stress.cc @@ -355,7 +355,8 @@ int main(int argc, const char **argv) std::vector args; argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); long long delay_ns = 0; long long num_ops = 1000; diff --git a/src/test/perf_counters.cc b/src/test/perf_counters.cc index a916cf08da3..00d8679a76d 100644 --- a/src/test/perf_counters.cc +++ b/src/test/perf_counters.cc @@ -50,8 +50,9 @@ int main(int argc, char **argv) { preargs.push_back("--admin-socket"); preargs.push_back(get_rand_socket_path()); std::vector args; - global_init(&preargs, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(&preargs, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); diff --git a/src/test/perf_local.cc b/src/test/perf_local.cc index 7c33dc5d454..2d1cd41c538 100644 --- a/src/test/perf_local.cc +++ b/src/test/perf_local.cc @@ -1018,7 +1018,8 @@ int main(int argc, char *argv[]) vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); Cycles::init(); diff --git a/src/test/rbd_mirror/random_write.cc b/src/test/rbd_mirror/random_write.cc index 61c463b1bd4..9ad4cd01899 100644 --- a/src/test/rbd_mirror/random_write.cc +++ b/src/test/rbd_mirror/random_write.cc @@ -155,7 +155,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); for (auto i = args.begin(); i != args.end(); ++i) { if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) { @@ -182,33 +183,29 @@ int main(int argc, const char **argv) int r = rados.init_with_context(g_ceph_context); if (r < 0) { derr << "could not initialize RADOS handle" << dendl; - goto cleanup; + return EXIT_FAILURE; } r = rados.connect(); if (r < 0) { derr << "error connecting to local cluster" << dendl; - goto cleanup; + return EXIT_FAILURE; } r = rados.ioctx_create(pool_name.c_str(), io_ctx); if (r < 0) { derr << "error finding local pool " << pool_name << ": " << cpp_strerror(r) << dendl; - goto cleanup; + return EXIT_FAILURE; } r = rbd.open(io_ctx, image, image_name.c_str()); if (r < 0) { derr << "error opening image " << image_name << ": " << cpp_strerror(r) << dendl; - goto cleanup; + return EXIT_FAILURE; } write_image(image); - - cleanup: - g_ceph_context->put(); - - return r < 0 ? EXIT_SUCCESS : EXIT_FAILURE; + return EXIT_SUCCESS; } diff --git a/src/test/rgw/test_rgw_period_history.cc b/src/test/rgw/test_rgw_period_history.cc index 320f550dfab..efedd269c48 100644 --- a/src/test/rgw/test_rgw_period_history.cc +++ b/src/test/rgw/test_rgw_period_history.cc @@ -322,7 +322,8 @@ int main(int argc, char** argv) vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); ::testing::InitGoogleTest(&argc, argv); diff --git a/src/test/test_arch.cc b/src/test/test_arch.cc index e2c225b20ac..e215e703333 100644 --- a/src/test/test_arch.cc +++ b/src/test/test_arch.cc @@ -19,10 +19,10 @@ #include "arch/probe.h" #include "arch/intel.h" #include "arch/arm.h" -#include "global/global_init.h" -#include "common/ceph_argparse.h" #include "global/global_context.h" #include "gtest/gtest.h" +#include "test/unit.h" + #define FLAGS_SIZE 4096 @@ -84,18 +84,6 @@ TEST(Arch, all) #endif } -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - /* * Local Variables: diff --git a/src/test/test_cors.cc b/src/test/test_cors.cc index 12cb43a6fab..b03a2361d98 100644 --- a/src/test/test_cors.cc +++ b/src/test/test_cors.cc @@ -883,7 +883,8 @@ int main(int argc, char *argv[]){ vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_test = new test_cors_helper(); finisher = new Finisher(g_ceph_context); diff --git a/src/test/test_filejournal.cc b/src/test/test_filejournal.cc index 8a1172c3cc4..0d3c818fbb4 100644 --- a/src/test/test_filejournal.cc +++ b/src/test/test_filejournal.cc @@ -70,7 +70,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); char mb[10]; diff --git a/src/test/test_mutate.cc b/src/test/test_mutate.cc index b9e0d717664..a8d83d5708c 100644 --- a/src/test/test_mutate.cc +++ b/src/test/test_mutate.cc @@ -44,7 +44,8 @@ int main(int argc, const char **argv) vector args; argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); string val; diff --git a/src/test/test_rgw_admin_log.cc b/src/test/test_rgw_admin_log.cc index 4f5affe9fa0..a7be06cfefb 100644 --- a/src/test/test_rgw_admin_log.cc +++ b/src/test/test_rgw_admin_log.cc @@ -1572,7 +1572,8 @@ int main(int argc, char *argv[]){ vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_test = new admin_log::test_helper(); finisher = new Finisher(g_ceph_context); diff --git a/src/test/test_rgw_admin_meta.cc b/src/test/test_rgw_admin_meta.cc index 063b9ea88fc..0d61c18e705 100644 --- a/src/test/test_rgw_admin_meta.cc +++ b/src/test/test_rgw_admin_meta.cc @@ -908,7 +908,8 @@ int main(int argc, char *argv[]){ vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_test = new admin_meta::test_helper(); finisher = new Finisher(g_ceph_context); diff --git a/src/test/test_rgw_admin_opstate.cc b/src/test/test_rgw_admin_opstate.cc index 3499aa46abd..635abd3d277 100644 --- a/src/test/test_rgw_admin_opstate.cc +++ b/src/test/test_rgw_admin_opstate.cc @@ -805,7 +805,8 @@ int main(int argc, char *argv[]){ vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); store = RGWStoreManager::get_storage(g_ceph_context, false, false, false); g_test = new admin_log::test_helper(); diff --git a/src/test/test_snap_mapper.cc b/src/test/test_snap_mapper.cc index 93c87abe41c..fd919fa6023 100644 --- a/src/test/test_snap_mapper.cc +++ b/src/test/test_snap_mapper.cc @@ -4,15 +4,14 @@ #include #include #include +#include #include "include/buffer.h" #include "common/map_cacher.hpp" #include "osd/SnapMapper.h" -#include "global/global_init.h" -#include "common/ceph_argparse.h" +#include "test/unit.h" #include "gtest/gtest.h" -#include "stdlib.h" using namespace std; @@ -657,14 +656,3 @@ TEST_F(SnapMapperTest, MultiPG) { init(50); run(); } - -int main(int argc, char **argv) -{ - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/src/test/test_striper.cc b/src/test/test_striper.cc index 2e0c23fc678..cab2f727784 100644 --- a/src/test/test_striper.cc +++ b/src/test/test_striper.cc @@ -1,8 +1,6 @@ #include "gtest/gtest.h" #include "global/global_context.h" -#include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "common/common_init.h" +#include "test/unit.h" #include "osdc/Striper.h" @@ -73,18 +71,3 @@ TEST(Striper, GetNumObj) numobjs = Striper::get_num_objects(l, size); ASSERT_EQ(6u, numobjs); } - - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - env_to_vec(args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/test_trans.cc b/src/test/test_trans.cc index e671e47e04b..722ce889dda 100644 --- a/src/test/test_trans.cc +++ b/src/test/test_trans.cc @@ -38,7 +38,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); // args diff --git a/src/test/test_workqueue.cc b/src/test/test_workqueue.cc index c7ff4335472..83bbd64dafa 100644 --- a/src/test/test_workqueue.cc +++ b/src/test/test_workqueue.cc @@ -1,10 +1,8 @@ #include "gtest/gtest.h" #include "common/WorkQueue.h" -#include "global/global_context.h" #include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "common/common_init.h" +#include "test/unit.h" TEST(WorkQueue, StartStop) { @@ -56,17 +54,3 @@ TEST(WorkQueue, Resize) sleep(1); tp.stop(); } - - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - - vector args; - argv_to_vec(argc, (const char **)argv, args); - - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(g_ceph_context); - - return RUN_ALL_TESTS(); -} diff --git a/src/test/testkeys.cc b/src/test/testkeys.cc index 27c38124ade..ce0e4cbb69f 100644 --- a/src/test/testkeys.cc +++ b/src/test/testkeys.cc @@ -11,7 +11,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); KeyRing extra; KeyServer server(g_ceph_context, &extra); diff --git a/src/test/testmsgr.cc b/src/test/testmsgr.cc index e3610b56b3b..44e53f16a17 100644 --- a/src/test/testmsgr.cc +++ b/src/test/testmsgr.cc @@ -72,7 +72,8 @@ int main(int argc, const char **argv, const char *envp[]) { argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); dout(0) << "i am mon " << args[0] << dendl; diff --git a/src/test/unit.h b/src/test/unit.h index b1fb373ed43..5c877942b9f 100644 --- a/src/test/unit.h +++ b/src/test/unit.h @@ -18,7 +18,9 @@ #include "include/types.h" // FIXME: ordering shouldn't be important, but right // now, this include has to come before the others. +#include "common/ceph_argparse.h" #include "common/code_environment.h" +#include "common/config.h" #include "global/global_context.h" #include "global/global_init.h" #include "include/msgr.h" // for CEPH_ENTITY_TYPE_CLIENT @@ -32,10 +34,19 @@ * initialization for you. */ int main(int argc, char **argv) { - std::vector args; - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + std::vector args(argv, argv + argc); + env_to_vec(args); + auto cct = global_init(NULL, args, + CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); + + const char* env = getenv("CEPH_LIB"); + if (env) { + g_conf->set_val("erasure_code_dir", env, false, false); + g_conf->set_val("plugin_dir", env, false, false); + } + ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/src/test/xattr_bench.cc b/src/test/xattr_bench.cc index 5c57b8927fe..d1cb8cb3297 100644 --- a/src/test/xattr_bench.cc +++ b/src/test/xattr_bench.cc @@ -152,7 +152,8 @@ int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args); - global_init(0, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(0, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); std::cerr << "args: " << args << std::endl; diff --git a/src/tools/ceph-client-debug.cc b/src/tools/ceph-client-debug.cc index a84cadcf69d..a6ab88d84f6 100644 --- a/src/tools/ceph-client-debug.cc +++ b/src/tools/ceph-client-debug.cc @@ -85,8 +85,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); common_init_finish(g_ceph_context); diff --git a/src/tools/ceph_authtool.cc b/src/tools/ceph_authtool.cc index a213391ff49..5fb8679f7e2 100644 --- a/src/tools/ceph_authtool.cc +++ b/src/tools/ceph_authtool.cc @@ -63,8 +63,9 @@ int main(int argc, const char **argv) map caps; std::string fn; - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); bool gen_key = false; bool gen_print_key = false; diff --git a/src/tools/ceph_conf.cc b/src/tools/ceph_conf.cc index f047e7ca87c..7a50c138e60 100644 --- a/src/tools/ceph_conf.cc +++ b/src/tools/ceph_conf.cc @@ -153,6 +153,12 @@ int main(int argc, const char **argv) global_pre_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON, CINIT_FLAG_NO_DAEMON_ACTIONS); + std::unique_ptr > cct_deleter{ + g_ceph_context, + [](CephContext *p) {p->put();} + }; + g_conf->apply_changes(NULL); g_conf->complain_about_parse_errors(g_ceph_context); diff --git a/src/tools/ceph_kvstore_tool.cc b/src/tools/ceph_kvstore_tool.cc index 61d545ece96..751bf106c70 100644 --- a/src/tools/ceph_kvstore_tool.cc +++ b/src/tools/ceph_kvstore_tool.cc @@ -230,7 +230,7 @@ int main(int argc, const char *argv[]) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init( + auto cct = global_init( NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); diff --git a/src/tools/ceph_monstore_tool.cc b/src/tools/ceph_monstore_tool.cc index 75fb95b6d13..5ffb3d16727 100644 --- a/src/tools/ceph_monstore_tool.cc +++ b/src/tools/ceph_monstore_tool.cc @@ -787,7 +787,7 @@ int main(int argc, char **argv) { ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index ed78500d13b..9bf5030e46d 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -316,13 +316,6 @@ static int get_fd_data(int fd, bufferlist &bl) return 0; } -void myexit(int ret) -{ - if (g_ceph_context) - g_ceph_context->put(); - exit(ret); -} - int get_log(ObjectStore *fs, __u8 struct_ver, coll_t coll, spg_t pgid, const pg_info_t &info, PGLog::IndexedLog &log, pg_missing_t &missing, @@ -2320,12 +2313,12 @@ int main(int argc, char **argv) po::include_positional); } catch(po::error &e) { std::cerr << e.what() << std::endl; - myexit(1); + return 1; } if (vm.count("help")) { usage(desc); - myexit(1); + return 1; } if (!vm.count("debug")) { @@ -2383,7 +2376,7 @@ int main(int argc, char **argv) !(op == "dump-journal" && type == "filestore")) { cerr << "Must provide --data-path" << std::endl; usage(desc); - myexit(1); + return 1; } if (type == "filestore" && !vm.count("journal-path")) { jpath = dpath + "/journal"; @@ -2391,29 +2384,29 @@ int main(int argc, char **argv) if (!vm.count("op") && !vm.count("object")) { cerr << "Must provide --op or object command..." << std::endl; usage(desc); - myexit(1); + return 1; } if (op != "list" && vm.count("op") && vm.count("object")) { cerr << "Can't specify both --op and object command syntax" << std::endl; usage(desc); - myexit(1); + return 1; } if (op == "apply-layout-settings" && !(vm.count("pool") ^ vm.count("pgid"))) { cerr << "apply-layout-settings requires either --pool or --pgid" << std::endl; usage(desc); - myexit(1); + return 1; } if (op != "list" && vm.count("object") && !vm.count("objcmd")) { cerr << "Invalid syntax, missing command" << std::endl; usage(desc); - myexit(1); + return 1; } if (op == "fuse" && mountpoint.length() == 0) { cerr << "Missing fuse mountpoint" << std::endl; usage(desc); - myexit(1); + return 1; } outistty = isatty(STDOUT_FILENO); @@ -2422,7 +2415,7 @@ int main(int argc, char **argv) if (!vm.count("file") || file == "-") { if (outistty) { cerr << "stdout is a tty and no --file filename specified" << std::endl; - myexit(1); + return 1; } file_fd = STDOUT_FILENO; } else { @@ -2432,7 +2425,7 @@ int main(int argc, char **argv) if (!vm.count("file") || file == "-") { if (isatty(STDIN_FILENO)) { cerr << "stdin is a tty and no --file filename specified" << std::endl; - myexit(1); + return 1; } file_fd = STDIN_FILENO; } else { @@ -2445,16 +2438,16 @@ int main(int argc, char **argv) if (vm.count("file") && file_fd == fd_none && !dry_run) { cerr << "--file option only applies to import, export, " << "get-osdmap, set-osdmap, get-inc-osdmap or set-inc-osdmap" << std::endl; - myexit(1); + return 1; } if (file_fd != fd_none && file_fd < 0) { string err = string("file: ") + file; perror(err.c_str()); - myexit(1); + return 1; } - global_init( + auto cct = global_init( NULL, ceph_options, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY_NODOUT, 0); //CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); @@ -2477,7 +2470,7 @@ int main(int argc, char **argv) formatter = Formatter::create(format); if (formatter == NULL) { cerr << "unrecognized format: " << format << std::endl; - myexit(1); + return 1; } // Special handling for filestore journal, so we can dump it without mounting @@ -2486,10 +2479,10 @@ int main(int argc, char **argv) if (ret < 0) { cerr << "journal-path: " << jpath << ": " << cpp_strerror(ret) << std::endl; - myexit(1); + return 1; } formatter->flush(cout); - myexit(0); + return 0; } //Verify that data-path really exists @@ -2497,40 +2490,40 @@ int main(int argc, char **argv) if (::stat(dpath.c_str(), &st) == -1) { string err = string("data-path: ") + dpath; perror(err.c_str()); - myexit(1); + return 1; } if (pgidstr.length() && !pgid.parse(pgidstr.c_str())) { cerr << "Invalid pgid '" << pgidstr << "' specified" << std::endl; - myexit(1); + return 1; } ObjectStore *fs = ObjectStore::create(g_ceph_context, type, dpath, jpath, flags); if (fs == NULL) { cerr << "Unable to create store of type " << type << std::endl; - myexit(1); + return 1; } if (op == "fsck") { int r = fs->fsck(); if (r < 0) { cerr << "fsck failed: " << cpp_strerror(r) << std::endl; - myexit(1); + return 1; } if (r > 0) { cerr << "fsck found " << r << " errors" << std::endl; - myexit(1); + return 1; } cout << "fsck found no errors" << std::endl; - exit(0); + return 0; } if (op == "mkfs") { int r = fs->mkfs(); if (r < 0) { cerr << "fsck failed: " << cpp_strerror(r) << std::endl; - myexit(1); + return 1; } - myexit(0); + return 0; } ObjectStore::Sequencer *osr = new ObjectStore::Sequencer(__func__); @@ -2541,7 +2534,7 @@ int main(int argc, char **argv) } else { cerr << "Mount failed with '" << cpp_strerror(ret) << "'" << std::endl; } - myexit(1); + return 1; } if (op == "fuse") { @@ -2551,12 +2544,12 @@ int main(int argc, char **argv) int r = fuse.main(); if (r < 0) { cerr << "failed to mount fuse: " << cpp_strerror(r) << std::endl; - myexit(1); + return 1; } #else cerr << "fuse support not enabled" << std::endl; #endif - myexit(0); + return 0; } vector ls; @@ -3266,5 +3259,5 @@ out: if (ret < 0) ret = 1; - myexit(ret); + return ret; } diff --git a/src/tools/ceph_osdomap_tool.cc b/src/tools/ceph_osdomap_tool.cc index ffb45288393..0fb6d98a1f1 100644 --- a/src/tools/ceph_osdomap_tool.cc +++ b/src/tools/ceph_osdomap_tool.cc @@ -64,7 +64,7 @@ int main(int argc, char **argv) { ceph_options.push_back(i->c_str()); } - global_init( + auto cct = global_init( &def_args, ceph_options, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); diff --git a/src/tools/cephfs/cephfs-data-scan.cc b/src/tools/cephfs/cephfs-data-scan.cc index 5e9c05a0717..dcf83bbfd1c 100644 --- a/src/tools/cephfs/cephfs-data-scan.cc +++ b/src/tools/cephfs/cephfs-data-scan.cc @@ -14,7 +14,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); DataScan data_scan; diff --git a/src/tools/cephfs/cephfs-journal-tool.cc b/src/tools/cephfs/cephfs-journal-tool.cc index e9083a5acf5..2764feb0fcb 100644 --- a/src/tools/cephfs/cephfs-journal-tool.cc +++ b/src/tools/cephfs/cephfs-journal-tool.cc @@ -27,7 +27,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); JournalTool jt; diff --git a/src/tools/cephfs/cephfs-table-tool.cc b/src/tools/cephfs/cephfs-table-tool.cc index 749de6f84d6..ef09df49473 100644 --- a/src/tools/cephfs/cephfs-table-tool.cc +++ b/src/tools/cephfs/cephfs-table-tool.cc @@ -14,7 +14,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); TableTool tt; diff --git a/src/tools/crushtool.cc b/src/tools/crushtool.cc index e723fb00cce..65e1f1223d7 100644 --- a/src/tools/crushtool.cc +++ b/src/tools/crushtool.cc @@ -270,8 +270,9 @@ int main(int argc, const char **argv) // only parse arguments from CEPH_ARGS, if in the environment vector env_args; env_to_vec(env_args); - global_init(NULL, env_args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, env_args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); int x; diff --git a/src/tools/monmaptool.cc b/src/tools/monmaptool.cc index 515abd79829..5fbf86cb0c7 100644 --- a/src/tools/monmaptool.cc +++ b/src/tools/monmaptool.cc @@ -45,8 +45,9 @@ int main(int argc, const char **argv) map add; list rm; - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); std::string val; for (std::vector::iterator i = args.begin(); i != args.end(); ) { diff --git a/src/tools/osdmaptool.cc b/src/tools/osdmaptool.cc index c5dfcc6555c..973c57d6a2b 100644 --- a/src/tools/osdmaptool.cc +++ b/src/tools/osdmaptool.cc @@ -45,8 +45,9 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, - CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); common_init_finish(g_ceph_context); const char *me = argv[0]; diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index 28a7e7a8a93..d9f398db6f6 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -3445,7 +3445,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); std::map < std::string, std::string > opts; diff --git a/src/tools/rbd/rbd.cc b/src/tools/rbd/rbd.cc index bfa18d345b6..c81faf83696 100644 --- a/src/tools/rbd/rbd.cc +++ b/src/tools/rbd/rbd.cc @@ -13,7 +13,8 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_UTILITY, 0); rbd::Shell shell; return shell.execute(args); diff --git a/src/tools/rbd_mirror/main.cc b/src/tools/rbd_mirror/main.cc index 0bdafe87675..a423555eac9 100644 --- a/src/tools/rbd_mirror/main.cc +++ b/src/tools/rbd_mirror/main.cc @@ -35,9 +35,9 @@ int main(int argc, const char **argv) env_to_vec(args); argv_to_vec(argc, argv, args); - global_init(nullptr, args, CEPH_ENTITY_TYPE_CLIENT, - CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + auto cct = global_init(nullptr, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); for (auto i = args.begin(); i != args.end(); ++i) { if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) { @@ -80,7 +80,6 @@ int main(int argc, const char **argv) shutdown_async_signal_handler(); delete mirror; - g_ceph_context->put(); return r < 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 4479e31d568..6b8ab37c6ea 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -782,8 +782,9 @@ static int rbd_nbd(int argc, const char *argv[]) argv_to_vec(argc, argv, args); env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); g_ceph_context->_conf->set_val_or_die("pid_file", ""); std::vector::iterator i;