X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fobjectstore%2Fstore_test_fixture.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fobjectstore%2Fstore_test_fixture.cc;h=e80bde8315e7674ee4520c251cd9745ce88b4cd8;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/objectstore/store_test_fixture.cc b/src/ceph/src/test/objectstore/store_test_fixture.cc new file mode 100644 index 0000000..e80bde8 --- /dev/null +++ b/src/ceph/src/test/objectstore/store_test_fixture.cc @@ -0,0 +1,62 @@ +#include +#include +#include +#include + +#include "common/errno.h" +#include "os/ObjectStore.h" +#if defined(HAVE_LIBAIO) +#include "os/bluestore/BlueStore.h" +#endif +#include "store_test_fixture.h" + +static void rm_r(const string& path) { + string cmd = string("rm -r ") + path; + cout << "==> " << cmd << std::endl; + int r = ::system(cmd.c_str()); + if (r) { + if (r == -1) { + r = errno; + cerr << "system() failed to fork() " << cpp_strerror(r) + << ", continuing anyway" << std::endl; + } else { + cerr << "failed with exit code " << r + << ", continuing anyway" << std::endl; + } + } +} + +void StoreTestFixture::SetUp() { + int r = ::mkdir(data_dir.c_str(), 0777); + if (r < 0) { + r = -errno; + cerr << __func__ << ": unable to create " << data_dir << ": " << cpp_strerror(r) << std::endl; + } + ASSERT_EQ(0, r); + + store.reset(ObjectStore::create(g_ceph_context, + type, + data_dir, + string("store_test_temp_journal"))); + if (!store) { + cerr << __func__ << ": objectstore type " << type << " doesn't exist yet!" << std::endl; + } + ASSERT_TRUE(store); +#if defined(HAVE_LIBAIO) + if (type == "bluestore") { + BlueStore *s = static_cast(store.get()); + // better test coverage! + s->set_cache_shards(5); + } +#endif + ASSERT_EQ(0, store->mkfs()); + ASSERT_EQ(0, store->mount()); +} + +void StoreTestFixture::TearDown() { + if (store) { + int r = store->umount(); + EXPECT_EQ(0, r); + rm_r(data_dir); + } +}