#pragma once
#include "crimson/common/errorator.h"
+#include "crimson/common/log.h"
#include "gtest/gtest.h"
#include "seastar_runner.h"
struct seastar_test_suite_t : public ::testing::Test {
static SeastarRunner seastar_env;
+ template <typename Func>
+ void do_run(Func &&func, const char *name) {
+ seastar_env.run([func=std::forward<Func>(func), name]() mutable {
+ crimson::get_logger(ceph_subsys_test).info(
+ "{} started...", name);
+ return std::invoke(std::move(func)
+ ).finally([name] {
+ crimson::get_logger(ceph_subsys_test).info(
+ "{} finished", name);
+ });
+ });
+ }
+
template <typename Func>
void run(Func &&func) {
- seastar_env.run(std::forward<Func>(func));
+ do_run(std::forward<Func>(func), "run");
}
template <typename Func>
void run_ertr(Func &&func) {
- run(
+ do_run(
[func=std::forward<Func>(func)]() mutable {
return std::invoke(std::move(func)).handle_error(
crimson::ct_error::assert_all("error"));
- });
+ }, "run_ertr");
}
template <typename Func>
void run_async(Func &&func) {
- run(
+ do_run(
[func=std::forward<Func>(func)]() mutable {
return seastar::async(std::forward<Func>(func));
- });
+ }, "run_async");
}
template <typename F>
}
void run_scl(auto &&f) {
- run([this, f=std::forward<decltype(f)>(f)]() mutable {
+ do_run([this, f=std::forward<decltype(f)>(f)]() mutable {
return std::invoke(scl(std::move(f)));
- });
+ }, "run_scl");
}
void run_ertr_scl(auto &&f) {
virtual seastar::future<> set_up_fut() { return seastar::now(); }
void SetUp() final {
- run([this] { return set_up_fut(); });
+ do_run([this] { return set_up_fut(); }, "setup");
}
virtual seastar::future<> tear_down_fut() { return seastar::now(); }
void TearDown() final {
- run([this] { return tear_down_fut(); });
+ do_run([this] { return tear_down_fut(); }, "teardown");
}
};