From eb4046e099376cf9944e11245117d807ed5ffd14 Mon Sep 17 00:00:00 2001 From: alexfisher <1823748191@qq.com> Date: Sun, 1 Dec 2024 23:20:48 +0800 Subject: [PATCH] update test for get_keys --- test/test.cpp | 136 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/test/test.cpp b/test/test.cpp index 0464fbd..78240d9 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"; -// std::string key2 = "k_2"; - -// FieldArray fields1 = { -// {"name", "Customer#000000001"}, -// {"address", "IVhzIApeRb"}, -// {"phone", "25-989-741-2988"} -// }; - -// FieldArray fields2 = { -// {"name", "Customer#000000001"}, -// {"address", "abc"}, -// {"phone", "def"} -// }; - -// auto value1=SerializeValue(fields1); -// auto value2=SerializeValue(fields2); - -// db->Put(WriteOptions(), key1, value1); -// db->Put(WriteOptions(), key2, value2); - -// // 璇诲彇骞跺弽搴忓垪鍖? -// std::string value_ret; -// FieldArray res1; - -// db->Get(ReadOptions(), key1, &value_ret); -// DeserializeValue(value_ret, &res1); -// for(auto pr:res1){ -// std::cout< keys = {key1, key2}; -// std::vector key_res; -// Get_keys_by_field(db,ReadOptions(),fields1[0],&key_res); -// for(auto s:key_res)std::cout<Put(WriteOptions(), key1, value1); + + // 璇诲彇骞跺弽搴忓垪鍖? + std::string value_ret; + FieldArray res1; + + db->Get(ReadOptions(), key1, &value_ret); + DeserializeValue(value_ret, &res1); + for(auto pr:res1){ + std::cout<Delete(WriteOptions(),key1); -// ASSERT_TRUE(CompareKey(key_res, keys)); + 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, LARGE_DATA_COMPACT_TEST) { DB *db;