From 8a2f27cc632c26d7c2b8e8528b4d459b1d78705b Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 15 Nov 2016 14:21:03 +0800 Subject: [PATCH] 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 --- src/ceph_fuse.cc | 6 +- src/ceph_mds.cc | 7 +-- src/ceph_mon.cc | 6 +- src/ceph_osd.cc | 6 +- src/ceph_syn.cc | 3 +- src/global/global_init.cc | 23 +++++-- src/global/global_init.h | 9 ++- src/librados-config.cc | 5 +- src/os/bluestore/bluefs_tool.cc | 3 +- src/rbd_replay/rbd-replay.cc | 3 +- src/rgw/librgw.cc | 10 +-- src/rgw/rgw_admin.cc | 3 +- src/rgw/rgw_lib.h | 2 + src/rgw/rgw_main.cc | 11 ++-- src/rgw/rgw_object_expirer.cc | 5 +- src/rgw/rgw_token.cc | 3 +- .../ObjectMap/test_keyvaluedb_iterators.cc | 2 +- src/test/ObjectMap/test_object_map.cc | 3 +- src/test/TestSignalHandlers.cc | 3 +- src/test/TestTimers.cc | 3 +- src/test/admin_socket.cc | 16 +---- src/test/bench/small_io_bench_dumb.cc | 2 +- src/test/bench/small_io_bench_fs.cc | 2 +- src/test/bench/tp_bench.cc | 2 +- src/test/bench_log.cc | 3 +- src/test/common/Throttle.cc | 14 +---- src/test/common/get_command_descriptions.cc | 3 +- src/test/common/test_async_compressor.cc | 2 +- src/test/common/test_shared_cache.cc | 14 +---- src/test/common/test_sharedptr_registry.cc | 14 +---- .../compressor/test_compression_plugin.cc | 9 ++- .../test_compression_plugin_snappy.cc | 9 ++- .../test_compression_plugin_zlib.cc | 9 ++- .../compressor/test_compression_snappy.cc | 18 +----- src/test/compressor/test_compression_zlib.cc | 18 +----- src/test/crush/CrushWrapper.cc | 3 +- src/test/crush/crush.cc | 17 +---- src/test/crypto_init.cc | 5 +- src/test/erasure-code/TestErasureCode.cc | 19 +----- .../erasure-code/TestErasureCodeExample.cc | 17 +---- src/test/erasure-code/TestErasureCodeIsa.cc | 18 +----- .../erasure-code/TestErasureCodeJerasure.cc | 20 +----- src/test/erasure-code/TestErasureCodeLrc.cc | 20 +----- .../erasure-code/TestErasureCodePlugin.cc | 19 +----- .../erasure-code/TestErasureCodePluginIsa.cc | 17 +---- .../TestErasureCodePluginJerasure.cc | 19 +----- .../erasure-code/TestErasureCodePluginLrc.cc | 20 +----- .../erasure-code/TestErasureCodePluginShec.cc | 20 +----- src/test/erasure-code/TestErasureCodeShec.cc | 17 +---- .../erasure-code/TestErasureCodeShec_all.cc | 3 +- .../TestErasureCodeShec_arguments.cc | 3 +- .../TestErasureCodeShec_thread.cc | 19 +----- src/test/erasure-code/ceph_erasure_code.cc | 2 +- .../ceph_erasure_code_benchmark.cc | 2 +- .../ceph_erasure_code_non_regression.cc | 8 +-- src/test/filestore/TestFileStore.cc | 3 +- src/test/journal/test_main.cc | 4 +- src/test/librados/list.cc | 19 +----- src/test/librados/misc.cc | 19 +----- src/test/librados/tier.cc | 18 +----- src/test/mds/TestMDSAuthCaps.cc | 18 +----- src/test/mds/TestSessionFilter.cc | 15 +---- src/test/messenger/simple_client.cc | 5 +- src/test/messenger/simple_server.cc | 5 +- src/test/messenger/xio_client.cc | 5 +- src/test/mon/PGMap.cc | 17 +---- src/test/mon/test-mon-msg.cc | 7 +-- src/test/mon/test_mon_workloadgen.cc | 6 +- src/test/msgr/perf_msgr_client.cc | 3 +- src/test/msgr/perf_msgr_server.cc | 3 +- src/test/msgr/test_async_driver.cc | 13 +--- src/test/msgr/test_msgr.cc | 2 +- .../ObjectStoreTransactionBenchmark.cc | 3 +- .../objectstore/TestRocksdbOptionParse.cc | 14 +---- src/test/objectstore/chain_xattr.cc | 3 +- src/test/objectstore/store_test.cc | 7 +-- src/test/objectstore/test_bluefs.cc | 8 ++- src/test/objectstore/test_idempotent.cc | 3 +- .../objectstore/test_idempotent_sequence.cc | 6 +- src/test/objectstore/test_kv.cc | 3 +- src/test/objectstore/workload_generator.cc | 6 +- src/test/objectstore_bench.cc | 3 +- src/test/os/TestLFNIndex.cc | 3 +- src/test/osd/TestOSDMap.cc | 6 +- src/test/osd/TestOSDScrub.cc | 15 +---- src/test/osd/TestPGLog.cc | 15 +---- src/test/osdc/object_cacher_stress.cc | 3 +- src/test/perf_counters.cc | 5 +- src/test/perf_local.cc | 3 +- src/test/rbd_mirror/random_write.cc | 17 +++-- src/test/rgw/test_rgw_period_history.cc | 3 +- src/test/test_arch.cc | 16 +---- src/test/test_cors.cc | 3 +- src/test/test_filejournal.cc | 3 +- src/test/test_mutate.cc | 3 +- src/test/test_rgw_admin_log.cc | 3 +- src/test/test_rgw_admin_meta.cc | 3 +- src/test/test_rgw_admin_opstate.cc | 3 +- src/test/test_snap_mapper.cc | 16 +---- src/test/test_striper.cc | 19 +----- src/test/test_trans.cc | 3 +- src/test/test_workqueue.cc | 18 +----- src/test/testkeys.cc | 3 +- src/test/testmsgr.cc | 3 +- src/test/unit.h | 17 ++++- src/test/xattr_bench.cc | 3 +- src/tools/ceph-client-debug.cc | 5 +- src/tools/ceph_authtool.cc | 5 +- src/tools/ceph_conf.cc | 6 ++ src/tools/ceph_kvstore_tool.cc | 2 +- src/tools/ceph_monstore_tool.cc | 2 +- src/tools/ceph_objectstore_tool.cc | 63 +++++++++---------- src/tools/ceph_osdomap_tool.cc | 2 +- src/tools/cephfs/cephfs-data-scan.cc | 3 +- src/tools/cephfs/cephfs-journal-tool.cc | 3 +- src/tools/cephfs/cephfs-table-tool.cc | 3 +- src/tools/crushtool.cc | 5 +- src/tools/monmaptool.cc | 5 +- src/tools/osdmaptool.cc | 5 +- src/tools/rados/rados.cc | 3 +- src/tools/rbd/rbd.cc | 3 +- src/tools/rbd_mirror/main.cc | 7 +-- src/tools/rbd_nbd/rbd-nbd.cc | 5 +- 123 files changed, 329 insertions(+), 721 deletions(-) diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index a6824481ec979..e8d57c74f6a97 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 58bda1b5422ac..40ac730a3b72c 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 4bb5c4a5793fc..d21445d32aa0d 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 3ae3165a5149a..70377fe53e0e7 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 b872b8215685e..d3ed16a1295a3 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 daff81a323a9f..8750a7b2c8c28 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 79c0bad5c7e5d..69ff6dda7da8a 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 83f9704524fed..ba4799a412d73 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 3738565917629..150b16826be89 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 b00c1310c9055..3ec490ecb3b04 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 0e4075c718083..8ba0bdbe2f62d 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 3de43b56a294f..4e7c4bdd9ac79 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 f418a6d19739f..46014477bea59 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 ed9ab67be562b..fd821bfcf81c5 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 f044db7f875e2..d2897eb5da051 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 c4ae0f0cdfdb0..04ef1fa7b4713 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 e3ab7daa88cdc..632f7f7414b3e 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 0d504df576a44..a99e920083047 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 124018d502452..08c4e025c813c 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 5e2b6b973956e..19f67f7b51575 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 212d754f379d5..b6777de9dd172 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 f118880942ac3..a9df077c10c7d 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 9466bd4d87a51..7569b332d968f 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 6a50b6e085556..40267179d11cc 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 39e8813ae7562..9f5892f1e23e8 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 a2001214dcbc1..279b62edbab42 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 eb4c0f9db91b5..1b4da3f89590a 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 4ea8dc5a95179..67fae85b71e9c 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 cd921f5270776..1d12800c85f45 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 98379c856aa70..88486251a33a7 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 45cffafaf318a..6f2ce80f915e2 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 9e733f4396fcb..c3be2c3b45cad 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 5af5d14aa3c08..529f3c90affa6 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 bbd315cf30887..9bdfb34b41153 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 6ba64452f9ba7..34252197e444a 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 035be924c3da7..3d7e152b27e08 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 c46fa87ab5409..997a2dfbcb888 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 d4b256217b4c6..781175ebd18de 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 56759c4af1899..add9c671ce7f9 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 eff590f479c7e..cabf0765380ad 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 9c01e951c6817..a8c9a62981111 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 52d7c685e840b..db0b65fccc34e 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 b9452310af669..9057a882f5e63 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 45f1b28168077..8729f553d659d 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 1044017df9565..b469596abc9ed 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 f43f296b1fca7..0c399f078f2aa 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 f88d1cd4fa355..5c2e618372ba6 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 39d552b0111ce..2f04637d1d6a8 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 8da9e69850ae6..b48fe2a82a535 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 c8715ebe516e6..7937906d355be 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 ea68ab24b0bcc..005fe7de51228 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 3adab597b8725..6060fb7c24aba 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 aaa4304b9b75f..8ed2b0ce49e73 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 31a73d45a9fd3..01250cc774bda 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 7b0fa2fe72d33..46249998a66ae 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 a100a5f3a69b3..6d857be41163e 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 f8c7d3eea1b78..66163e5f921ba 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 60b97b52ea481..b1d09a36a6e7f 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 3212e03ee3c38..9d8c76c7fabd2 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 3f9a5b33d1045..fe93ecc83a923 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 919095d9d2fb9..123a214e73c6f 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 2d058da41a0c1..5682281259ed9 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 a63cb2804bc65..f0535eff204ab 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 674ef3e948d6e..a88c940454e2e 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 414668f37e882..7586b9674edcc 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 f13fa8936669c..beedbbb2c8983 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 3e4e0505ded14..e77bba5c57e91 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 4ad26c31e1fa1..43a03c66bd7ce 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 1cb3db2ce798e..eb5434900be53 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 dde679c433ee2..7b31adc3bf5ad 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 59ac8bf6a3396..bdcd1ca7e2734 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 43f1060c7cdfc..37549227fc9e5 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 46fd25dcebbf6..279b10b99691e 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 f89e27e02e5b1..8cc40efffbc5a 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 d3b4b1e9eeafa..5244f0415f46d 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 bdf027e8afc8f..5ab011ad17d8d 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 41bcf99cc674d..7dd1009d7139b 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 edb8e9b3bfc1e..6b465b12f279c 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 75ebc3377d3c4..0216b78f33476 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 06c45e0cb7e18..c481055e24c1a 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 bbe3c74675e6b..2c55fb27bc0f6 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 5ec8503fe3016..72c43a48ca3e8 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 1ff2e4d8bd22a..c377fe482a6d1 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 0b50b32858ce2..4349ce2846f6c 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 a5da6dc6c9866..da886d8a50c8b 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 34d13133a0c7e..dba4f074ee72b 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 a753295e2125b..a002ee5c8dc89 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 a916cf08da3b3..00d8679a76d81 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 7c33dc5d45462..2d1cd41c538f1 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 61c463b1bd4ee..9ad4cd01899f8 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 320f550dfab08..efedd269c4892 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 e2c225b20ac6a..e215e7033334f 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 12cb43a6fabb7..b03a2361d9896 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 8a1172c3cc42f..0d3c818fbb4c0 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 b9e0d717664a5..a8d83d5708cb3 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 4f5affe9fa037..a7be06cfefbdf 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 063b9ea88fc25..0d61c18e70560 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 3499aa46abd19..635abd3d27777 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 93c87abe41c8b..fd919fa6023a5 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 2e0c23fc6783d..cab2f72778416 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 e671e47e04bcf..722ce889dda11 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 c7ff4335472ce..83bbd64dafacb 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 27c38124ade17..ce0e4cbb69fe7 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 e3610b56b3b70..44e53f16a1723 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 b1fb373ed4327..5c877942b9fc4 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 5c57b8927fe10..d1cb8cb3297b3 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 a84cadcf69db7..a6ab88d84f698 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 a213391ff4959..5fb8679f7e2b1 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 f047e7ca87cc7..7a50c138e607e 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 61d545ece96b0..751bf106c7041 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 75fb95b6d13e8..5ffb3d167273f 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 ed78500d13bae..9bf5030e46de0 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 ffb452883938a..0fb6d98a1f1cc 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 5e9c05a0717b8..dcf83bbfd1c39 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 e9083a5acf525..2764feb0fcb31 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 749de6f84d61b..ef09df4947358 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 e723fb00cce19..65e1f1223d74a 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 515abd79829e6..5fbf86cb0c756 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 c5dfcc6555c94..973c57d6a2b06 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 28a7e7a8a934d..d9f398db6f61c 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 bfa18d345b68f..c81faf83696f5 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 0bdafe8767586..a423555eac9a0 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 4479e31d5680f..6b8ab37c6ead6 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; -- 2.39.5