#include "gtest/gtest.h" #include "leveldb/env.h" #include "leveldb/db.h" #include "util/coding.h" #include #include using namespace std::chrono; using namespace leveldb; using Field=std::pair; using FieldArray=std::vector>; int data_number=100000; Status OpenDB(std::string dbName, DB **db) { Options options; options.max_file_size=16*1024; options.write_buffer_size=32*1024; options.create_if_missing = true; return DB::Open(options, dbName, db); } TEST(Test, Garbage_Collect_TEST) { DB *db; WriteOptions writeOptions; ReadOptions readOptions; if(OpenDB("testdb_for_XOY_large", &db).ok() == false) { std::cerr << "open db failed" << std::endl; abort(); } std::vector values; for(int i=0;iPut(writeOptions,key,value); } // for(int i=0;iPut(writeOptions,key,value); // } // Measure GC time auto start_time = high_resolution_clock::now(); db->TEST_GarbageCollect(); auto end_time = high_resolution_clock::now(); auto duration = duration_cast(end_time - start_time); std::cout << "GC finished. Time taken: " << duration.count() << " ms" << std::endl; for(int i=0;iGet(readOptions,key,&value); assert(s.ok()); if(values[i]!=value){ std::cout<