#include "blockstore/implementations/integrity/IntegrityBlockStore2.h" #include "blockstore/implementations/low2highlevel/LowToHighLevelBlockStore.h" #include "blockstore/implementations/inmemory/InMemoryBlockStore2.h" #include "../../testutils/BlockStoreTest.h" #include "../../testutils/BlockStore2Test.h" #include #include using blockstore::BlockStore; using blockstore::BlockStore2; using blockstore::integrity::IntegrityBlockStore2; using blockstore::lowtohighlevel::LowToHighLevelBlockStore; using blockstore::inmemory::InMemoryBlockStore2; using cpputils::make_unique_ref; using cpputils::unique_ref; using cpputils::TempFile; template class IntegrityBlockStoreTestFixture: public BlockStoreTestFixture { public: IntegrityBlockStoreTestFixture() :stateFile(false) {} TempFile stateFile; unique_ref createBlockStore() override { return make_unique_ref( make_unique_ref(make_unique_ref(), stateFile.path(), 0x12345678, AllowIntegrityViolations, MissingBlockIsIntegrityViolation) ); } }; using IntegrityBlockStoreTestFixture_multiclient = IntegrityBlockStoreTestFixture; using IntegrityBlockStoreTestFixture_singleclient = IntegrityBlockStoreTestFixture; using IntegrityBlockStoreTestFixture_multiclient_allowIntegrityViolations = IntegrityBlockStoreTestFixture; using IntegrityBlockStoreTestFixture_singleclient_allowIntegrityViolations = IntegrityBlockStoreTestFixture; INSTANTIATE_TYPED_TEST_CASE_P(Integrity_multiclient, BlockStoreTest, IntegrityBlockStoreTestFixture_multiclient); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_singleclient, BlockStoreTest, IntegrityBlockStoreTestFixture_singleclient); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_multiclient_allowIntegrityViolations, BlockStoreTest, IntegrityBlockStoreTestFixture_multiclient_allowIntegrityViolations); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_singleclient_allowIntegrityViolations, BlockStoreTest, IntegrityBlockStoreTestFixture_singleclient_allowIntegrityViolations); template class IntegrityBlockStore2TestFixture: public BlockStore2TestFixture { public: IntegrityBlockStore2TestFixture() :stateFile(false) {} TempFile stateFile; unique_ref createBlockStore() override { return make_unique_ref(make_unique_ref(), stateFile.path(), 0x12345678, AllowIntegrityViolations, MissingBlockIsIntegrityViolation); } }; using IntegrityBlockStore2TestFixture_multiclient = IntegrityBlockStore2TestFixture; using IntegrityBlockStore2TestFixture_singleclient = IntegrityBlockStore2TestFixture; using IntegrityBlockStore2TestFixture_multiclient_allowIntegrityViolations = IntegrityBlockStore2TestFixture; using IntegrityBlockStore2TestFixture_singleclient_allowIntegrityViolations = IntegrityBlockStore2TestFixture; INSTANTIATE_TYPED_TEST_CASE_P(Integrity_multiclient, BlockStore2Test, IntegrityBlockStore2TestFixture_multiclient); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_singleclient, BlockStore2Test, IntegrityBlockStore2TestFixture_singleclient); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_multiclient_allowIntegrityViolations, BlockStore2Test, IntegrityBlockStore2TestFixture_multiclient_allowIntegrityViolations); INSTANTIATE_TYPED_TEST_CASE_P(Integrity_singleclient_allowIntegrityViolations, BlockStore2Test, IntegrityBlockStore2TestFixture_singleclient_allowIntegrityViolations);