meta db unit tests and fixes
This commit is contained in:
parent
89d4b4245d
commit
cf1ee8db02
@ -375,12 +375,14 @@ auto rdb_meta_db::update_item_meta(const std::string &api_path, json json_data)
|
|||||||
|
|
||||||
auto directory =
|
auto directory =
|
||||||
utils::string::to_bool(json_data.at(META_DIRECTORY).get<std::string>());
|
utils::string::to_bool(json_data.at(META_DIRECTORY).get<std::string>());
|
||||||
auto pinned =
|
auto pinned = directory ? false
|
||||||
utils::string::to_bool(json_data.at(META_PINNED).get<std::string>());
|
: utils::string::to_bool(
|
||||||
|
json_data.at(META_PINNED).get<std::string>());
|
||||||
auto size = directory ? std::uint64_t(0U)
|
auto size = directory ? std::uint64_t(0U)
|
||||||
: utils::string::to_uint64(
|
: utils::string::to_uint64(
|
||||||
json_data.at(META_SIZE).get<std::string>());
|
json_data.at(META_SIZE).get<std::string>());
|
||||||
auto source_path = json_data.at(META_SOURCE).get<std::string>();
|
auto source_path =
|
||||||
|
directory ? "" : json_data.at(META_SOURCE).get<std::string>();
|
||||||
if (orig_source_path != source_path && not orig_source_path.empty()) {
|
if (orig_source_path != source_path && not orig_source_path.empty()) {
|
||||||
ret = perform_action(function_name, [&]() -> rocksdb::Status {
|
ret = perform_action(function_name, [&]() -> rocksdb::Status {
|
||||||
return db_->Delete(rocksdb::WriteOptions(), source_family_,
|
return db_->Delete(rocksdb::WriteOptions(), source_family_,
|
||||||
|
@ -318,10 +318,11 @@ auto sqlite_meta_db::update_item_meta(const std::string &api_path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto directory = utils::string::to_bool(meta.at(META_DIRECTORY));
|
auto directory = utils::string::to_bool(meta.at(META_DIRECTORY));
|
||||||
auto pinned = utils::string::to_bool(meta.at(META_PINNED));
|
auto pinned =
|
||||||
|
directory ? false : utils::string::to_bool(meta.at(META_PINNED));
|
||||||
auto size = directory ? std::uint64_t(0U)
|
auto size = directory ? std::uint64_t(0U)
|
||||||
: utils::string::to_uint64(meta.at(META_SIZE));
|
: utils::string::to_uint64(meta.at(META_SIZE));
|
||||||
auto source_path = meta.at(META_SOURCE);
|
auto source_path = directory ? "" : meta.at(META_SOURCE);
|
||||||
|
|
||||||
meta.erase(META_DIRECTORY);
|
meta.erase(META_DIRECTORY);
|
||||||
meta.erase(META_PINNED);
|
meta.erase(META_PINNED);
|
||||||
|
@ -76,7 +76,7 @@ TYPED_TEST(meta_db_test, can_change_source_path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TYPED_TEST(meta_db_test,
|
TYPED_TEST(meta_db_test,
|
||||||
get_api_path_return_item_not_found_if_source_does_not_exist) {
|
get_api_path_returns_item_not_found_if_source_does_not_exist) {
|
||||||
std::string api_path;
|
std::string api_path;
|
||||||
EXPECT_EQ(api_error::item_not_found,
|
EXPECT_EQ(api_error::item_not_found,
|
||||||
this->meta_db->get_api_path(create_test_file(), api_path));
|
this->meta_db->get_api_path(create_test_file(), api_path));
|
||||||
@ -93,4 +93,80 @@ TYPED_TEST(meta_db_test, set_item_meta_fails_with_missing_directory_meta) {
|
|||||||
EXPECT_EQ(api_error::error,
|
EXPECT_EQ(api_error::error,
|
||||||
this->meta_db->set_item_meta(test_file, META_SOURCE, test_source));
|
this->meta_db->set_item_meta(test_file, META_SOURCE, test_source));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(meta_db_test, can_get_api_file_list) {
|
||||||
|
std::vector<std::string> directories{};
|
||||||
|
for (auto idx = 0U; idx < 5U; ++idx) {
|
||||||
|
auto test_dir = create_test_file();
|
||||||
|
directories.push_back(test_dir);
|
||||||
|
EXPECT_EQ(
|
||||||
|
api_error::success,
|
||||||
|
this->meta_db->set_item_meta(
|
||||||
|
test_dir, {
|
||||||
|
{META_DIRECTORY, utils::string::from_bool(true)},
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> files{};
|
||||||
|
for (auto idx = 0U; idx < 5U; ++idx) {
|
||||||
|
auto test_file = create_test_file();
|
||||||
|
files.push_back(test_file);
|
||||||
|
EXPECT_EQ(
|
||||||
|
api_error::success,
|
||||||
|
this->meta_db->set_item_meta(
|
||||||
|
test_file, {
|
||||||
|
{META_DIRECTORY, utils::string::from_bool(false)},
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto file_list = this->meta_db->get_api_path_list();
|
||||||
|
for (const auto &api_path : directories) {
|
||||||
|
EXPECT_TRUE(utils::collection::includes(file_list, api_path));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto &api_path : files) {
|
||||||
|
EXPECT_TRUE(utils::collection::includes(file_list, api_path));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(meta_db_test, can_get_full_item_meta_for_directory) {
|
||||||
|
auto api_path = create_test_file();
|
||||||
|
auto source_path = create_test_file();
|
||||||
|
EXPECT_EQ(api_error::success,
|
||||||
|
this->meta_db->set_item_meta(
|
||||||
|
api_path, {
|
||||||
|
{META_DIRECTORY, utils::string::from_bool(true)},
|
||||||
|
{META_PINNED, utils::string::from_bool(true)},
|
||||||
|
{META_SIZE, std::to_string(2ULL)},
|
||||||
|
{META_SOURCE, source_path},
|
||||||
|
}));
|
||||||
|
api_meta_map meta;
|
||||||
|
EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(api_path, meta));
|
||||||
|
|
||||||
|
EXPECT_TRUE(utils::string::to_bool(meta[META_DIRECTORY]));
|
||||||
|
EXPECT_FALSE(utils::string::to_bool(meta[META_PINNED]));
|
||||||
|
EXPECT_EQ(0U, utils::string::to_uint64(meta[META_SIZE]));
|
||||||
|
EXPECT_TRUE(meta[META_SOURCE].empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(meta_db_test, can_get_full_item_meta_for_file) {
|
||||||
|
auto api_path = create_test_file();
|
||||||
|
auto source_path = create_test_file();
|
||||||
|
EXPECT_EQ(api_error::success,
|
||||||
|
this->meta_db->set_item_meta(
|
||||||
|
api_path, {
|
||||||
|
{META_DIRECTORY, utils::string::from_bool(false)},
|
||||||
|
{META_PINNED, utils::string::from_bool(true)},
|
||||||
|
{META_SIZE, std::to_string(2ULL)},
|
||||||
|
{META_SOURCE, source_path},
|
||||||
|
}));
|
||||||
|
|
||||||
|
api_meta_map meta;
|
||||||
|
EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(api_path, meta));
|
||||||
|
|
||||||
|
EXPECT_FALSE(utils::string::to_bool(meta[META_DIRECTORY]));
|
||||||
|
EXPECT_TRUE(utils::string::to_bool(meta[META_PINNED]));
|
||||||
|
EXPECT_EQ(2ULL, utils::string::to_uint64(meta[META_SIZE]));
|
||||||
|
EXPECT_STREQ(source_path.c_str(), meta[META_SOURCE].c_str());
|
||||||
|
}
|
||||||
} // namespace repertory
|
} // namespace repertory
|
||||||
|
Loading…
x
Reference in New Issue
Block a user