mirror of
https://github.com/deepseek-ai/3FS
synced 2025-06-26 18:16:45 +00:00
Initial commit
This commit is contained in:
1
tests/kv/CMakeLists.txt
Normal file
1
tests/kv/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
target_add_test(test_kv kv)
|
||||
56
tests/kv/TestKVStore.cc
Normal file
56
tests/kv/TestKVStore.cc
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <folly/experimental/TestUtil.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "kv/KVStore.h"
|
||||
|
||||
namespace hf3fs::kv::test {
|
||||
namespace {
|
||||
|
||||
struct TestKVStore : public testing::TestWithParam<KVStore::Type> {};
|
||||
TEST_P(TestKVStore, Normal) {
|
||||
folly::test::TemporaryDirectory tmpPath;
|
||||
|
||||
KVStore::Config config;
|
||||
config.set_type(GetParam());
|
||||
KVStore::Options options;
|
||||
options.type = config.type();
|
||||
options.path = tmpPath.path();
|
||||
options.createIfMissing = true;
|
||||
auto store = KVStore::create(config, options);
|
||||
ASSERT_NE(store, nullptr);
|
||||
|
||||
const std::string key = "hello";
|
||||
const std::string val = "world";
|
||||
ASSERT_FALSE(store->get(key));
|
||||
ASSERT_TRUE(store->put(key, val));
|
||||
|
||||
auto result = store->get(key);
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_EQ(result.value(), val);
|
||||
|
||||
const std::string key2 = "hello2";
|
||||
const std::string val2 = "world2";
|
||||
auto batchOp = store->createBatchOps();
|
||||
batchOp->put(key2, val2);
|
||||
batchOp->remove(key);
|
||||
ASSERT_TRUE(batchOp->commit());
|
||||
|
||||
ASSERT_FALSE(store->get(key));
|
||||
auto result2 = store->get(key2);
|
||||
ASSERT_TRUE(result2);
|
||||
ASSERT_EQ(result2.value(), val2);
|
||||
|
||||
auto iterator = store->createIterator();
|
||||
iterator->seekToFirst();
|
||||
ASSERT_TRUE(iterator->valid());
|
||||
ASSERT_EQ(iterator->key(), "hello2");
|
||||
ASSERT_EQ(iterator->value(), "world2");
|
||||
iterator->next();
|
||||
ASSERT_FALSE(iterator->valid());
|
||||
}
|
||||
INSTANTIATE_TEST_SUITE_P(Benchmark,
|
||||
TestKVStore,
|
||||
testing::Values(KVStore::Type::LevelDB, KVStore::Type::RocksDB, KVStore::Type::MemDB));
|
||||
|
||||
} // namespace
|
||||
} // namespace hf3fs::kv::test
|
||||
Reference in New Issue
Block a user