]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/gtest_seastar: do not keep a copy of argv
authorKefu Chai <kchai@redhat.com>
Thu, 29 Oct 2020 05:03:40 +0000 (13:03 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 29 Oct 2020 06:04:51 +0000 (14:04 +0800)
argv is always available in the whole life cycle of the application, so
there is no need to keep a copy of it.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/test/crimson/gtest_seastar.cc
src/test/crimson/gtest_seastar.h

index e8d6ae22f731e2e378fe5f7bb6ae8c07a987d7e8..dd1d39092053f9a16fdc19f2952e6ade7f1d21a0 100644 (file)
@@ -9,13 +9,9 @@ seastar_gtest_env_t seastar_test_suite_t::seastar_env;
 seastar_gtest_env_t::seastar_gtest_env_t() :
   begin_fd{seastar::file_desc::eventfd(0, 0)} {}
 
-void seastar_gtest_env_t::init(int _argc, char **_argv)
+void seastar_gtest_env_t::init(int argc, char **argv)
 {
-  argc = _argc;
-  argv = new char *[argc];
-  for (int i = 0; i < argc; ++i) argv[i] = strdup(_argv[i]);
-
-  thread = std::thread([this] { reactor(); });
+  thread = std::thread([argc, argv, this] { reactor(argc, argv); });
   eventfd_t result = 0;
   if (int r = ::eventfd_read(begin_fd.get(), &result); r < 0) {
     std::cerr << "unable to eventfd_read():" << errno << std::endl;
@@ -33,13 +29,9 @@ void seastar_gtest_env_t::stop()
 }
 
 seastar_gtest_env_t::~seastar_gtest_env_t()
-{
-  ceph_assert(argv);
-  for (int i = 0; i < argc; ++i) free(argv[i]);
-  delete[] argv;
-}
+{}
 
-void seastar_gtest_env_t::reactor()
+void seastar_gtest_env_t::reactor(int argc, char** argv)
 {
   app.run(argc, argv, [this] {
     on_end.reset(new seastar::readable_eventfd);
index ed02891f840b8d01693fc6350c5d8078d305cf38..6f4d376d27aaa7f847079ac264bb8771578da87f 100644 (file)
@@ -20,8 +20,6 @@ struct seastar_gtest_env_t {
   seastar::file_desc begin_fd;
   std::unique_ptr<seastar::readable_eventfd> on_end;
 
-  int argc = 0;
-  char **argv = nullptr;
   std::thread thread;
 
   seastar_gtest_env_t();
@@ -29,7 +27,7 @@ struct seastar_gtest_env_t {
 
   void init(int argc, char **argv);
   void stop();
-  void reactor();
+  void reactor(int argc, char **argv);
 
   template <typename Func>
   void run(Func &&func) {