From 5cd77b83efc2481502692d0680599659b820c307 Mon Sep 17 00:00:00 2001 From: xxy <3237539022@qq.com> Date: Mon, 9 Dec 2024 12:12:58 +0800 Subject: [PATCH] tmp --- db/db_impl.cc | 4 -- test/test.cpp | 124 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 62 insertions(+), 66 deletions(-) diff --git a/db/db_impl.cc b/db/db_impl.cc index d1572d8..0a0015a 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1742,14 +1742,10 @@ void DBImpl::GarbageCollect() { Log(options_.info_log, "start gc "); auto files_set = fs::directory_iterator(dbname_); std::set valuelog_set; - // std::string cur_valuelog_name = - // ValueLogFileName(dbname_, valuelogfile_number_); for (const auto& cur_log_file : files_set) { if (fs::exists(cur_log_file) && fs::is_regular_file(fs::status(cur_log_file)) && IsValueLogFile(cur_log_file.path().filename().string())) { - // if (cur_valuelog_name == cur_log_file.path().filename().string()) - // continue; valuelog_set.emplace(cur_log_file.path().filename().string()); } } diff --git a/test/test.cpp b/test/test.cpp index a75512c..646adad 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -86,77 +86,77 @@ Status Get_keys_by_field(DB *db,const ReadOptions& options, const Field field,st return Status::OK(); } -// TEST(Test, CheckGetFields) { -// DB *db; -// WriteOptions writeOptions; -// ReadOptions readOptions; -// if(OpenDB("testdb_for_XOY", &db).ok() == false) { -// std::cerr << "open db failed" << std::endl; -// abort(); -// } -// std::string key1 = "k_1"; +TEST(Test, CheckGetFields) { + DB *db; + WriteOptions writeOptions; + ReadOptions readOptions; + if(OpenDB("testdb_for_XOY", &db).ok() == false) { + std::cerr << "open db failed" << std::endl; + abort(); + } + std::string key1 = "k_1"; -// FieldArray fields1 = { -// {"name", "Customer#000000001"}, -// {"address", "IVhzIApeRb"}, -// {"phone", "25-989-741-2988"} -// }; + FieldArray fields1 = { + {"name", "Customer#000000001"}, + {"address", "IVhzIApeRb"}, + {"phone", "25-989-741-2988"} + }; -// auto value1=SerializeValue(fields1); + auto value1=SerializeValue(fields1); -// db->Put(WriteOptions(), key1, value1); + db->Put(WriteOptions(), key1, value1); -// // 璇诲彇骞跺弽搴忓垪鍖? -// std::string value_ret; -// FieldArray res1; + // 璇诲彇骞跺弽搴忓垪鍖? + std::string value_ret; + FieldArray res1; -// db->Get(ReadOptions(), key1, &value_ret); -// DeserializeValue(value_ret, &res1); -// for(auto pr:res1){ -// std::cout<Get(ReadOptions(), key1, &value_ret); + DeserializeValue(value_ret, &res1); + for(auto pr:res1){ + std::cout<Delete(WriteOptions(),key1); + db->Delete(WriteOptions(),key1); -// std::cout<<"get serialized value done"< keys; -// std::vector target_keys; -// for(int i=0;i<10000;i++){ -// std::string key=std::to_string(rand()%10000)+"_"+std::to_string(i);//random for generate nonincreasing keys -// FieldArray fields={ -// {"name", key}, -// {"address", std::to_string(rand()%7)}, -// {"phone", std::to_string(rand()%114514)} -// }; -// if(rand()%5==0){ -// fields[0].second="special_key"; -// target_keys.push_back(key); -// } -// keys.push_back(key); -// db->Put(WriteOptions(),key,SerializeValue(fields)); -// } -// std::sort(target_keys.begin(),target_keys.end()); -// std::vector key_res; -// Get_keys_by_field(db,ReadOptions(),{"name", "special_key"},&key_res); -// ASSERT_TRUE(CompareKey(key_res, target_keys)); -// std::cout<<"get key by field done"<Delete(WriteOptions(),s); -// } -// delete db; -// } +TEST(Test, CheckSearchKey) { + DB *db; + ReadOptions readOptions; + if(OpenDB("testdb_for_XOY", &db).ok() == false) { + std::cerr << "open db failed" << std::endl; + abort(); + } + std::vector keys; + std::vector target_keys; + for(int i=0;i<10000;i++){ + std::string key=std::to_string(rand()%10000)+"_"+std::to_string(i);//random for generate nonincreasing keys + FieldArray fields={ + {"name", key}, + {"address", std::to_string(rand()%7)}, + {"phone", std::to_string(rand()%114514)} + }; + if(rand()%5==0){ + fields[0].second="special_key"; + target_keys.push_back(key); + } + keys.push_back(key); + db->Put(WriteOptions(),key,SerializeValue(fields)); + } + std::sort(target_keys.begin(),target_keys.end()); + std::vector key_res; + Get_keys_by_field(db,ReadOptions(),{"name", "special_key"},&key_res); + ASSERT_TRUE(CompareKey(key_res, target_keys)); + std::cout<<"get key by field done"<Delete(WriteOptions(),s); + } + delete db; +} // TEST(Test, LARGE_DATA_COMPACT_TEST) { // DB *db;