#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); } }