diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index ba1e78d550aad23d96c142deffe1aac6ba855b44..094a30e9cbf604803c235b162da1df1b703e62f4 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -29,6 +29,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-492 - Drop index failed if index have been created with index_type: FLAT - MS-493 - Knowhere unittest crash - MS-453 - GPU search error when nprobe set more than 1024 +- MS-510 - unittest out of memory and crashed ## Improvement - MS-327 - Clean code for milvus diff --git a/cpp/src/db/meta/SqliteMetaImpl.cpp b/cpp/src/db/meta/SqliteMetaImpl.cpp index 2b198b61dc31e94849d03a921f9f69e3e04ae0fc..51297a766130f0b0209f8bbcea610fa0164f66fb 100644 --- a/cpp/src/db/meta/SqliteMetaImpl.cpp +++ b/cpp/src/db/meta/SqliteMetaImpl.cpp @@ -192,8 +192,6 @@ Status SqliteMetaImpl::CreateTable(TableSchema &table_schema) { } catch (std::exception &e) { return HandleException("Encounter exception when create table", e.what()); } - - return Status::OK(); } Status SqliteMetaImpl::DeleteTable(const std::string& table_id) { diff --git a/cpp/src/db/scheduler/task/IndexLoadTask.cpp b/cpp/src/db/scheduler/task/IndexLoadTask.cpp index 561bf07f13cf39aac6c9aaf1a9711dfdf03048af..65bde802377ca4b510705cbf70de4310868d3a95 100644 --- a/cpp/src/db/scheduler/task/IndexLoadTask.cpp +++ b/cpp/src/db/scheduler/task/IndexLoadTask.cpp @@ -50,7 +50,17 @@ std::shared_ptr IndexLoadTask::Execute() { file_->nlist_); try { - index_ptr->Load(); + auto stat = index_ptr->Load(); + if(!stat.ok()) { + //typical error: file not available + ENGINE_LOG_ERROR << "Failed to load index file: file not available"; + + for(auto& context : search_contexts_) { + context->IndexSearchDone(file_->id_);//mark as done avoid dead lock, even failed + } + + return nullptr; + } } catch (std::exception& ex) { //typical error: out of disk space or permition denied std::string msg = "Failed to load index file: " + std::string(ex.what()); diff --git a/cpp/src/scheduler/task/SearchTask.cpp b/cpp/src/scheduler/task/SearchTask.cpp index ec603ac328dad6b01256b456fb623a7c0bb85171..aa526517fa14b7e8d008490e9d2c2fa4f51461d5 100644 --- a/cpp/src/scheduler/task/SearchTask.cpp +++ b/cpp/src/scheduler/task/SearchTask.cpp @@ -99,7 +99,17 @@ XSearchTask::Load(LoadType type, uint8_t device_id) { try { if (type == LoadType::DISK2CPU) { - index_engine_->Load(); + auto stat = index_engine_->Load(); + if(!stat.ok()) { + //typical error: file not available + ENGINE_LOG_ERROR << "Failed to load index file: file not available"; + + for(auto& context : search_contexts_) { + context->IndexSearchDone(file_->id_);//mark as done avoid dead lock, even failed + } + + return; + } } else if (type == LoadType::CPU2GPU) { index_engine_->CopyToGpu(device_id); } else if (type == LoadType::GPU2CPU) { diff --git a/cpp/src/utils/ValidationUtil.cpp b/cpp/src/utils/ValidationUtil.cpp index bce8143c1a4045a5b4c4ca2e0a467daf76d82e8c..653c0472dc3a4ac00c4b68564f368158b53b413b 100644 --- a/cpp/src/utils/ValidationUtil.cpp +++ b/cpp/src/utils/ValidationUtil.cpp @@ -8,9 +8,9 @@ namespace zilliz { namespace milvus { namespace server { -constexpr size_t table_name_size_limit = 255; -constexpr int64_t table_dimension_limit = 16384; -constexpr int32_t index_file_size_limit = 4096; //index trigger size max = 4096 MB +constexpr size_t TABLE_NAME_SIZE_LIMIT = 255; +constexpr int64_t TABLE_DIMENSION_LIMIT = 16384; +constexpr int32_t INDEX_FILE_SIZE_LIMIT = 4096; //index trigger size max = 4096 MB ErrorCode ValidationUtil::ValidateTableName(const std::string &table_name) { @@ -22,7 +22,7 @@ ValidationUtil::ValidateTableName(const std::string &table_name) { } // Table name size shouldn't exceed 16384. - if (table_name.size() > table_name_size_limit) { + if (table_name.size() > TABLE_NAME_SIZE_LIMIT) { SERVER_LOG_ERROR << "Table name size exceed the limitation"; return SERVER_INVALID_TABLE_NAME; } @@ -48,8 +48,8 @@ ValidationUtil::ValidateTableName(const std::string &table_name) { ErrorCode ValidationUtil::ValidateTableDimension(int64_t dimension) { - if (dimension <= 0 || dimension > table_dimension_limit) { - SERVER_LOG_ERROR << "Table dimension excceed the limitation: " << table_dimension_limit; + if (dimension <= 0 || dimension > TABLE_DIMENSION_LIMIT) { + SERVER_LOG_ERROR << "Table dimension excceed the limitation: " << TABLE_DIMENSION_LIMIT; return SERVER_INVALID_VECTOR_DIMENSION; } else { return SERVER_SUCCESS; @@ -77,7 +77,7 @@ ValidationUtil::ValidateTableIndexNlist(int32_t nlist) { ErrorCode ValidationUtil::ValidateTableIndexFileSize(int64_t index_file_size) { - if(index_file_size <= 0 || index_file_size > index_file_size_limit) { + if(index_file_size <= 0 || index_file_size > INDEX_FILE_SIZE_LIMIT) { return SERVER_INVALID_INDEX_FILE_SIZE; } diff --git a/cpp/src/wrapper/knowhere/vec_index.cpp b/cpp/src/wrapper/knowhere/vec_index.cpp index 1ee8697d64a97da5b316657cad96b8814365831e..d5f0813663a10125756a3d154822bc133c628fe4 100644 --- a/cpp/src/wrapper/knowhere/vec_index.cpp +++ b/cpp/src/wrapper/knowhere/vec_index.cpp @@ -139,7 +139,11 @@ VecIndexPtr read_index(const std::string &location) { knowhere::BinarySet load_data_list; FileIOReader reader(location); reader.fs.seekg(0, reader.fs.end); - size_t length = reader.fs.tellg(); + int64_t length = reader.fs.tellg(); + if(length <= 0) { + return nullptr; + } + reader.fs.seekg(0); size_t rp = 0; diff --git a/cpp/unittest/db/db_tests.cpp b/cpp/unittest/db/db_tests.cpp index acf69a9aa1e8c4dbdc3d01cea838ad115bc38fb6..2c300849b429b5a7574a09a6dee0423f6e467c83 100644 --- a/cpp/unittest/db/db_tests.cpp +++ b/cpp/unittest/db/db_tests.cpp @@ -147,7 +147,7 @@ TEST_F(DBTest, DB_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); engine::IDNumbers vector_ids; @@ -181,7 +181,7 @@ TEST_F(DBTest, DB_TEST) { ss << "Search " << j << " With Size " << count/engine::meta::M << " M"; STOP_TIMER(ss.str()); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); for (auto k=0; kGetTableRowCount(TABLE_NAME, count); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_TRUE(count > 0); }; @@ -223,7 +223,7 @@ TEST_F(DBTest, SEARCH_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); // prepare raw data @@ -258,7 +258,7 @@ TEST_F(DBTest, SEARCH_TEST) { for (int j = 0; j < nb / batch_size; ++j) { stat = db_->InsertVectors(TABLE_NAME, batch_size, xb.data()+batch_size*j*TABLE_DIM, ids); if (j == 200){ sleep(1);} - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); } engine::TableIndex index; @@ -268,7 +268,7 @@ TEST_F(DBTest, SEARCH_TEST) { { engine::QueryResults results; stat = db_->Query(TABLE_NAME, k, nq, 10, xq.data(), results); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); } {//search by specify index file @@ -276,7 +276,7 @@ TEST_F(DBTest, SEARCH_TEST) { std::vector file_ids = {"1", "2", "3", "4", "5", "6"}; engine::QueryResults results; stat = db_->Query(TABLE_NAME, file_ids, k, nq, 10, xq.data(), dates, results); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); } // TODO(linxj): add groundTruth assert @@ -289,7 +289,7 @@ TEST_F(DBTest, PRELOADTABLE_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); int64_t nb = VECTOR_COUNT; @@ -309,7 +309,7 @@ TEST_F(DBTest, PRELOADTABLE_TEST) { int64_t prev_cache_usage = cache::CpuCacheMgr::GetInstance()->CacheUsage(); stat = db_->PreloadTable(TABLE_NAME); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); int64_t cur_cache_usage = cache::CpuCacheMgr::GetInstance()->CacheUsage(); ASSERT_TRUE(prev_cache_usage < cur_cache_usage); @@ -322,7 +322,7 @@ TEST_F(DBTest2, ARHIVE_DISK_CHECK) { std::vector table_schema_array; stat = db_->AllTables(table_schema_array); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); bool bfound = false; for(auto& schema : table_schema_array) { if(schema.table_id_ == TABLE_NAME) { @@ -335,7 +335,7 @@ TEST_F(DBTest2, ARHIVE_DISK_CHECK) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); uint64_t size; @@ -366,7 +366,7 @@ TEST_F(DBTest2, DELETE_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); bool has_table = false; db_->HasTable(TABLE_NAME, has_table); @@ -405,7 +405,7 @@ TEST_F(DBTest2, DELETE_BY_RANGE_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); bool has_table = false; db_->HasTable(TABLE_NAME, has_table); @@ -433,7 +433,7 @@ TEST_F(DBTest2, DELETE_BY_RANGE_TEST) { ConvertTimeRangeToDBDates(start_value, end_value, dates); stat = db_->DeleteTable(TABLE_NAME, dates); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); uint64_t row_count = 0; db_->GetTableRowCount(TABLE_NAME, row_count); diff --git a/cpp/unittest/db/mem_test.cpp b/cpp/unittest/db/mem_test.cpp index 9344d2ccc394639a469c0ace8a861cfa815a6827..460003a9f1a1f19e7c288a2ace7c96429a0f1aae 100644 --- a/cpp/unittest/db/mem_test.cpp +++ b/cpp/unittest/db/mem_test.cpp @@ -3,12 +3,12 @@ #include "db/insert/VectorSource.h" #include "db/insert/MemTableFile.h" #include "db/insert/MemTable.h" -#include "utils.h" #include "db/Factories.h" #include "db/Constants.h" #include "db/engine/EngineFactory.h" -#include "metrics/Metrics.h" #include "db/meta/MetaConsts.h" +#include "metrics/Metrics.h" +#include "utils.h" #include #include @@ -223,7 +223,7 @@ TEST_F(MemManagerTest2, SERIAL_INSERT_SEARCH_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); std::map> search_vectors; @@ -269,7 +269,7 @@ TEST_F(MemManagerTest2, INSERT_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); auto start_time = METRICS_NOW_TIME; @@ -295,7 +295,7 @@ TEST_F(MemManagerTest2, CONCURRENT_INSERT_SEARCH_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); engine::IDNumbers vector_ids; @@ -329,7 +329,7 @@ TEST_F(MemManagerTest2, CONCURRENT_INSERT_SEARCH_TEST) { ss << "Search " << j << " With Size " << count / engine::meta::M << " M"; STOP_TIMER(ss.str()); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); for (auto k = 0; k < qb; ++k) { ASSERT_EQ(results[k][0].first, target_ids[k]); ss.str(""); @@ -366,7 +366,7 @@ TEST_F(MemManagerTest2, VECTOR_IDS_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); engine::IDNumbers vector_ids; @@ -383,7 +383,7 @@ TEST_F(MemManagerTest2, VECTOR_IDS_TEST) { stat = db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); ASSERT_EQ(vector_ids[0], 0); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); nb = 25000; xb.clear(); @@ -395,7 +395,7 @@ TEST_F(MemManagerTest2, VECTOR_IDS_TEST) { } stat = db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); ASSERT_EQ(vector_ids[0], nb); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); nb = 262144; //512M xb.clear(); @@ -407,14 +407,14 @@ TEST_F(MemManagerTest2, VECTOR_IDS_TEST) { } stat = db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); ASSERT_EQ(vector_ids[0], nb/2); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); nb = 65536; //128M xb.clear(); BuildVectors(nb, xb); vector_ids.clear(); stat = db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); nb = 100; xb.clear(); diff --git a/cpp/unittest/db/mysql_db_test.cpp b/cpp/unittest/db/mysql_db_test.cpp index 943577bb7270fac52455e68213974cf3ac349771..a98959ed9783b5732567983ea9f2d09c6d122e9e 100644 --- a/cpp/unittest/db/mysql_db_test.cpp +++ b/cpp/unittest/db/mysql_db_test.cpp @@ -53,7 +53,7 @@ TEST_F(MySqlDBTest, DB_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); engine::IDNumbers vector_ids; @@ -90,7 +90,7 @@ TEST_F(MySqlDBTest, DB_TEST) { ss << "Search " << j << " With Size " << count/engine::meta::M << " M"; STOP_TIMER(ss.str()); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); for (auto k=0; kDescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); // prepare raw data @@ -173,14 +173,14 @@ TEST_F(MySqlDBTest, SEARCH_TEST) { for (int j = 0; j < nb / batch_size; ++j) { stat = db_->InsertVectors(TABLE_NAME, batch_size, xb.data()+batch_size*j*TABLE_DIM, ids); if (j == 200){ sleep(1);} - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); } sleep(2); // wait until build index finish engine::QueryResults results; stat = db_->Query(TABLE_NAME, k, nq, 10, xq.data(), results); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); }; TEST_F(MySqlDBTest, ARHIVE_DISK_CHECK) { @@ -189,7 +189,7 @@ TEST_F(MySqlDBTest, ARHIVE_DISK_CHECK) { std::vector table_schema_array; stat = db_->AllTables(table_schema_array); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); bool bfound = false; for(auto& schema : table_schema_array) { if(schema.table_id_ == TABLE_NAME) { @@ -202,7 +202,7 @@ TEST_F(MySqlDBTest, ARHIVE_DISK_CHECK) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); engine::IDNumbers vector_ids; @@ -236,7 +236,7 @@ TEST_F(MySqlDBTest, DELETE_TEST) { engine::meta::TableSchema table_info_get; table_info_get.table_id_ = TABLE_NAME; stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); + ASSERT_TRUE(stat.ok()); bool has_table = false; db_->HasTable(TABLE_NAME, has_table); diff --git a/cpp/unittest/db/utils.cpp b/cpp/unittest/db/utils.cpp index 6a13ba526a2275171ce6f93c1c368d46ecf58bd6..5b8d82522d320f02aacefbe09ebe9f55d0cbde8d 100644 --- a/cpp/unittest/db/utils.cpp +++ b/cpp/unittest/db/utils.cpp @@ -35,13 +35,6 @@ public: }; -void ASSERT_STATS(engine::Status& stat) { - ASSERT_TRUE(stat.ok()); - if(!stat.ok()) { - std::cout << stat.ToString() << std::endl; - } -} - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BaseTest::InitLog() { el::Configurations defaultConf; @@ -94,7 +87,8 @@ void DBTest::TearDown() { engine::ResMgrInst::GetInstance()->Stop(); engine::SchedInst::GetInstance()->Stop(); - boost::filesystem::remove_all("/tmp/milvus_test"); + auto options = GetOptions(); + boost::filesystem::remove_all(options.meta.path); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -110,11 +104,15 @@ engine::Options DBTest2::GetOptions() { void MetaTest::SetUp() { BaseTest::SetUp(); - impl_ = engine::DBMetaImplFactory::Build(); + auto options = GetOptions(); + impl_ = std::make_shared(options.meta); } void MetaTest::TearDown() { impl_->DropAll(); + + auto options = GetOptions(); + boost::filesystem::remove_all(options.meta.path); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -134,13 +132,15 @@ engine::Options MySqlDBTest::GetOptions() { void MySqlMetaTest::SetUp() { BaseTest::SetUp(); - engine::DBMetaOptions options = GetOptions().meta; - int mode = engine::Options::MODE::SINGLE; - impl_ = std::make_shared(options, mode); + auto options = GetOptions(); + impl_ = std::make_shared(options.meta, options.mode); } void MySqlMetaTest::TearDown() { impl_->DropAll(); + + auto options = GetOptions(); + boost::filesystem::remove_all(options.meta.path); } zilliz::milvus::engine::Options MySqlMetaTest::GetOptions() { diff --git a/cpp/unittest/db/utils.h b/cpp/unittest/db/utils.h index 15c8a3fa54b5ba39b63ca23b69c8f227d7d7073e..7e3f7d5eac79b6954394975454aef9aec6bbef74 100644 --- a/cpp/unittest/db/utils.h +++ b/cpp/unittest/db/utils.h @@ -32,8 +32,6 @@ #define STOP_TIMER(name) #endif -void ASSERT_STATS(zilliz::milvus::engine::Status &stat); - class BaseTest : public ::testing::Test { protected: void InitLog(); diff --git a/cpp/unittest/knowhere/knowhere_test.cpp b/cpp/unittest/knowhere/knowhere_test.cpp index 2bd4bddc70a0da459b15271b512ac6b796eaa899..85373a0adc3c4b4c33632d4de38ae567e94b1cd1 100644 --- a/cpp/unittest/knowhere/knowhere_test.cpp +++ b/cpp/unittest/knowhere/knowhere_test.cpp @@ -34,7 +34,6 @@ class KnowhereWrapperTest std::string generator_type; std::tie(index_type, generator_type, dim, nb, nq, k, train_cfg, search_cfg) = GetParam(); - //auto generator = GetGenerateFactory(generator_type); auto generator = std::make_shared(); generator->GenData(dim, nb, nq, xb, xq, ids, k, gt_ids, gt_dis); diff --git a/cpp/unittest/knowhere/utils.cpp b/cpp/unittest/knowhere/utils.cpp index ede5dd048502f9f5c1fd59611e154a83cccfd5cf..e07bd2cd4296b0c022209eaf981c8bd73f06661c 100644 --- a/cpp/unittest/knowhere/utils.cpp +++ b/cpp/unittest/knowhere/utils.cpp @@ -9,14 +9,6 @@ #include "utils.h" -DataGenPtr GetGenerateFactory(const std::string &gen_type) { - std::shared_ptr generator; - if (gen_type == "default") { - generator = std::make_shared(); - } - return generator; -} - void DataGenBase::GenData(const int &dim, const int &nb, const int &nq, float *xb, float *xq, long *ids, const int &k, long *gt_ids, float *gt_dis) { diff --git a/cpp/unittest/knowhere/utils.h b/cpp/unittest/knowhere/utils.h index ce3c428d68a43ed0e1cf0ba8acae698ad3de57cb..69653b64701f944b3c934f5a3a925b7a6b2dfa01 100644 --- a/cpp/unittest/knowhere/utils.h +++ b/cpp/unittest/knowhere/utils.h @@ -17,8 +17,6 @@ class DataGenBase; using DataGenPtr = std::shared_ptr; -extern DataGenPtr GetGenerateFactory(const std::string &gen_type); - class DataGenBase { public: diff --git a/cpp/unittest/metrics/metrics_test.cpp b/cpp/unittest/metrics/metrics_test.cpp index 2d31154e3c94851c119eb8b00a15a933abe3c306..d33ace6868bbcb4a445d096ced31cb4d66d41e53 100644 --- a/cpp/unittest/metrics/metrics_test.cpp +++ b/cpp/unittest/metrics/metrics_test.cpp @@ -90,8 +90,6 @@ TEST_F(MetricTest, Metric_Tes) { // stat = db_->Query(group_name, k, qb, qxb, results); ss << "Search " << j << " With Size " << (float)(count*group_dim*sizeof(float))/(1024*1024) << " M"; - -// ASSERT_STATS(stat); for (auto k=0; k