INSTANTIATE_TEST_SUITE_P(
fltree_onode__manager_test,
fltree_onode_manager_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
d_seastore_tm_test,
d_seastore_tm_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
collection_manager_test,
collection_manager_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK)
)
);
TEST_P(object_data_handler_test_t, overwrite_then_read_within_transaction) {
run_async([this] {
+ disable_max_extent_size();
enable_delta_based_overwrite();
auto t = create_mutate_transaction();
auto base = 4096 * 4;
EXPECT_EQ(committed.length(), pending.length());
EXPECT_NE(committed, pending);
disable_delta_based_overwrite();
+ enable_max_extent_size();
});
}
INSTANTIATE_TEST_SUITE_P(
object_data_handler_test,
object_data_handler_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK,
+ integrity_check_t::NONFULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
omap_manager_test,
omap_manager_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
seastore_test,
seastore_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK,
+ integrity_check_t::NONFULL_CHECK)
)
);
tm_single_device_test_t() : transaction_manager_test_t(1, 0) {}
};
+struct tm_single_device_intergrity_check_test_t :
+ public transaction_manager_test_t {
+
+ tm_single_device_intergrity_check_test_t() : transaction_manager_test_t(1, 0) {}
+};
+
struct tm_multi_device_test_t :
public transaction_manager_test_t {
});
}
-TEST_P(tm_single_device_test_t, remap_lazy_read)
+TEST_P(tm_single_device_intergrity_check_test_t, remap_lazy_read)
{
constexpr laddr_t offset = 0;
constexpr size_t length = 256 << 10;
test_parallel_extent_read();
}
-TEST_P(tm_single_device_test_t, test_remap_pin)
+TEST_P(tm_single_device_intergrity_check_test_t, test_remap_pin)
{
test_remap_pin();
}
-TEST_P(tm_single_device_test_t, test_clone_and_remap_pin)
+TEST_P(tm_single_device_intergrity_check_test_t, test_clone_and_remap_pin)
{
test_clone_and_remap_pin();
}
test_overwrite_pin();
}
-TEST_P(tm_single_device_test_t, test_remap_pin_concurrent)
+TEST_P(tm_single_device_intergrity_check_test_t, test_remap_pin_concurrent)
{
test_remap_pin_concurrent();
}
INSTANTIATE_TEST_SUITE_P(
transaction_manager_test,
tm_single_device_test_t,
- ::testing::Values (
- "segmented",
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::NONFULL_CHECK)
+ )
+);
+
+INSTANTIATE_TEST_SUITE_P(
+ transaction_manager_test,
+ tm_single_device_intergrity_check_test_t,
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented",
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::FULL_CHECK,
+ integrity_check_t::NONFULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
transaction_manager_test,
tm_multi_device_test_t,
- ::testing::Values (
- "segmented"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented"
+ ),
+ ::testing::Values(
+ integrity_check_t::NONFULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
transaction_manager_test,
tm_multi_tier_device_test_t,
- ::testing::Values (
- "segmented"
+ ::testing::Combine(
+ ::testing::Values (
+ "segmented"
+ ),
+ ::testing::Values(
+ integrity_check_t::NONFULL_CHECK)
)
);
INSTANTIATE_TEST_SUITE_P(
transaction_manager_test,
tm_random_block_device_test_t,
- ::testing::Values (
- "circularbounded"
+ ::testing::Combine(
+ ::testing::Values (
+ "circularbounded"
+ ),
+ ::testing::Values(
+ integrity_check_t::NONFULL_CHECK)
)
);
using namespace crimson::os;
using namespace crimson::os::seastore;
+enum class integrity_check_t : uint8_t {
+ FULL_CHECK,
+ NONFULL_CHECK
+};
+
class EphemeralDevices {
public:
virtual seastar::future<> setup() = 0;
class EphemeralTestState
#ifdef UNIT_TESTS_BUILT
- : public ::testing::WithParamInterface<const char*> {
+ : public ::testing::WithParamInterface<
+ std::tuple<const char*, integrity_check_t>> {
#else
{
#endif
seastar::future<> tm_setup() {
LOG_PREFIX(EphemeralTestState::tm_setup);
#ifdef UNIT_TESTS_BUILT
- std::string j_type = GetParam();
+ std::string j_type = std::get<0>(GetParam());
#else
std::string j_type = "segmented";
#endif
virtual seastar::future<> _init() override {
auto sec_devices = devices->get_secondary_devices();
auto p_dev = devices->get_primary_device();
+ auto fut = seastar::now();
+ if (std::get<1>(GetParam()) == integrity_check_t::FULL_CHECK) {
+ fut = crimson::common::local_conf().set_val(
+ "seastore_full_integrity_check", "true");
+ } else {
+ fut = crimson::common::local_conf().set_val(
+ "seastore_full_integrity_check", "false");
+ }
tm = make_transaction_manager(p_dev, sec_devices, true);
epm = tm->get_epm();
lba_manager = tm->get_lba_manager();
cache = tm->get_cache();
- return seastar::now();
+ return fut;
}
virtual seastar::future<> _destroy() override {
SeaStoreTestState() : EphemeralTestState(1, 0) {}
virtual seastar::future<> _init() final {
+ auto fut = seastar::now();
+ if (std::get<1>(GetParam()) == integrity_check_t::FULL_CHECK) {
+ fut = crimson::common::local_conf().set_val(
+ "seastore_full_integrity_check", "true");
+ } else {
+ fut = crimson::common::local_conf().set_val(
+ "seastore_full_integrity_check", "false");
+ }
seastore = make_test_seastore(
std::make_unique<TestMDStoreState::Store>(mdstore_state.get_mdstore()));
- return seastore->test_start(devices->get_primary_device_ref()
- ).then([this] {
+ return fut.then([this] {
+ return seastore->test_start(devices->get_primary_device_ref());
+ }).then([this] {
sharded_seastore = &(seastore->get_sharded_store());
});
}