]> git-server-git.apps.pok.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)
committerNathan Cutler <ncutler@suse.com>
Tue, 25 Apr 2017 13:46:59 +0000 (15:46 +0200)
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>
(cherry picked from commit cb1cda96713b2ec0f6418c4cbe3d964c2020729c)

Conflicts:
src/ceph_fuse.cc
src/ceph_mgr.cc
src/global/global_init.cc
src/rgw/rgw_main.cc
src/test/compressor/test_compression.cc
src/test/compressor/test_compression_plugin.cc
src/test/compressor/test_compression_plugin_snappy.cc
src/test/compressor/test_compression_plugin_zlib.cc
src/test/compressor/test_compression_snappy.cc
src/test/compressor/test_compression_zlib.cc
src/test/erasure-code/TestErasureCode.cc
src/test/erasure-code/TestErasureCodeExample.cc
src/test/erasure-code/TestErasureCodeIsa.cc
src/test/erasure-code/TestErasureCodeJerasure.cc
src/test/erasure-code/TestErasureCodeLrc.cc
src/test/erasure-code/TestErasureCodePlugin.cc
src/test/erasure-code/TestErasureCodePluginIsa.cc
src/test/erasure-code/TestErasureCodePluginJerasure.cc
src/test/erasure-code/TestErasureCodePluginLrc.cc
src/test/erasure-code/TestErasureCodePluginShec.cc
src/test/erasure-code/TestErasureCodeShec.cc
src/test/erasure-code/TestErasureCodeShec_thread.cc
src/test/fio/fio_ceph_objectstore.cc
src/test/librados/misc.cc
src/test/mon/PGMap.cc
src/test/msgr/test_async_networkstack.cc
src/test/msgr/test_userspace_event.cc
src/test/objectstore/Allocator_test.cc
src/test/objectstore/BitAllocator_test.cc
src/test/objectstore/test_bluefs.cc
src/test/objectstore/test_bluestore_types.cc
src/test/objectstore/test_memstore_clone.cc
src/test/osd/TestPGLog.cc
src/test/rgw/test_http_manager.cc
src/test/rgw/test_rgw_compression.cc
src/test/test_mempool.cc
src/tools/rados/rados.cc

123 files changed:
src/ceph_fuse.cc
src/ceph_mds.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_plugin.cc
src/test/compressor/test_compression_plugin_snappy.cc
src/test/compressor/test_compression_plugin_zlib.cc
src/test/compressor/test_compression_snappy.cc
src/test/compressor/test_compression_zlib.cc
src/test/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/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_msgr.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_idempotent.cc
src/test/objectstore/test_idempotent_sequence.cc
src/test/objectstore/test_kv.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_rgw_period_history.cc
src/test/test_arch.cc
src/test/test_cors.cc
src/test/test_filejournal.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 a6824481ec97907f60e28c60d57988aa4c4947a8..e8d57c74f6a97cc13d07540aedc761175604498b 100644 (file)
@@ -78,8 +78,9 @@ int main(int argc, const char **argv, const char *envp[]) {
   }
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON,
-             CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_DAEMON,
+                        CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
     if (ceph_argparse_double_dash(args, i)) {
       break;
@@ -289,7 +290,6 @@ int main(int argc, const char **argv, const char *envp[]) {
     }
     
     delete messenger;
-    g_ceph_context->put();
     free(newargv);
     
     delete mc;
index 58bda1b5422acaf85861a394fb86cebe0127599d..40ac730a3b72c38a3ca468e7e561e11d619e62d8 100644 (file)
@@ -93,8 +93,9 @@ int main(int argc, const char **argv)
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_MDS, CODE_ENVIRONMENT_DAEMON,
-             0, "mds_data");
+  auto cct = global_init(NULL, args,
+                        CEPH_ENTITY_TYPE_MDS, CODE_ENVIRONMENT_DAEMON,
+                        0, "mds_data");
   ceph_heap_profiler_init();
 
   std::string val, action;
@@ -230,8 +231,6 @@ int main(int argc, const char **argv)
     delete msgr;
   }
 
-  g_ceph_context->put();
-
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
   snprintf(s, sizeof(s), "gmon/%d", getpid());
index 4bb5c4a5793fcd87d22bed7cd1cae3f158c0e1e9..d21445d32aa0d1b2c5e8b3765ac9ada4ffb84a2f 100644 (file)
@@ -257,8 +257,9 @@ int main(int argc, const char **argv)
     }
   }
 
-  global_init(&def_args, args,
-              CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_DAEMON, flags, "mon_data");
+  auto cct = global_init(&def_args, args,
+                        CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_DAEMON,
+                        flags, "mon_data");
   ceph_heap_profiler_init();
 
   uuid_d fsid;
@@ -781,7 +782,6 @@ int main(int argc, const char **argv)
   delete msgr;
   delete client_throttler;
   delete daemon_throttler;
-  g_ceph_context->put();
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
index 3ae3165a5149ac2d292878a222bb271c9657b136..70377fe53e0e7cdafc587623771640f684fd69fe 100644 (file)
@@ -118,8 +118,9 @@ int main(int argc, const char **argv)
   // option, therefore we will pass it as a default argument to global_init().
   def_args.push_back("--leveldb-log=");
 
-  global_init(&def_args, args, CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_DAEMON,
-             0, "osd_data");
+  auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_OSD,
+                        CODE_ENVIRONMENT_DAEMON,
+                        0, "osd_data");
   ceph_heap_profiler_init();
 
   // osd specific args
@@ -646,7 +647,6 @@ flushjournal_out:
 
   client_byte_throttler.reset();
   client_msg_throttler.reset();
-  g_ceph_context->put();
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
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 daff81a323a9fdf65be0146913c0603f22b5c4ad..8750a7b2c8c28849803f1bb9ae085e3c4bfcc690 100644 (file)
@@ -134,11 +134,12 @@ void global_pre_init(std::vector < const char * > *alt_def_args,
   g_conf->complain_about_parse_errors(g_ceph_context);
 }
 
-void global_init(std::vector < const char * > *alt_def_args,
-                std::vector < const char* >& args,
-                uint32_t module_type, code_environment_t code_env,
-                int flags,
-                const char *data_dir_option, bool run_pre_init)
+boost::intrusive_ptr<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;
@@ -331,6 +332,18 @@ void global_init(std::vector < const char * > *alt_def_args,
 
   if (code_env == CODE_ENVIRONMENT_DAEMON && !(flags & CINIT_FLAG_NO_DAEMON_ACTIONS))
     output_ceph_version();
+
+  return boost::intrusive_ptr<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 79c0bad5c7e5d8541d85177276733cc10acaeb7d..69ff6dda7da8a112de3abbcabbea3dad5b398a97 100644 (file)
@@ -19,7 +19,8 @@
 #include <stdint.h>
 #include <string>
 #include <vector>
-
+#include <boost/intrusive_ptr.hpp>
+#include "include/assert.h"
 #include "common/code_environment.h"
 #include "common/common_init.h"
 
@@ -30,7 +31,8 @@ class CephContext;
  * daemons and utility programs need to call. It takes care of a lot of
  * initialization, including setting up g_ceph_context.
  */
-void global_init(std::vector < const char * > *alt_def_args,
+boost::intrusive_ptr<CephContext>
+     global_init(std::vector < const char * > *alt_def_args,
                 std::vector < const char* >& args,
                 uint32_t module_type,
                 code_environment_t code_env,
@@ -38,6 +40,9 @@ void global_init(std::vector < const char * > *alt_def_args,
                 const char *data_dir_option = 0,
                 bool run_pre_init = true);
 
+void intrusive_ptr_add_ref(CephContext* cct);
+void intrusive_ptr_release(CephContext* cct);
+
 // just the first half; enough to get config parsed but doesn't start up the
 // cct or log.
 void global_pre_init(std::vector < const char * > *alt_def_args,
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 0e4075c718083749ed2600e6dafb8c4c1cf56b0e..8ba0bdbe2f62d7940f0db92862c5a331883b1e29 100644 (file)
@@ -440,10 +440,10 @@ namespace rgw {
     def_args.push_back("--keyring=$rgw_data/keyring");
     def_args.push_back("--log-file=/var/log/radosgw/$cluster-$name.log");
 
-    global_init(&def_args, args,
-               CEPH_ENTITY_TYPE_CLIENT,
-               CODE_ENVIRONMENT_DAEMON,
-               CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
+    cct = global_init(&def_args, args,
+                     CEPH_ENTITY_TYPE_CLIENT,
+                     CODE_ENVIRONMENT_DAEMON,
+                     CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
 
     Mutex mutex("main");
     SafeTimer init_timer(g_ceph_context, mutex);
@@ -550,7 +550,7 @@ namespace rgw {
     rgw_perf_stop(g_ceph_context);
 
     dout(1) << "final shutdown" << dendl;
-    g_ceph_context->put();
+    cct.reset();
 
     ceph::crypto::shutdown();
 
index 3de43b56a294f4263f04c67fb38d3808d6a0a57c..4e7c4bdd9ac7977937f8fe253b037cb68d08cd59 100644 (file)
@@ -2192,7 +2192,8 @@ int main(int argc, char **argv)
   argv_to_vec(argc, (const char **)argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                         CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
   rgw_user user_id;
index f418a6d19739fe302b6e6ee5486c6a966f5a0840..46014477bea59149b53802ba3d6726327a94ec38 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 ed9ab67be562b545c36fb654c71737e58f6c6dbf..fd821bfcf81c53d68d599af8f39e59f98690cefb 100644 (file)
@@ -178,8 +178,6 @@ static RGWRESTMgr *set_logging(RGWRESTMgr *mgr)
   return mgr;
 }
 
-void intrusive_ptr_add_ref(CephContext* cct) { cct->get(); }
-void intrusive_ptr_release(CephContext* cct) { cct->put(); }
 
 /*
  * start up the RADOS connection and then handle HTTP messages as they come in
@@ -249,8 +247,10 @@ int main(int argc, const char **argv)
   // Now that we've determined which frontend(s) to use, continue with global
   // initialization. Passing false as the final argument ensures that
   // global_pre_init() is not invoked twice.
-  global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON,
-             flags, "rgw_data", false);
+  // claim the reference and release it after subsequent destructors have fired
+  auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_DAEMON,
+                        flags, "rgw_data", false);
 
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ++i) {
     if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
@@ -290,9 +290,6 @@ int main(int argc, const char **argv)
 
   common_init_finish(g_ceph_context);
 
-  // claim the reference and release it after subsequent destructors have fired
-  boost::intrusive_ptr<CephContext> cct(g_ceph_context, false);
-
   rgw_tools_init(g_ceph_context);
 
   rgw_init_resolver();
index f044db7f875e254803265424690559d4c5134185..d2897eb5da0519a2add48c2b3cb6d79662b2123d 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 e3ab7daa88cdc35d48fe08a2ad35f2b949c84cb4..632f7f7414b3e7e7470b7cfb313d05eb7f215a95 100644 (file)
@@ -1786,7 +1786,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 124018d50245205424b1a3054fb2143887fb53c1..08c4e025c813c7fcfbb76f5ace41c1d17cae5952 100644 (file)
@@ -71,7 +71,8 @@ int main(int argc, const char **argv)
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
   test_fn_t fn = NULL;
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 a2001214dcbc1f11224730d440a48cb5ec948ace..279b62edbab42f8990815aa923c5f2e407e7e2de 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>
@@ -412,17 +411,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 4ea8dc5a951790461a24cb2a972b98e283ab0028..67fae85b71e9c9f487b5edfc65527c31baa4e1ba 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 45cffafaf318a7073fc5cf3053b283558b9d2c2a..6f2ce80f915e251d60672e9d72d8adfe2b365b13 100644 (file)
 #include <signal.h>
 #include <stdlib.h>
 #include <string.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
+#include "gtest/gtest.h"
 #include "compressor/CompressionPlugin.h"
 #include "common/ceph_argparse.h"
+#include "global/global_init.h"
 #include "global/global_context.h"
 #include "common/config.h"
 
@@ -51,7 +51,10 @@ int main(int argc, char **argv) {
   vector<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 9e733f4396fcb00cfdbd5ac89697c5a04c502563..c3be2c3b45cad7cbd2ebb0328f3f4b330435c465 100644 (file)
 #include <errno.h>
 #include <signal.h>
 #include <stdlib.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
+#include "gtest/gtest.h"
 #include "compressor/Compressor.h"
 #include "common/ceph_argparse.h"
+#include "global/global_init.h"
 #include "global/global_context.h"
 #include "common/config.h"
 
@@ -35,7 +35,10 @@ int main(int argc, char **argv) {
   vector<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 5af5d14aa3c08372fa13c9762d6317406d5f5c30..529f3c90affa6349d604d52129c44e84a7048d60 100644 (file)
 #include <errno.h>
 #include <signal.h>
 #include <stdlib.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
+#include "gtest/gtest.h"
 #include "compressor/Compressor.h"
 #include "common/ceph_argparse.h"
+#include "global/global_init.h"
 #include "global/global_context.h"
 #include "common/config.h"
 
@@ -34,7 +34,10 @@ int main(int argc, char **argv) {
   vector<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 bbd315cf308879503f92b136874f1a084172df79..9bdfb34b411539de4efdf2c40edec7b4f597594c 100644 (file)
 
 #include <errno.h>
 #include <string.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
 #include "compressor/snappy/SnappyCompressor.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "common/config.h"
+#include "test/unit.h"
 
 TEST(SnappyCompressor, compress_decompress)
 {
@@ -70,21 +69,6 @@ TEST(SnappyCompressor, sharded_input_decompress)
   EXPECT_EQ(res, 0);
 }
 
-int main(int argc, char **argv) {
-  vector<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 : "lib");
-  g_conf->set_val("plugin_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 && 
index 6ba64452f9ba783d380af02d31ecd042902eeb83..34252197e444aefeb2d98a4ca4d36b47fc260f8f 100644 (file)
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
-#include <gtest/gtest.h>
-#include "global/global_init.h"
 #include "compressor/zlib/CompressionZlib.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "common/config.h"
+#include "test/unit.h"
 
 TEST(CompressionZlib, compress_decompress)
 {
@@ -62,21 +61,6 @@ TEST(CompressionZlib, compress_decompress_chunk)
   EXPECT_TRUE(exp.contents_equal(after));
 }
 
-int main(int argc, char **argv) {
-  vector<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 : "lib");
-  g_conf->set_val("compression_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 && 
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 c46fa87ab5409b8c693053e6fcc2f8d012faa67e..997a2dfbcb8886ac3670622cd4c3a1c64caba1a8 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>
 
@@ -635,16 +633,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 56759c4af1899c9a660744f07c434bc449187453..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ;
index eff590f479c7e026f4b1a6c50ac843c2a82b991e..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; 
index 9c01e951c681766ce0a31542bd0d289e2d1d456b..a8c9a629811115b001fa77d215d7bea7f487907f 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;
 
@@ -955,22 +955,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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 unittest_erasure_code_isa &&
index 52d7c685e840b96aa4942a78ca40e4cc53997c7e..db0b65fccc34ee79d3a6e36192632b971d374ff8 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 {
@@ -357,22 +357,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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /* 
  * Local Variables:
  * compile-command: "cd ../.. ;
index b9452310af669d11768c3d78ef303aaa5c23f584..9057a882f5e6370ac88773731393286b104ed43c 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)
 {
@@ -908,22 +908,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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ;
index 45f1b28168077526f19303beadb12d0d947dfb0c..8729f553d659d52ab562fad869edad392ae5bfa7 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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 && 
index 1044017df9565937fa7dd6d62ec90f847fd411a5..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 &&
index f43f296b1fca70d173aaa191c5b30a5bc58b46fe..0c399f078f2aa6e48df171d95292c7b883d1f80a 100644 (file)
 #include "arch/probe.h"
 #include "arch/intel.h"
 #include "arch/arm.h"
-#include "global/global_init.h"
 #include "erasure-code/ErasureCodePlugin.h"
-#include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "common/config.h"
 #include "gtest/gtest.h"
+#include "test/unit.h"
 
 TEST(ErasureCodePlugin, factory)
 {
@@ -249,22 +248,6 @@ TEST(ErasureCodePlugin, sse)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 &&
index f88d1cd4fa35581e0b2d4b58e087922e2a1fcc51..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 &&
index 39d552b0111ce8bd8edd6e9aac1f35550a79513d..2f04637d1d6a85adcc70258fcaf536c3ef4117d4 100644 (file)
 #include "arch/probe.h"
 #include "arch/intel.h"
 #include "arch/arm.h"
-#include "global/global_init.h"
 #include "erasure-code/ErasureCodePlugin.h"
-#include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "common/config.h"
-#include "gtest/gtest.h"
+#include "test/unit.h"
 
 TEST(ErasureCodePlugin, factory)
 {
@@ -245,22 +243,6 @@ TEST(ErasureCodePlugin, sse)
   }
 }
 
-int main(int argc, char **argv)
-{
-  vector<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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 /*
  * Local Variables:
  * compile-command: "cd ../.. ; make -j4 &&
index 8da9e69850ae6660f8d55cded1c0eddeee8a894e..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 void* thread1(void* pParam)
 {
   ErasureCodeShec* shec = (ErasureCodeShec*) pParam;
index c8715ebe516e6a131e25e53e2e29074f92629772..7937906d355bed70d3bc87aa65e7230238f8fdbd 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 ea68ab24b0bcc77f0567289f152163bba9fcfdd6..005fe7de51228970c01169a00b83c037c4e6f3f5 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 3adab597b872535c66a07200df509b8bea8d564c..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 : "lib");
-  g_conf->set_val("erasure_code_dir", directory, false, false);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
-
 void* thread1(void* pParam)
 {
   TestParam* param = static_cast<TestParam*>(pParam);
index aaa4304b9b75f23d324aee8af87d72015a6a733a..8ed2b0ce49e73feb53cd2c2d3ebc4c1432fe1e82 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 7b0fa2fe72d338364607b0f1791fd8de9f2862bd..46249998a66ae7648bb52c572da1baa257a04d44 100644 (file)
@@ -44,6 +44,7 @@ class ErasureCodeNonRegression {
   string base;
   string directory;
   ErasureCodeProfile profile;
+  boost::intrusive_ptr<CephContext> cct;
 public:
   int setup(int argc, char** argv);
   int run();
@@ -94,10 +95,9 @@ int ErasureCodeNonRegression::setup(int argc, char** argv) {
     ceph_options.push_back(i->c_str());
   }
 
-  global_init(
-    &def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT,
-    CODE_ENVIRONMENT_UTILITY,
-    CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
+  cct = global_init(&def_args, ceph_options, CEPH_ENTITY_TYPE_CLIENT,
+                   CODE_ENVIRONMENT_UTILITY,
+                   CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->apply_changes(NULL);
   const char* env = getenv("CEPH_LIB");
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 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 3212e03ee3c38f7aad391214c16d44864e22039b..9d8c76c7fabd2c0e6baed22cdc6714e099b40e7b 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;
@@ -944,18 +944,3 @@ TEST_F(LibRadosMiscPP, CopyScrubPP) {
     cout << "done waiting" << std::endl;
   }
 }
-
-
-
-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 3f9a5b33d10451dc616028b6b97e9fd0b7430d9c..fe93ecc83a9238c38a944fa6afec678755fde441 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"
 
@@ -5347,17 +5345,3 @@ TEST_F(LibRadosTwoPoolsECPP, CachePin) {
   // wait for maps to settle before next test
   cluster.wait_for_latest_osdmap();
 }
-
-int main(int argc, char **argv)
-{
-  ::testing::InitGoogleTest(&argc, argv);
-
-  vector<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 919095d9d2fb927c3aa410047691f96ac1bdee7c..123a214e73c6f932d31b2a2e23de9aaa04e278dd 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"
 
@@ -244,17 +242,3 @@ TEST(MDSAuthCaps, OutputParsed) {
     ASSERT_EQ(test_values[i].output, stringify(cap));
   }
 }
-
-int main(int argc, char **argv)
-{
-  ::testing::InitGoogleTest(&argc, argv);
-
-  vector<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 a63cb2804bc65a2a78cd77070c97e960e9493fd7..f0535eff204abe4c01b4be8720aaa90aff92ac61 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 674ef3e948d6ee61e1399e92ed4961a2df1f0fdc..a88c940454e2eefa864471e93ab4b226097ac2dd 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 414668f37e882e79cc1a2d2079b8b042e11dd763..7586b9674edcc456cb23107d8c652ca44c78c0c6 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 f13fa8936669c6017f9f3e858ef5afb401b7a4eb..beedbbb2c8983cc4cba55adfa98ada74e124de2b 100644 (file)
@@ -14,9 +14,8 @@
 #include "mon/PGMap.h"
 #include "gtest/gtest.h"
 
-#include "common/ceph_argparse.h"
-#include "global/global_init.h"
-#include "global/global_context.h"
+#include "include/stringify.h"
+#include "test/unit.h"
 
 TEST(pgmap, min_last_epoch_clean)
 {
@@ -115,15 +114,3 @@ TEST(pgmap, calc_stats)
     ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean());
   }
 }
-
-int main(int argc, char **argv) {
-  vector<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 3e4e0505ded1479db40377a503f7f2475e4f525e..e77bba5c57e91181e893a3707805e8b7673270b5 100644 (file)
@@ -321,13 +321,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 4ad26c31e1fa170afbdaf9eff48f69aa2edc7e16..43a03c66bd7cef90e1430c781348b2a45d425512 100644 (file)
@@ -995,9 +995,9 @@ int main(int argc, const char *argv[])
   our_name = argv[0];
   argv_to_vec(argc, argv, args);
 
-  global_init(&def_args, args,
-             CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY,
-             0);
+  auto cct = global_init(&def_args, args,
+                        CEPH_ENTITY_TYPE_OSD, CODE_ENVIRONMENT_UTILITY,
+                        0);
 
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->apply_changes(NULL);
index 1cb3db2ce798ea3e40f2b8f1c2994c2880f3ff15..eb5434900be538acf7ce2d50f3d769618e3db538 100644 (file)
@@ -172,7 +172,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 dde679c433ee2e05a951d1214a54e2e9ec79067c..7b31adc3bf5adb179e6e82e0a229543b723a96c2 100644 (file)
@@ -144,7 +144,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 59ac8bf6a339621bbb53923f108cdd00fa70b1c4..bdcd1ca7e2734dbd6aceac706e35da2794daadf8 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*> {
@@ -349,17 +351,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 43f1060c7cdfc9b1ff8bcb279693ee69c893fdc7..37549227fc9e59f956ec333d49653198ec4df748 100644 (file)
@@ -1432,7 +1432,7 @@ int main(int argc, char **argv) {
   argv_to_vec(argc, (const char **)argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   g_ceph_context->_conf->set_val("auth_cluster_required", "none");
   g_ceph_context->_conf->set_val("auth_service_required", "none");
   g_ceph_context->_conf->set_val("auth_client_required", "none");
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 f89e27e02e5b10ef18df5fdf3ae1d36f28e70940..8cc40efffbc5a6772b86b6863b05b4bd2e4f74c5 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("store_test_temp_dir");
@@ -73,13 +73,3 @@ TEST(RocksDBOption, interpret) {
   //high pri threads is flusher_threads
   ASSERT_EQ(5, num_high_pri_threads);
 }
-
-int main(int argc, char **argv) {
-  vector<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 d3b4b1e9eeafae4d393e366fbf6d8229a982329b..5244f0415f46d37fb2678ef3e66403e4c3f38e7f 100644 (file)
@@ -377,7 +377,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 bdf027e8afc8f60820133272ac02e6df7f22f313..5ab011ad17d8d82d2bbf483e4e1ee03fe86362ad 100644 (file)
@@ -3676,7 +3676,8 @@ int main(int argc, char **argv) {
   argv_to_vec(argc, (const char **)argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->set_val("osd_journal_size", "400");
   g_ceph_context->_conf->set_val("filestore_index_retry_probability", "0.5");
@@ -3694,9 +3695,7 @@ int main(int argc, char **argv) {
   g_ceph_context->_conf->apply_changes(NULL);
 
   ::testing::InitGoogleTest(&argc, argv);
-  int r = RUN_ALL_TESTS();
-  g_ceph_context->put();
-  return r;
+  return RUN_ALL_TESTS();
 }
 
 /*
index 41bcf99cc674de817d506ae2e371859266fc5162..7dd1009d7139b3f053335eb8461ddb486e2702ba 100644 (file)
@@ -136,7 +136,13 @@ int main(int argc, char **argv) {
   argv_to_vec(argc, (const char **)argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  vector<const char *> def_args;
+  def_args.push_back("--debug-bluefs=1/20");
+  def_args.push_back("--debug-bdev=1/20");
+
+  auto cct = global_init(&def_args, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY,
+                        0);
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->set_val(
     "enable_experimental_unrecoverable_data_corrupting_features",
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 06c45e0cb7e18e7d491eb9c46a15a2c6b8f0eeed..c481055e24c1afeec3337b6aa426157347b60712 100644 (file)
@@ -182,7 +182,8 @@ int main(int argc, char **argv) {
   argv_to_vec(argc, (const char **)argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->set_val(
     "enable_experimental_unrecoverable_data_corrupting_features",
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 0b50b32858ce217242edbf67d2d1cb498007e100..4349ce2846f6c5272ea2acf3274f2ea30e2bf0ee 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 a5da6dc6c98663d67bb869d153479a8233921b66..da886d8a50c8bacc5f474a8d63383087eb835a7c 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 34d13133a0c7e001991acda98c1313987f289a15..dba4f074ee72b139392c2660312cc7eff56a4edd 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:
@@ -2047,17 +2045,6 @@ TEST_F(PGLogTest, filter_log_1) {
   }
 }
 
-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 a916cf08da3b39e5203951e6c92560958aed843b..00d8679a76d8174ea3494906a9e432feb6346f87 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 7c33dc5d45462249e754af89108aecb5fe496ee0..2d1cd41c538f1c4f6ca2436fd81fb1fa621471b4 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 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 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 3499aa46abd192978cbee672380d81bedc66efef..635abd3d277778c18bddeaac6530b9d1a26b1dde 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);
   g_test = new admin_log::test_helper();
index 93c87abe41c8b9bc0ed879170e55b2ef5608143e..fd919fa6023a537d4f59e2dfd244a9c2d0232f92 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;
 
@@ -657,14 +656,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 c7ff4335472ce6bcec9781d18abff172aa3870d9..83bbd64dafacb25b370c1cebe82363a322cbe0f3 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 27c38124ade17a971eef17786807a90db8900034..ce0e4cbb69fe7f701d9eeb466ee1385dffe4fcf6 100644 (file)
@@ -11,7 +11,8 @@ int main(int argc, const char **argv)
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                         CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
   KeyRing extra;
   KeyServer server(g_ceph_context, &extra);
index e3610b56b3b706d725841a6b3de1e2bb70708857..44e53f16a17238cab6a3e96951ab009064a5fa12 100644 (file)
@@ -72,7 +72,8 @@ int main(int argc, const char **argv, const char *envp[]) {
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
   dout(0) << "i am mon " << args[0] << dendl;
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 a213391ff49596df378557a4c7738497469ce502..5fb8679f7e2b1b4cac5cccc76430adbc9a418ceb 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 75fb95b6d13e819cf965ec38400c28e535fb3210..5ffb3d167273f791a30f5e07da835b28a0357c12 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 ed78500d13bae1ed7944183b445486fec3768def..9bf5030e46de094b89c6a5b4f913da879aa153d0 100644 (file)
@@ -316,13 +316,6 @@ static int get_fd_data(int fd, bufferlist &bl)
   return 0;
 }
 
-void myexit(int ret)
-{
-  if (g_ceph_context)
-    g_ceph_context->put();
-  exit(ret);
-}
-
 int get_log(ObjectStore *fs, __u8 struct_ver,
    coll_t coll, spg_t pgid, const pg_info_t &info,
    PGLog::IndexedLog &log, pg_missing_t &missing,
@@ -2320,12 +2313,12 @@ int main(int argc, char **argv)
                                                   po::include_positional);
   } catch(po::error &e) {
     std::cerr << e.what() << std::endl;
-    myexit(1);
+    return 1;
   }
 
   if (vm.count("help")) {
     usage(desc);
-    myexit(1);
+    return 1;
   }
 
   if (!vm.count("debug")) {
@@ -2383,7 +2376,7 @@ int main(int argc, char **argv)
      !(op == "dump-journal" && type == "filestore")) {
     cerr << "Must provide --data-path" << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   if (type == "filestore" && !vm.count("journal-path")) {
     jpath = dpath + "/journal";
@@ -2391,29 +2384,29 @@ int main(int argc, char **argv)
   if (!vm.count("op") && !vm.count("object")) {
     cerr << "Must provide --op or object command..." << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   if (op != "list" &&
       vm.count("op") && vm.count("object")) {
     cerr << "Can't specify both --op and object command syntax" << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   if (op == "apply-layout-settings" && !(vm.count("pool") ^ vm.count("pgid"))) {
     cerr << "apply-layout-settings requires either --pool or --pgid"
         << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   if (op != "list" && vm.count("object") && !vm.count("objcmd")) {
     cerr << "Invalid syntax, missing command" << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   if (op == "fuse" && mountpoint.length() == 0) {
     cerr << "Missing fuse mountpoint" << std::endl;
     usage(desc);
-    myexit(1);
+    return 1;
   }
   outistty = isatty(STDOUT_FILENO);
 
@@ -2422,7 +2415,7 @@ int main(int argc, char **argv)
     if (!vm.count("file") || file == "-") {
       if (outistty) {
         cerr << "stdout is a tty and no --file filename specified" << std::endl;
-        myexit(1);
+        return 1;
       }
       file_fd = STDOUT_FILENO;
     } else {
@@ -2432,7 +2425,7 @@ int main(int argc, char **argv)
     if (!vm.count("file") || file == "-") {
       if (isatty(STDIN_FILENO)) {
         cerr << "stdin is a tty and no --file filename specified" << std::endl;
-        myexit(1);
+        return 1;
       }
       file_fd = STDIN_FILENO;
     } else {
@@ -2445,16 +2438,16 @@ int main(int argc, char **argv)
   if (vm.count("file") && file_fd == fd_none && !dry_run) {
     cerr << "--file option only applies to import, export, "
         << "get-osdmap, set-osdmap, get-inc-osdmap or set-inc-osdmap" << std::endl;
-    myexit(1);
+    return 1;
   }
 
   if (file_fd != fd_none && file_fd < 0) {
     string err = string("file: ") + file;
     perror(err.c_str());
-    myexit(1);
+    return 1;
   }
 
-  global_init(
+  auto cct = global_init(
     NULL, ceph_options, CEPH_ENTITY_TYPE_OSD,
     CODE_ENVIRONMENT_UTILITY_NODOUT, 0);
     //CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
@@ -2477,7 +2470,7 @@ int main(int argc, char **argv)
   formatter = Formatter::create(format);
   if (formatter == NULL) {
     cerr << "unrecognized format: " << format << std::endl;
-    myexit(1);
+    return 1;
   }
 
   // Special handling for filestore journal, so we can dump it without mounting
@@ -2486,10 +2479,10 @@ int main(int argc, char **argv)
     if (ret < 0) {
       cerr << "journal-path: " << jpath << ": "
           << cpp_strerror(ret) << std::endl;
-      myexit(1);
+      return 1;
     }
     formatter->flush(cout);
-    myexit(0);
+    return 0;
   }
 
   //Verify that data-path really exists
@@ -2497,40 +2490,40 @@ int main(int argc, char **argv)
   if (::stat(dpath.c_str(), &st) == -1) {
     string err = string("data-path: ") + dpath;
     perror(err.c_str());
-    myexit(1);
+    return 1;
   }
 
   if (pgidstr.length() && !pgid.parse(pgidstr.c_str())) {
     cerr << "Invalid pgid '" << pgidstr << "' specified" << std::endl;
-    myexit(1);
+    return 1;
   }
 
   ObjectStore *fs = ObjectStore::create(g_ceph_context, type, dpath, jpath, flags);
   if (fs == NULL) {
     cerr << "Unable to create store of type " << type << std::endl;
-    myexit(1);
+    return 1;
   }
 
   if (op == "fsck") {
     int r = fs->fsck();
     if (r < 0) {
       cerr << "fsck failed: " << cpp_strerror(r) << std::endl;
-      myexit(1);
+      return 1;
     }
     if (r > 0) {
       cerr << "fsck found " << r << " errors" << std::endl;
-      myexit(1);
+      return 1;
     }
     cout << "fsck found no errors" << std::endl;
-    exit(0);
+    return 0;
   }
   if (op == "mkfs") {
     int r = fs->mkfs();
     if (r < 0) {
       cerr << "fsck failed: " << cpp_strerror(r) << std::endl;
-      myexit(1);
+      return 1;
     }
-    myexit(0);
+    return 0;
   }
 
   ObjectStore::Sequencer *osr = new ObjectStore::Sequencer(__func__);
@@ -2541,7 +2534,7 @@ int main(int argc, char **argv)
     } else {
       cerr << "Mount failed with '" << cpp_strerror(ret) << "'" << std::endl;
     }
-    myexit(1);
+    return 1;
   }
 
   if (op == "fuse") {
@@ -2551,12 +2544,12 @@ int main(int argc, char **argv)
     int r = fuse.main();
     if (r < 0) {
       cerr << "failed to mount fuse: " << cpp_strerror(r) << std::endl;
-      myexit(1);
+      return 1;
     }
 #else
     cerr << "fuse support not enabled" << std::endl;
 #endif
-    myexit(0);
+    return 0;
   }
 
   vector<coll_t> ls;
@@ -3266,5 +3259,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 e723fb00cce1970a6a25a3d0528d3e93544cc27b..65e1f1223d74a27a5f60c48c4dd369a598c94fab 100644 (file)
@@ -270,8 +270,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 515abd79829e6b95ca6760c57712e739638e8258..5fbf86cb0c7567e85b8746f54082e53078a5d78c 100644 (file)
@@ -45,8 +45,9 @@ int main(int argc, const char **argv)
   map<string,entity_addr_t> add;
   list<string> rm;
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
-             CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY,
+                        CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   common_init_finish(g_ceph_context);
   std::string val;
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
index c5dfcc6555c942686b03e96066462a79ef02bd68..973c57d6a2b066d7682e5eef061db0f801156312 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 28a7e7a8a934d6219cd1941b9ae80d0147f4f0f1..d9f398db6f61ca851c8a49bce3e1f6bcb70902ff 100644 (file)
@@ -3445,7 +3445,8 @@ int main(int argc, const char **argv)
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
 
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                            CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
   std::map < std::string, std::string > opts;
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 4479e31d5680f6c4de668f5ffae6334a604c85f8..6b8ab37c6ead64a17e80d225cab5cb7df911d84a 100644 (file)
@@ -782,8 +782,9 @@ static int rbd_nbd(int argc, const char *argv[])
 
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON,
-              CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_DAEMON,
+                        CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS);
   g_ceph_context->_conf->set_val_or_die("pid_file", "");
 
   std::vector<const char*>::iterator i;