]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common,test: g_ceph_context->put() upon return
authorKefu Chai <kchai@redhat.com>
Tue, 15 Nov 2016 06:21:03 +0000 (14:21 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 24 Nov 2016 14:38:28 +0000 (22:38 +0800)
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<CephContext>,
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 <kchai@redhat.com>
130 files changed:
src/ceph_fuse.cc
src/ceph_mds.cc
src/ceph_mgr.cc
src/ceph_mon.cc
src/ceph_osd.cc
src/ceph_syn.cc
src/global/global_init.cc
src/global/global_init.h
src/librados-config.cc
src/os/bluestore/bluefs_tool.cc
src/rbd_replay/rbd-replay.cc
src/rgw/librgw.cc
src/rgw/rgw_admin.cc
src/rgw/rgw_lib.h
src/rgw/rgw_main.cc
src/rgw/rgw_object_expirer.cc
src/rgw/rgw_token.cc
src/test/ObjectMap/test_keyvaluedb_iterators.cc
src/test/ObjectMap/test_object_map.cc
src/test/TestSignalHandlers.cc
src/test/TestTimers.cc
src/test/admin_socket.cc
src/test/bench/small_io_bench_dumb.cc
src/test/bench/small_io_bench_fs.cc
src/test/bench/tp_bench.cc
src/test/bench_log.cc
src/test/common/Throttle.cc
src/test/common/get_command_descriptions.cc
src/test/common/test_async_compressor.cc
src/test/common/test_shared_cache.cc
src/test/common/test_sharedptr_registry.cc
src/test/compressor/test_compression.cc
src/test/crush/CrushWrapper.cc
src/test/crush/crush.cc
src/test/crypto_init.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_all.cc
src/test/erasure-code/TestErasureCodeShec_arguments.cc
src/test/erasure-code/TestErasureCodeShec_thread.cc
src/test/erasure-code/ceph_erasure_code.cc
src/test/erasure-code/ceph_erasure_code_benchmark.cc
src/test/erasure-code/ceph_erasure_code_non_regression.cc
src/test/filestore/TestFileStore.cc
src/test/fio/fio_ceph_objectstore.cc
src/test/journal/test_main.cc
src/test/librados/list.cc
src/test/librados/misc.cc
src/test/librados/tier.cc
src/test/mds/TestMDSAuthCaps.cc
src/test/mds/TestSessionFilter.cc
src/test/messenger/simple_client.cc
src/test/messenger/simple_server.cc
src/test/messenger/xio_client.cc
src/test/mon/PGMap.cc
src/test/mon/test-mon-msg.cc
src/test/mon/test_mon_workloadgen.cc
src/test/msgr/perf_msgr_client.cc
src/test/msgr/perf_msgr_server.cc
src/test/msgr/test_async_driver.cc
src/test/msgr/test_async_networkstack.cc
src/test/msgr/test_msgr.cc
src/test/msgr/test_userspace_event.cc
src/test/objectstore/Allocator_test.cc
src/test/objectstore/BitAllocator_test.cc
src/test/objectstore/ObjectStoreTransactionBenchmark.cc
src/test/objectstore/TestRocksdbOptionParse.cc
src/test/objectstore/chain_xattr.cc
src/test/objectstore/store_test.cc
src/test/objectstore/test_bluefs.cc
src/test/objectstore/test_bluestore_types.cc
src/test/objectstore/test_idempotent.cc
src/test/objectstore/test_idempotent_sequence.cc
src/test/objectstore/test_kv.cc
src/test/objectstore/test_memstore_clone.cc
src/test/objectstore/workload_generator.cc
src/test/objectstore_bench.cc
src/test/os/TestLFNIndex.cc
src/test/osd/TestOSDMap.cc
src/test/osd/TestOSDScrub.cc
src/test/osd/TestPGLog.cc
src/test/osdc/object_cacher_stress.cc
src/test/perf_counters.cc
src/test/perf_local.cc
src/test/rbd_mirror/random_write.cc
src/test/rgw/test_http_manager.cc
src/test/rgw/test_rgw_compression.cc
src/test/rgw/test_rgw_period_history.cc
src/test/test_arch.cc
src/test/test_cors.cc
src/test/test_filejournal.cc
src/test/test_mempool.cc
src/test/test_mutate.cc
src/test/test_rgw_admin_log.cc
src/test/test_rgw_admin_meta.cc
src/test/test_rgw_admin_opstate.cc
src/test/test_snap_mapper.cc
src/test/test_striper.cc
src/test/test_trans.cc
src/test/test_workqueue.cc
src/test/testkeys.cc
src/test/testmsgr.cc
src/test/unit.h
src/test/xattr_bench.cc
src/tools/ceph-client-debug.cc
src/tools/ceph_authtool.cc
src/tools/ceph_conf.cc
src/tools/ceph_kvstore_tool.cc
src/tools/ceph_monstore_tool.cc
src/tools/ceph_objectstore_tool.cc
src/tools/ceph_osdomap_tool.cc
src/tools/cephfs/cephfs-data-scan.cc
src/tools/cephfs/cephfs-journal-tool.cc
src/tools/cephfs/cephfs-table-tool.cc
src/tools/crushtool.cc
src/tools/monmaptool.cc
src/tools/osdmaptool.cc
src/tools/rados/rados.cc
src/tools/rbd/rbd.cc
src/tools/rbd_mirror/main.cc
src/tools/rbd_nbd/rbd-nbd.cc

index f5d04daeef903d2daf8de3946f4c1c06cf62f98a..b18264efbc986142ab0ed41452bd80fb33bb7d62 100644 (file)
@@ -77,8 +77,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<const char*>::iterator i = args.begin(); i != args.end(); ) {
     if (ceph_argparse_double_dash(args, i)) {
       break;
@@ -287,7 +288,6 @@ int main(int argc, const char **argv, const char *envp[]) {
       foo += ::write(fd[1], &r, sizeof(r));
     }
     
-    g_ceph_context->put();
     free(newargv);
     
     delete mc;
index 458116bccc3b9725d48be974897e6dc42816130d..5f8173e724e0e2e39f6d88e0d58d50b179c1027e 100644 (file)
@@ -91,8 +91,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;
@@ -228,8 +229,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());
index 9365fb83fd176610e7192c662dd3092af2047334..acdddec194eea91769995871a35380482b1891b9 100644 (file)
@@ -35,8 +35,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_MGR, CODE_ENVIRONMENT_DAEMON, 0,
-              "mgr_data");
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_MGR,
+                        CODE_ENVIRONMENT_DAEMON, 0,
+                        "mgr_data");
   // For consumption by KeyRing::from_ceph_context in MonClient
   g_conf->set_val("keyring", "$mgr_data/keyring", false);
 
index 3b15e56cc3432be986ee3847942f1466a3506b56..d592b6804127fdbc082ca1addeb0d08d16614f26 100644 (file)
@@ -236,8 +236,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;
@@ -759,7 +760,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];
index 33cb705a0d6625d54ac81f7a5a9b3f5b79d94742..b7724e8eb49486400da48a19b5e4ca8c7c04ade6 100644 (file)
@@ -101,8 +101,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
@@ -636,7 +637,6 @@ int main(int argc, const char **argv)
 
   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];
index b872b8215685e1fe39ffda29660bcd8ac409cf47..d3ed16a1295a3cb6058fa25accfeeb6803f27de6 100644 (file)
@@ -42,7 +42,8 @@ int main(int argc, const char **argv, char *envp[])
   vector<const char*> 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
index c2b64ad52223bf5df414a17ad3dab04ce48c3af9..03669e914f3f7f808b8bbc95ffc44d22fc9be4c0 100644 (file)
@@ -130,11 +130,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<CephContext>
+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;
@@ -325,6 +326,18 @@ void global_init(std::vector < const char * > *alt_def_args,
     output_ceph_version();
 
   g_ceph_context->crush_location.init_on_startup();
+
+  return boost::intrusive_ptr<CephContext>{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)
index 1fe877d9cf4c4376934ce1ac59ce8a52d88a600d..ba74deb1f2d57f069c5238d15ab7afa40e760bc2 100644 (file)
@@ -17,7 +17,8 @@
 
 #include <stdint.h>
 #include <vector>
-
+#include <boost/intrusive_ptr.hpp>
+#include "include/assert.h"
 #include "common/code_environment.h"
 #include "common/common_init.h"
 
@@ -28,7 +29,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<CephContext>
+     global_init(std::vector < const char * > *alt_def_args,
                 std::vector < const char* >& args,
                 uint32_t module_type,
                 code_environment_t code_env,
@@ -36,6 +38,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,
index 83f9704524fede04475ac2c9f3f9c0082ffbc805..ba4799a412d73544f7d3869e85fa8c87552ef1cf 100644 (file)
@@ -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<const char*>::iterator i = args.begin();
        i != args.end(); ) {
index 3738565917629e40ceb008a04100c733c5821874..150b16826be89c86e3ba05f68618f1caa7413c39 100644 (file)
@@ -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",
index b00c1310c90556ff18d074bafd03a5a85bb35705..3ec490ecb3b04eccc0bbfe33ce21b2c78d9f87c6 100644 (file)
@@ -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<const char*>::iterator i;
   string pool_name = "rbd";
index a31408e7a0869fdf4af3d5daa71f0ad86c9f265d..8b5f24c7dbaccd0a6b2501d3752dfc529d1e8107 100644 (file)
@@ -447,10 +447,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);
@@ -558,7 +558,7 @@ namespace rgw {
     rgw_perf_stop(g_ceph_context);
 
     dout(1) << "final shutdown" << dendl;
-    g_ceph_context->put();
+    cct.reset();
 
     ceph::crypto::shutdown();
 
index ab0b94d805bd61975b3bc586556faff5c7ebc8c4..ca0113eb1fc6a70bbd4b2b1deb4dc9cac621872f 100644 (file)
@@ -2190,7 +2190,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;
index 2493260d1384d31a92ca03db3bc1062f925a37a5..0a473ed4b1a49dd98e8fc1d8c08dfc8991ef15e9 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <mutex>
 #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<CephContext> cct;
 
   public:
     RGWLib() : fec(nullptr), fe(nullptr), olog(nullptr), store(nullptr)
index 52952ae1d7b64c9c206baab1640aa353ebdb6a9e..09e650e1dbd65420bb687ead4631d9e1c99e1b44 100644 (file)
@@ -175,9 +175,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(); }
-
 RGWRealmReloader *preloader = NULL;
 
 static void reloader_handler(int signum)
@@ -261,8 +258,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<const char*>::iterator i = args.begin(); i != args.end(); ++i) {
     if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
@@ -302,9 +301,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<CephContext> cct(g_ceph_context, false);
-
   int r = rgw_tools_init(g_ceph_context);
   if (r < 0) {
     derr << "ERROR: unable to initialize rgw tools" << dendl;
index 97a17bd3e280a0776aae4678a27117ca2aedf56f..1d44a8797ccf2f2fa9b9e7915d974b7458bcaadb 100644 (file)
@@ -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<const char *>::iterator i = args.begin(); i != args.end(); ) {
     if (ceph_argparse_double_dash(args, i)) {
index c4ae0f0cdfdb07feb6f9fe0009c1c47b67ee7059..04ef1fa7b4713809b28c5eb49d2070b5a177344d 100644 (file)
@@ -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};
index 63e032b477b758f7bb21a26f6b35a6ea43ee11ff..454719c40fe8e12faaf688610dd47fe16da31cbd 100644 (file)
@@ -1743,7 +1743,7 @@ int main(int argc, char *argv[])
   vector<const char*> 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);
 
index 0d504df576a4423661db0d240069f807ebc0dad1..a99e920083047f2fc63219bec043f6b8ad0edc9a 100644 (file)
@@ -551,7 +551,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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();
index 60c1592970fd3ffc59e52f768db0b395b8e65c20..029d257dc843e45bedafd221663fcc0801f69363 100644 (file)
@@ -79,7 +79,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;
index 5e2b6b973956ec1d32aa9f4839302e81cb44fa68..19f67f7b515756ecb40b27c98bf35cbcf75b86f5 100644 (file)
@@ -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;
index 212d754f379d52e7d21052bf1d19622b6a0c4df3..b6777de9dd1720f8bc4ec510ca08024ab8140951 100644 (file)
  *
  */
 
-#include <gtest/gtest.h>
-
 #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 <stdint.h>
 #include <string.h>
@@ -293,17 +290,6 @@ TEST(AdminSocket, bind_and_listen) {
   }
 }
 
-int main(int argc, char **argv) {
-  vector<const char*> args;
-  argv_to_vec(argc, (const char **)argv, args);
-
-  vector<const char*> 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 .. ;
index f118880942ac305301e98054e2596f13da2cd7a2..a9df077c10c7dc3997342dad2d60f50b125df35e 100644 (file)
@@ -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);
index 9466bd4d87a5164f793c31e11c8940fc1a535917..7569b332d968fb316d014b3df5f1ee7e0aba6e64 100644 (file)
@@ -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);
index 6a50b6e085556148d9089cb95153d1d4f0386a44..40267179d11cc6e3d86e3db8cd8e19c3c16586dd 100644 (file)
@@ -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);
index 39e8813ae756260bcfebffa4417a3bf6b95c0dfd..9f5892f1e23e8b130d741f38cd3d1c953152e2f8 100644 (file)
@@ -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);
 
index d75d450a8e08386f827a22b24d9ef9146f785e35..eda25a91f3693fecf4f599cf9fa4776f6ef925a7 100644 (file)
@@ -25,8 +25,7 @@
 #include "common/Thread.h"
 #include "common/Throttle.h"
 #include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include <gtest/gtest.h>
+#include "test/unit.h"
 
 #include <thread>
 #include <atomic>
@@ -424,17 +423,6 @@ TEST(BackoffThrottle, oversaturated)
   ASSERT_GT(results.second.count(), 0.0005);
 }
 
-int main(int argc, char **argv) {
-  vector<const char*> 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 ../.. ;
index eb4c0f9db91b5341ee9862738279ccebb95d362e..1b4da3f89590a045e8ef19fb0c5e85c5ab7a3587 100644 (file)
@@ -87,7 +87,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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()) {
index 6d30a8e81a09d07b7da0ad6ea74f98080f04a867..6e77306fdc0a2ab2ba35e73da417ecb70fa30bbe 100644 (file)
@@ -207,7 +207,7 @@ int main(int argc, char **argv) {
   vector<const char*> 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");
index cd921f527077697b0cea2fe84585f718b87167cb..1d12800c85f45362872a1501e11a0344d602d886 100644 (file)
@@ -25,8 +25,7 @@
 #include "common/Thread.h"
 #include "common/shared_cache.hpp"
 #include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include <gtest/gtest.h>
+#include "test/unit.h"
 
 class SharedLRUTest : public SharedLRU<unsigned int, int> {
 public:
@@ -393,17 +392,6 @@ TEST(SharedCache_all, lru) {
   ASSERT_TRUE(cache.lookup(0).get());
 }
 
-int main(int argc, char **argv) {
-  vector<const char*> 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:
index 98379c856aa707092cd39354c81bd3fdd3012808..88486251a33a7fff03f39ac14efcb007f709af5b 100644 (file)
@@ -24,8 +24,7 @@
 #include "common/Thread.h"
 #include "common/sharedptr_registry.hpp"
 #include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include <gtest/gtest.h>
+#include "test/unit.h"
 
 class SharedPtrRegistryTest : public SharedPtrRegistry<unsigned int, int> {
 public:
@@ -324,17 +323,6 @@ TEST_F(SharedPtrRegistry_destructor, destructor) {
   EXPECT_FALSE(registry.lookup(key));
 }
 
-int main(int argc, char **argv) {
-  vector<const char*> 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:
index d7c24d5a827e91669160d11e28c65bd7a417bbf9..6dbdfacd1cdfd2388409cbb2821466a23f00bdb6 100644 (file)
 #include <errno.h>
 #include <signal.h>
 #include <stdlib.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
 #include "compressor/Compressor.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "common/config.h"
 #include "compressor/CompressionPlugin.h"
+#include "test/unit.h"
 
 class CompressorTest : public ::testing::Test,
                        public ::testing::WithParamInterface<const char*> {
@@ -453,20 +452,3 @@ TEST(ZlibCompressor, isal_compress_zlib_decompress_walk)
     EXPECT_TRUE(exp.contents_equal(after));
   }
 }
-
-
-int main(int argc, char **argv) {
-  vector<const char*> 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);
-
-  const char* env = getenv("CEPH_LIB");
-  if (env)
-    g_conf->set_val("plugin_dir", env, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
index 035be924c3da7f59416e3ca99453525474020ae4..3d7e152b27e080c8b328d46cb748006405e27ab3 100644 (file)
@@ -948,7 +948,8 @@ int main(int argc, char **argv) {
 
   vector<const char*> 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();
index 6d659ae19b1c5beaeacdbba9136efa3e1a4d5cfb..778323b4736c5af010aca6e3e40d48fb70643c65 100644 (file)
 #include <gtest/gtest.h>
 
 #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 <set>
 
@@ -645,16 +643,3 @@ TEST(CRUSH, straw2_reweight) {
     cout << "     vs " << estddev << std::endl;
   }
 }
-
-
-
-int main(int argc, char **argv) {
-  vector<const char*> 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();
-}
index d4b256217b4c699e3f1c6f12693370629450ff3b..781175ebd18de099af8b17f68d4514e6b8a409df 100644 (file)
@@ -23,8 +23,9 @@ void *init_crypto(void *p) {
 // multiple times simultaneously from different threads.
 TEST(CRYPTO_INIT, NSS_RACE) {
   std::vector<const char*> 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));
index 47b7fa2a87a5bab67b9d9fb6fc26e63dc742d84e..add9c671ce7f944f31875fcb4cdb1a0bd683349b 100644 (file)
 #include <errno.h>
 #include <stdlib.h>
 
-#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<const char*> 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 : ".libs");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ;
index ed34e07ee987d7d7321f399e3ed3d5831ac84bb2..cabf0765380ad5cf71c6abccb3d854e69e93ec85 100644 (file)
 #include <stdlib.h>
 
 #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<const char*> 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 : ".libs");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; 
index 382d789a360e2eea143c42c205e0595662222d58..03fb3e9077bd9279612f0390492682a5e0fd54a4 100644 (file)
 
 #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;
 
@@ -957,22 +957,6 @@ TEST_F(IsaErasureCodeTest, create_ruleset)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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 : ".libs");
-  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 &&
index 01c27d95439cd2c3c257dc83d2ce3622f5bdd906..180466e3524795223e08471cb51a27873ae9c5cf 100644 (file)
 
 #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 <typename T>
 class ErasureCodeTest : public ::testing::Test {
@@ -359,22 +359,6 @@ TEST(ErasureCodeTest, create_ruleset)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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 : ".libs");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /* 
  * Local Variables:
  * compile-command: "cd ../.. ;
index 5d03467805cf778dc2f548bd6cdc108ff27327ed..2d4d74f3c1e9bcef42dea6ac4aec36fe5efe433d 100644 (file)
 #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)
 {
@@ -910,22 +910,6 @@ TEST(ErasureCodeLrc, encode_decode_2)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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 : ".libs");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ;
index 42cf13d0fcdfffb301979b19f7203c724464b42b..947d9f11889b1d0047775b45d8d4a7c05b7be228 100644 (file)
 #include <signal.h>
 #include <stdlib.h>
 #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<const char*> 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 : ".libs");
-  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 && 
index e7f3e0821a477fab309dacc691f9b98b968a6e43..b469596abc9ed8039d0a190bb3f00d6a692a315b 100644 (file)
@@ -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<const char*> 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 : ".libs");
-  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 &&
index ff90c8e35aea0be50f2e69721d7d9a36ae724cf3..148f348d6797a8695ec64088751fced5d3e3b6ec 100644 (file)
 
 #include <errno.h>
 #include <stdlib.h>
-#include "global/global_init.h"
 #include "erasure-code/ErasureCodePlugin.h"
-#include "common/ceph_argparse.h"
 #include "log/Log.h"
 #include "global/global_context.h"
 #include "common/config.h"
 #include "gtest/gtest.h"
+#include "test/unit.h"
 
 TEST(ErasureCodePlugin, factory)
 {
@@ -61,24 +60,6 @@ TEST(ErasureCodePlugin, factory)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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 : ".libs");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  int status = RUN_ALL_TESTS();
-  g_ceph_context->_log->stop();
-  return status;
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 &&
index a90e4cb8f5557e141f29adb01f3238a12d0a1c2b..5c2e618372ba60b73c88374a69ac71a915159b37 100644 (file)
 #include <stdlib.h>
 #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<const char*> 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 : ".libs");
-  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 &&
index a6d95205e4d68b96bf04decce60ec5d32bbcffbd..fc4b1ac128b464facbc5bce79165201c753606f9 100644 (file)
 
 #include <errno.h>
 #include <stdlib.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)
 {
@@ -55,22 +53,6 @@ TEST(ErasureCodePlugin, factory)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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 : ".libs");
-  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 &&
index a2ab31e8fd14d90ee7c4899279d203a81994462a..b48fe2a82a5352d29aee597d7b9f96ea1e4ee4bb 100644 (file)
@@ -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<const char*> 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 : ".libs");
-  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;
index 14d904ddeb34a130aed79b68da7097c8272bb8ac..23bf82e1c9f9c4455a94523896454fd774142d1c 100644 (file)
@@ -294,7 +294,8 @@ int main(int argc, char **argv)
   vector<const char*> 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");
index 597c479fa7e2ba724e3485894c3311d379e7286f..2959d7c3a4aa01ac7721fc3d73207916713ec966 100644 (file)
@@ -393,7 +393,8 @@ int main(int argc, char **argv)
   vector<const char*> 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");
index 0dc1b82c2b3ed703488c9942b232e55321c52091..6060fb7c24aba2615dbf8543772f2bfc02a8600a 100644 (file)
 #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<const char*> 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 : ".libs");
-  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<TestParam*>(pParam);
index e3c3030bf4e8209efb9509895cc6a8ad586568b8..f39900b88f07bb852bba5c3f1de0bf0b9f017c98 100644 (file)
@@ -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);
index 31a73d45a9fd3916b0466fb382124f1e64ae2f18..01250cc774bdaca05c8d8d3693c73f2731681ff9 100644 (file)
@@ -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);
index 5414cfba4defbeec76b5fd707e9d7d03bf105c6f..dd38626d677fc5528aa1fe5303c50b93a8afeb8f 100644 (file)
@@ -43,6 +43,7 @@ class ErasureCodeNonRegression {
   string base;
   string directory;
   ErasureCodeProfile profile;
+  boost::intrusive_ptr<CephContext> cct;
 public:
   int setup(int argc, char** argv);
   int run();
@@ -90,10 +91,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");
index a100a5f3a69b36c60d93a57e7cc0a745ad9e3110..6d857be41163e3ce41997d537d75d7e368164c71 100644 (file)
@@ -68,7 +68,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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);
index 2929374a04c8a93377617a57653f1fe0c528d906..719db93275f756f9df352274480d5f355ef0fb4e 100644 (file)
 
 #include "include/assert.h" // fio.h clobbers our assert.h
 
-
-// enable boost::intrusive_ptr<CephContext>
-void intrusive_ptr_add_ref(CephContext* cct) { cct->get(); }
-void intrusive_ptr_release(CephContext* cct) { cct->put(); }
-
 namespace {
 
 /// fio configuration options read from the job file
@@ -107,11 +102,10 @@ Engine::Engine(const thread_data* td) : ref_count(0)
     args.emplace_back(td->o.directory);
   }
 
-  global_init(nullptr, args, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY, 0);
-  common_init_finish(g_ceph_context);
-
   // claim the g_ceph_context reference and release it on destruction
-  cct = boost::intrusive_ptr<CephContext>(g_ceph_context, false);
+  auto cct = global_init(nullptr, args, CEPH_ENTITY_TYPE_OSD,
+                        CODE_ENVIRONMENT_UTILITY, 0);
+  common_init_finish(g_ceph_context);
 
   // create the ObjectStore
   os.reset(ObjectStore::create(g_ceph_context,
index f8c7d3eea1b78bc8ad9fc225d82fa2be00022be1..66163e5f921ba704021c4e9fa3cbc2d2cfa7dd8d 100644 (file)
@@ -16,11 +16,11 @@ int main(int argc, char **argv)
   std::vector<const char*> 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;
 }
index 60b97b52ea48179ce88795e151e70dd3165f1665..b1d09a36a6e7fe3bcf077c2493c7afa4f3a99e7f 100644 (file)
@@ -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<const char*> 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();
-}
index 854087570036931dba1010b901a2aea2d999704f..d3ae2719a7b7687018bc0c8a2ae49a32d1957a08 100644 (file)
@@ -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 <map>
 #include <sstream>
 #include <string>
+#include "test/unit.h"
+
 
 using namespace librados;
 using std::map;
@@ -1015,16 +1015,3 @@ TEST_F(LibRadosMisc, WriteSame) {
   /* write_len = data_len, i.e. same as rados_write() */
   ASSERT_EQ(0, rados_writesame(ioctx, "ws", buf, sizeof(buf), sizeof(buf), 0));
 }
-
-int main(int argc, char **argv)
-{
-  ::testing::InitGoogleTest(&argc, argv);
-
-  vector<const char*> 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();
-}
index fb8e2b70987a9054be694d1272b707f32ee5ce26..82067f384452740fc04bcfc9dbd04a9f7d521be2 100755 (executable)
 #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"
 
@@ -5351,17 +5349,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<const char*> 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();
-}
index eb2cb43bd7c117549bc51e3f3371d203c56bce79..09317fd9436706a5e5788dc2b21302ce88a7b241 100644 (file)
@@ -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"
 
@@ -257,17 +255,3 @@ TEST(MDSAuthCaps, OutputParsed) {
     ASSERT_EQ(test_values[i].output, stringify(cap));
   }
 }
-
-int main(int argc, char **argv)
-{
-  ::testing::InitGoogleTest(&argc, argv);
-
-  vector<const char*> 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();
-}
index 2d058da41a0c1152715fbc42fbe1cb0341e8858a..5682281259ed99bb96b389886c1865651e83e286 100644 (file)
@@ -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<const char*> 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();
-} 
index b1a33bc64119483811a46f2d10dd25ffa50ca79b..6fb01e9a9eba853b8b5cae42735cccc55bda0704 100644 (file)
@@ -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",
index 57115ea7fd9134241872328c36635cef8c18358f..df94701e53587f4392c734b73dc249b7e71fc419 100644 (file)
@@ -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",
index f1082466b47e73278715fd6cd5813044b4ede149..da132060dc8b181fdebe3e15e5340c1fdef3070c 100644 (file)
@@ -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",
index 5cc3c89ee751e264bb435c5d78e390e5d7a4c18a..0ec16202b43e68543b8d70795d3e008f94fa39e4 100644 (file)
 #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)
 {
@@ -245,15 +243,3 @@ TEST(pgmap, dump_object_stat_sum_2)
   ASSERT_EQ(stringify(si_t(avail)), tbl.get(0, col++));
   ASSERT_EQ(stringify(0), tbl.get(0, col++));
 }
-
-int main(int argc, char **argv) {
-  vector<const char*> args;
-  argv_to_vec(argc, (const char **)argv, args);
-  env_to_vec(args);
-
-  vector<const char*> 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();
-}
index ee50c02626f23be16eb27c597377f9c9454c4163..33ec9d0d1f6c79c810c2c1c3924861e43ac68578 100644 (file)
@@ -322,13 +322,12 @@ TEST_F(MonMsgTest, MMonJoin)
 
 int main(int argc, char *argv[])
 {
-  vector<const char*> def_args;
   vector<const char*> 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);
index 73fbac06482e7cec916ebf2aba9003ef1579689e..c1b26efa5573b90c405cec0f46d8da7223ea421e 100644 (file)
@@ -1003,9 +1003,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);
index b567743df847984d4b82590f7332b9894a43c0d8..9ab0af267aca03cbe0e8ed0051ff16401b87a760 100644 (file)
@@ -173,7 +173,8 @@ int main(int argc, char **argv)
   vector<const char*> 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);
 
index 381cd52812b4dde6c8672f65e99e02ffec21f3fe..4db724741f5767ab0c837010dea23b0a25960e12 100644 (file)
@@ -145,7 +145,8 @@ int main(int argc, char **argv)
   vector<const char*> 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);
 
index 8f4e5c4e2637147e8d08598e41c979d400a53a0d..22662af8fc42ac34fdee6e1ec2efaf98303557c0 100644 (file)
 #include "msg/async/EventKqueue.h"
 #endif
 #include "msg/async/EventSelect.h"
+#include "test/unit.h"
 
 #include <gtest/gtest.h>
 
+
 #if GTEST_HAS_PARAM_TEST
 
 class EventDriverTest : public ::testing::TestWithParam<const char*> {
@@ -354,17 +356,6 @@ TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {}
 #endif
 
 
-int main(int argc, char **argv) {
-  vector<const char*> 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 && 
index f9bc5a2c7a49f8db18fff1eda60d17e2a310c90c..4756fef7b776f74e3c21240eaf44e0f94847d496 100644 (file)
 
 #include "acconfig.h"
 #include "include/Context.h"
-#include "common/ceph_argparse.h"
-#include "global/global_init.h"
 
 #include "msg/async/Event.h"
 #include "msg/async/Stack.h"
+#include "test/unit.h"
+
 
 #if GTEST_HAS_PARAM_TEST
 
@@ -1059,17 +1059,6 @@ TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {}
 #endif
 
 
-int main(int argc, char **argv) {
-  vector<const char*> 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_networkstack &&
index 6ea65ebb11845bda247e87fc75c26174837ed2d1..5bef050e94e2668486edd42865a52b1379e28623 100644 (file)
@@ -1521,7 +1521,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");
index c523807a0aac77861df827d42ae054e5835a007c..4b040597624c053b0d55dfeb2d72d4b6bd4eb94a 100644 (file)
 #include <random>
 #include <gtest/gtest.h>
 
-#include "common/ceph_argparse.h"
-#include "common/common_init.h"
 #include "msg/async/dpdk/UserspaceEvent.h"
 #include "global/global_context.h"
-#include "global/global_init.h"
+#include "test/unit.h"
 
 class UserspaceManagerTest : public ::testing::Test {
  public:
@@ -168,18 +166,6 @@ TEST_F(UserspaceManagerTest, StressTest) {
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<const char*> 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_userspace_event &&
index 6b854f3f3a3be511ec07a17e17b642c4b6b09571..53d1d9d7f24afafc9db0d36fc149792549be260a 100644 (file)
@@ -4,18 +4,18 @@
  * In memory space allocator test cases.
  * Author: Ramesh Chander, Ramesh.Chander@sandisk.com
  */
-#include "os/bluestore/Allocator.h"
-#include "global/global_init.h"
 #include <iostream>
-#include "include/Context.h"
-#include "common/ceph_argparse.h"
-#include "global/global_init.h"
+#include <gtest/gtest.h>
+
 #include "common/Mutex.h"
 #include "common/Cond.h"
 #include "common/errno.h"
 #include "include/stringify.h"
-#include <gtest/gtest.h>
-#include <os/bluestore/BitAllocator.h>
+#include "include/Context.h"
+#include "os/bluestore/Allocator.h"
+#include "os/bluestore/BitAllocator.h"
+#include "test/unit.h"
+
 
 #if GTEST_HAS_PARAM_TEST
 
@@ -239,15 +239,3 @@ INSTANTIATE_TEST_CASE_P(
 
 TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {}
 #endif
-
-int main(int argc, char **argv)
-{
-  vector<const char*> 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);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
index a9944ccced9a1e12728f78db336ec9739cf07f79..ff946afffab95f0810388f73055a830e707ae9c9 100644 (file)
@@ -7,14 +7,15 @@
 
 #include "include/Context.h"
 #include "common/ceph_argparse.h"
-#include "global/global_init.h"
 #include "os/bluestore/BitAllocator.h"
+#include "test/unit.h"
 #include <stdio.h>
 #include <assert.h>
 #include <math.h>
 #include <sstream>
 #include <gtest/gtest.h>
 
+
 #define bmap_test_assert(x) ASSERT_EQ(true, (x))
 #define NUM_THREADS 16
 #define MAX_BLOCKS (1024 * 1024 * 1)
@@ -730,18 +731,3 @@ TEST(BitAllocator, test_bmap_alloc_concurrent)
   }
 
 }
-
-int main(int argc, char **argv)
-{
-  vector<const char*> 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);
-  int r = RUN_ALL_TESTS();
-  g_ceph_context->put();
-  return r;
-}
index 46fd25dcebbf6931971892ce548cd501ee725510..279b10b99691e0de935822f2429c20030c056d93 100644 (file)
@@ -246,7 +246,8 @@ int main(int argc, char **argv)
   vector<const char*> 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();
index b42d60dd154da805a89e656d7fc6262ea61b03ce..d58f42c3925265d8f63fa050f355231266153c8b 100644 (file)
@@ -1,12 +1,12 @@
 #include <gtest/gtest.h>
 #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 <iostream>
+
 using namespace std;
 
 const string dir("rocksdb.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<const char*> 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();
-}
index a05e8755dd1a0ce58782d0659a0763d8742943ee..34654295d770f4e95d509c43ecc2961400963347 100644 (file)
@@ -432,7 +432,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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");
index 877f5a31371cce0e373bfaff8e15732154002af9..b96eb0213116d739a0e0ba8732b1595c96c3c03e 100644 (file)
@@ -5563,7 +5563,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");
@@ -5599,9 +5600,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();
 }
 
 /*
index d189eeac712195240e4bb815cd54bb574fa19a78..01763fec35c68b5fd798481c59ec4c016f33856f 100644 (file)
@@ -577,8 +577,9 @@ int main(int argc, char **argv) {
   def_args.push_back("--debug-bluefs=1/20");
   def_args.push_back("--debug-bdev=1/20");
 
-  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);
   g_ceph_context->_conf->set_val(
     "enable_experimental_unrecoverable_data_corrupting_features",
index ea6613c5e8429ba9c712c938a016f1ca34e2b446..d68beba7c79365ee11ba132fce553d2fb545be9d 100644 (file)
@@ -1011,10 +1011,9 @@ int main(int argc, char **argv) {
   vector<const char*> 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);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
   ::testing::InitGoogleTest(&argc, argv);
-  int r = RUN_ALL_TESTS();
-  g_ceph_context->put();
-  return r;
+  return RUN_ALL_TESTS();
 }
index edb8e9b3bfc1e2713661b95626cb7273c4f702ac..6b465b12f279c2e35793749389d42605f7a0d9e6 100644 (file)
@@ -45,7 +45,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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);
 
index 75ebc3377d3c43d8c9a0f81bc35a9932d8f9d091..0216b78f3347621f58fecfc65949751306a0a138 100644 (file)
@@ -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);
 
index 8aed8ade72a3bd364e9a00cd5bbcacde53566400..d55841c9434ed149d614392c7efd2cad2e2114e9 100644 (file)
@@ -278,7 +278,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",
index 090c6f4bc1fbd2b611762126472d5bf4815a174e..6607530f032557ba4b11a10c480cb8caa2761e82 100644 (file)
@@ -173,10 +173,6 @@ TEST_F(MemStoreClone, CloneRangeHoleEnd)
   ASSERT_EQ(expected, result);
 }
 
-// enable boost::intrusive_ptr<CephContext>
-void intrusive_ptr_add_ref(CephContext *cct) { cct->get(); }
-void intrusive_ptr_release(CephContext *cct) { cct->put(); }
-
 int main(int argc, char** argv)
 {
   // default to memstore
@@ -189,13 +185,10 @@ int main(int argc, char** argv)
   vector<const char*> args;
   argv_to_vec(argc, (const char **)argv, args);
 
-  global_init(&defaults, args, CEPH_ENTITY_TYPE_CLIENT,
-              CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(&defaults, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
-  // release g_ceph_context on exit
-  boost::intrusive_ptr<CephContext> cct{g_ceph_context, false};
-
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index bbe3c74675e6bb1802610bb3370f00cebd3c2251..2c55fb27bc0f629f52ba85582a6b8cd6194ec004 100644 (file)
@@ -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);
 
index 5ec8503fe30164019493a392b942e7d74958db32..72c43a48ca3e8afeb5904a0342a0b580f4ad98d2 100644 (file)
@@ -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<const char*>::iterator i = args.begin();
index 1ff2e4d8bd22af0ef8fe1337bc98f9e24f8922e8..c377fe482a6d1e8e73445dc5fb47a44905be5f16 100644 (file)
@@ -450,7 +450,8 @@ int main(int argc, char **argv) {
     vector<const char*> 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);
index 3410fe7ccbd166eb26d81d8a2a95c4bea82195c0..6c660e8f9f3ffeb2da3a7c54dea1a640fd8808d6 100644 (file)
 using namespace std;
 
 int main(int argc, char **argv) {
-  std::vector<const char *> preargs;
   std::vector<const char*> 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);
index fbd82a64165e0275da57fd113209aa7dcf654d71..3cff0007f946150437927f24fe639b3bb02071cf 100644 (file)
 
 #include <stdio.h>
 #include <signal.h>
+#include <gtest/gtest.h>
 #include "osd/OSD.h"
 #include "os/ObjectStore.h"
 #include "mon/MonClient.h"
 #include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include <gtest/gtest.h>
 #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<const char*> 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:
index 4c2bb06793a23ea43b40ef65bb06ed8f1665ba6b..d2b4657c5e129bde25a41b94236815bd4f6fce72 100644 (file)
@@ -23,9 +23,7 @@
 #include <signal.h>
 #include "osd/PGLog.h"
 #include "osd/OSDMap.h"
-#include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include <gtest/gtest.h>
+#include "test/unit.h"
 
 class PGLogTest : public ::testing::Test, protected PGLog {
 public:
@@ -2158,17 +2156,6 @@ TEST_F(PGLogTest, ErrorNotIndexedByObject) {
   EXPECT_EQ(del.reqid, entry->reqid);
 }
 
-int main(int argc, char **argv) {
-  vector<const char*> 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:
index a753295e2125be6bc10349c647bcc07997013152..a002ee5c8dc89b1b4ee51063374660e8092b1741 100644 (file)
@@ -355,7 +355,8 @@ int main(int argc, const char **argv)
   std::vector<const char*> 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;
index 5b74c35132cf1a6bcd540178051335ca4cdc0c01..bb451ea1f1d212445d5c01acea91a810675639e1 100644 (file)
@@ -50,8 +50,9 @@ int main(int argc, char **argv) {
   preargs.push_back("--admin-socket");
   preargs.push_back(get_rand_socket_path());
   std::vector<const char*> 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();
index a8646f37de8c897aafe3731e9bd6d34213f746e0..b77e03f3eca1f580528e63f3de233c539b1fa535 100644 (file)
@@ -1018,7 +1018,8 @@ int main(int argc, char *argv[])
   vector<const char*> 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();
 
index 61c463b1bd4eef4225a96d6076cc29d5ea7839b4..9ad4cd01899f80e22c881d45d0e75dde4aa194d3 100644 (file)
@@ -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;
 }
index 4521dd6defb90e596138fc7d1a7126c0441e8422..7c3da281ab38a338e49484239d226a8c3c65ef35 100644 (file)
@@ -48,7 +48,8 @@ int main(int argc, char** argv)
   vector<const char*> 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);
 
   curl_global_init(CURL_GLOBAL_ALL);
index ac36d832d366e4fca2706c6a43c07ef43d434f7b..8e3720453a050af894720aadef35c68ed97ca276 100644 (file)
@@ -3,9 +3,7 @@
 #include "gtest/gtest.h"
 
 #include "rgw/rgw_compression.h"
-#include "global/global_init.h"
-#include "common/ceph_argparse.h"
-
+#include "test/unit.h"
 
 struct MockGetDataCB : public RGWGetDataCB {
   int handle_data(bufferlist& bl, off_t bl_ofs, off_t bl_len) override {
@@ -51,16 +49,3 @@ TEST(Decompress, FixupRangePartial)
   ASSERT_EQ(range_t(12, 24), fixup_range(&decompress, 16, 999));
   ASSERT_EQ(range_t(18, 24), fixup_range(&decompress, 998, 999));
 }
-
-// initialize a CephContext
-int main(int argc, char** argv)
-{
-  vector<const char*> 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();
-}
index 320f550dfab08dec159301e2307dfd689cb9aac3..efedd269c4892cd883ed3c6d749df9ee042e776a 100644 (file)
@@ -322,7 +322,8 @@ int main(int argc, char** argv)
   vector<const char*> 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);
index e2c225b20ac6ae7580c54ebd00b815d3aaa43c4a..e215e7033334fdc6108b035d5903ad5d34f5ac41 100644 (file)
 #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<const char*> 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:
index 12cb43a6fabb7e3f009dbcd606ba1331ef24dd96..b03a2361d98961ec9852a692c9a607498d02c7bf 100644 (file)
@@ -883,7 +883,8 @@ int main(int argc, char *argv[]){
   vector<const char*> 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);
index 8a1172c3cc42f509b16166005a62ed998a427d0d..0d3c818fbb4c03add7e29d4a2eae49636675098b 100644 (file)
@@ -70,7 +70,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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];
index 37ad3a31826f03479afbb441f296397fc6963dd3..32ad4fc45bb98584971f9a49ae0186d7328df1b6 100644 (file)
@@ -270,7 +270,8 @@ int main(int argc, char **argv)
   vector<const char*> 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);
 
   // enable debug mode for the tests
index b9e0d717664a5608e4970954a1d77a1571a2c6a8..a8d83d5708cb3669cc0fc2ef7859f1f99b50907d 100644 (file)
@@ -44,7 +44,8 @@ int main(int argc, const char **argv)
   vector<const char*> 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;
index 4f5affe9fa037b4e7634d1a13a9a09aa79d6352b..a7be06cfefbdf3c259efbcf91d1581893f7fe75d 100644 (file)
@@ -1572,7 +1572,8 @@ int main(int argc, char *argv[]){
   vector<const char*> 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);
index 063b9ea88fc2531f33770703707fcd4402194f3f..0d61c18e7056084ac05fd19c536aa40fb787214a 100644 (file)
@@ -908,7 +908,8 @@ int main(int argc, char *argv[]){
   vector<const char*> 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);
index 451d6df22f2ec126442b72de9e743f85d8f4e876..00dde0cb81571a59197ae9dfa486cdcc755fb559 100644 (file)
@@ -805,7 +805,8 @@ int main(int argc, char *argv[]){
   vector<const char*> 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, false);
   g_test = new admin_log::test_helper();
index 53f1d2928972908c5c2a87aa5ecedd39335251be..512440913976c7de3990a68b15b7a5c54f38deec 100644 (file)
@@ -4,15 +4,14 @@
 #include <set>
 #include <boost/scoped_ptr.hpp>
 #include <sys/types.h>
+#include <cstdlib>
 
 #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;
 
@@ -660,14 +659,3 @@ TEST_F(SnapMapperTest, MultiPG) {
   init(50);
   run();
 }
-
-int main(int argc, char **argv)
-{
-  vector<const char*> 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();
-}
index 2e0c23fc6783d5e27627a7fea13d26a0790ce683..cab2f727784169fd705257789962b60c44ade605 100644 (file)
@@ -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<const char*> 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();
-}
index e671e47e04bcf61d4d275a6c6d4d77ef71b6bd50..722ce889dda1138e7bc0844b54e7df77ddbdd557 100644 (file)
@@ -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
index d67f302a8b3eb2cbbbf2c56f771b7f8f443f61d5..b5ec3e4bfc9ddc34a5b16c96c322d1a48aea7e93 100644 (file)
@@ -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<const char*> 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();
-}
index 2ef1fcd7d8481c68346390b2c2dfb10085b6eb77..93bed6b6e9c9cad9eaea714678e3179108dbd025 100644 (file)
@@ -12,7 +12,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);
index 6c5d658e33bfc0812b5ad4f02593550f318e44f1..a693461bc927a85849bba854ce161e7d08fbeb7f 100644 (file)
@@ -73,7 +73,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;
index b1fb373ed4327d9b4e5e5e228fe2453504fb6052..5c877942b9fc4ab61fcc1059f1f04b9f6021a8db 100644 (file)
@@ -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
  * initialization for you.
  */
 int main(int argc, char **argv) {
-  std::vector<const char*> args;
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
-             CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
+  std::vector<const char*> 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();
 }
index 5c57b8927fe1074c2e08a6d51061f6a48c903c16..d1cb8cb3297b360ef0dc19b4e43976548ff14f36 100644 (file)
@@ -152,7 +152,8 @@ int main(int argc, char **argv) {
   vector<const char*> 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;
index a84cadcf69db70897937cfb8fd7fe3dfeee1fd6a..a6ab88d84f6982602d63a018cbd25f0a34a2cc5d 100644 (file)
@@ -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);
 
index d7c3724c908ecc0081419acc68e687e50a54c585..db6b63d141883dd4666eeb633cc36779cdc22c23 100644 (file)
@@ -63,8 +63,9 @@ int main(int argc, const char **argv)
   map<string,bufferlist> 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;
index f047e7ca87cc79dec820df4287fdfafa0553e565..7a50c138e607e58c788e5ba8510bbfcfeb0bf9aa 100644 (file)
@@ -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<CephContext,
+                 std::function<void(CephContext*)> > cct_deleter{
+      g_ceph_context,
+      [](CephContext *p) {p->put();}
+  };
+
   g_conf->apply_changes(NULL);
   g_conf->complain_about_parse_errors(g_ceph_context);
 
index 61d545ece96b040255065f8fb76fe5d513a131f7..751bf106c70410f8964fe22ade72c9ee516fc1c1 100644 (file)
@@ -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);
index 5198ebf5d358aaf4d591059511ee38caa70d35ae..c39f6a2111be2f4fd82a01f9111672e5667682e6 100644 (file)
@@ -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);
index e2636d202f43fe10f8609090703bc863383baabb..d5ce63a98c1bb83be410926ad1a6d31546d843e2 100644 (file)
@@ -319,13 +319,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)
@@ -2378,12 +2371,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")) {
@@ -2444,7 +2437,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";
@@ -2452,29 +2445,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);
 
@@ -2483,7 +2476,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 {
@@ -2493,7 +2486,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 {
@@ -2506,16 +2499,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);
@@ -2538,7 +2531,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
@@ -2547,10 +2540,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
@@ -2558,40 +2551,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" || op == "fsck-deep") {
     int r = fs->fsck(op == "fsck-deep");
     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__);
@@ -2602,7 +2595,7 @@ int main(int argc, char **argv)
     } else {
       cerr << "Mount failed with '" << cpp_strerror(ret) << "'" << std::endl;
     }
-    myexit(1);
+    return 1;
   }
 
   if (op == "fuse") {
@@ -2612,12 +2605,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<coll_t> ls;
@@ -3328,5 +3321,5 @@ out:
 
   if (ret < 0)
     ret = 1;
-  myexit(ret);
+  return ret;
 }
index ffb452883938aa2d6de50bf117fa94730c56a9f2..0fb6d98a1f1cccc70a397b7afa443065fb5f35bd 100644 (file)
@@ -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);
index 5e9c05a0717b80f42bd760de0dc07bbac18c1052..dcf83bbfd1c3929d0dc0015bc08cefc66e7d5e94 100644 (file)
@@ -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;
index e9083a5acf52561a24b4017ef6676c77df4f0822..2764feb0fcb3194090bc0107d83e8eef9fbcb9ec 100644 (file)
@@ -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;
index 749de6f84d61b0299ed8c5149cb00150db6a9a0e..ef09df4947358f968da5bf5fb1f6cc2c919fd20b 100644 (file)
@@ -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;
index d4bc24fc1d8de9dbb9fa1c30259a4f0527fe8743..19b970aed1a7a37bbf7e8f821422e569ad6fff3e 100644 (file)
@@ -271,8 +271,9 @@ int main(int argc, const char **argv)
   // only parse arguments from CEPH_ARGS, if in the environment
   vector<const char *> 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;
index 274f67c0c28d0734fcb15fca1735917c81760eae..b600f5a5393ec80a6465853355c95e8508f2f933 100644 (file)
@@ -183,8 +183,9 @@ int main(int argc, const char **argv)
   list<string> rm;
   list<feature_op_t> features;
 
-  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<const char*>::iterator i = args.begin(); i != args.end(); ) {
index a01907538600e1c3f1909cd4aae2023530a21168..8df5c3c3be499a93fe7e26a6ff71e95f59adc34f 100644 (file)
@@ -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];
index 99a55ba82e26a22fd706fd6523dc906c81d45f5b..d611ed7b25a3ac8bb65b2ccab82b0b5a4f445a0d 100644 (file)
@@ -3548,7 +3548,8 @@ int main(int argc, const char **argv)
     }
   }
 
-  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::vector<const char*>::iterator i;
index bfa18d345b68fe27c7045b1a941a9d5310de0951..c81faf83696f59cf077d884839cc574bc3ac5657 100644 (file)
@@ -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);
index 0bdafe8767586cdb079773d106d863703ecb27f9..a423555eac9a0d1832cb60a66b61092f11514eba 100644 (file)
@@ -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;
 }
index 74c269e74afe381ecdb2b97807814b18343f6402..029d21656c8be2cd7d1888b7a9dc2c3532bfd8a1 100644 (file)
@@ -754,8 +754,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<const char*>::iterator i;