Merge pull request #37888 from tchaikov/wip-crimson-gtest

crimson/gtest_seastar: do not keep a copy of argv

Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
Reviewed-by: Ronen Friedman <rfriedma@redhat.com>
This commit is contained in:
Kefu Chai 2020-10-30 10:25:49 +08:00 committed by GitHub
commit 92300bb747
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 16 deletions

View 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);
@ -58,13 +50,14 @@ void seastar_gtest_env_t::reactor()
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
seastar_test_suite_t::seastar_env.init(argc, argv);
seastar::global_logger_registry().set_all_loggers_level(
seastar::log_level::debug
);
::testing::InitGoogleTest(&argc, argv);
int ret = RUN_ALL_TESTS();
seastar_test_suite_t::seastar_env.stop();

View 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) {