From 2f6799e53b4d7c5f46495982c994a1398cdfe529 Mon Sep 17 00:00:00 2001 From: zhiru Date: Tue, 9 Jul 2019 17:31:02 +0800 Subject: [PATCH 1/6] fix cmake Former-commit-id: bcbf6776c264b9aa59de049201249acff7c8c37e --- cpp/unittest/db/CMakeLists.txt | 4 ++-- cpp/unittest/faiss_wrapper/CMakeLists.txt | 6 +++--- cpp/unittest/license/CMakeLists.txt | 6 +++--- cpp/unittest/metrics/CMakeLists.txt | 4 ++-- cpp/unittest/server/CMakeLists.txt | 6 +++--- cpp/unittest/storage/CMakeLists.txt | 2 +- cpp/unittest/utils/CMakeLists.txt | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/cpp/unittest/db/CMakeLists.txt b/cpp/unittest/db/CMakeLists.txt index 2d360a5d62..acd13b8cda 100644 --- a/cpp/unittest/db/CMakeLists.txt +++ b/cpp/unittest/db/CMakeLists.txt @@ -40,8 +40,8 @@ cuda_add_executable(db_test ${db_test_src}) set(db_libs sqlite - boost_system - boost_filesystem + boost_system_static + boost_filesystem_static lz4 mysqlpp ) diff --git a/cpp/unittest/faiss_wrapper/CMakeLists.txt b/cpp/unittest/faiss_wrapper/CMakeLists.txt index f044df8d8c..ff2535e3fd 100644 --- a/cpp/unittest/faiss_wrapper/CMakeLists.txt +++ b/cpp/unittest/faiss_wrapper/CMakeLists.txt @@ -22,13 +22,13 @@ add_executable(wrapper_test ${wrapper_test_src}) set(wrapper_libs stdc++ - boost_system - boost_filesystem + boost_system_static + boost_filesystem_static libgpufaiss.a faiss cudart cublas - sqlite3 + sqlite snappy bz2 z diff --git a/cpp/unittest/license/CMakeLists.txt b/cpp/unittest/license/CMakeLists.txt index 93af82ed56..39d0ede197 100644 --- a/cpp/unittest/license/CMakeLists.txt +++ b/cpp/unittest/license/CMakeLists.txt @@ -33,11 +33,11 @@ set(db_libs nvidia-ml cudart cublas - boost_system - boost_filesystem + boost_system_static + boost_filesystem_static lz4 crypto - boost_serialization + boost_serialization_static ) target_link_libraries(license_test ${db_libs} ${unittest_libs}) diff --git a/cpp/unittest/metrics/CMakeLists.txt b/cpp/unittest/metrics/CMakeLists.txt index e55f99eb3e..28a438e344 100644 --- a/cpp/unittest/metrics/CMakeLists.txt +++ b/cpp/unittest/metrics/CMakeLists.txt @@ -78,8 +78,8 @@ target_link_libraries(metrics_test cudart cublas sqlite - boost_system - boost_filesystem + boost_system_static + boost_filesystem_static lz4 metrics gtest diff --git a/cpp/unittest/server/CMakeLists.txt b/cpp/unittest/server/CMakeLists.txt index 94a581d276..29a54fddb8 100644 --- a/cpp/unittest/server/CMakeLists.txt +++ b/cpp/unittest/server/CMakeLists.txt @@ -39,9 +39,9 @@ set(require_libs stdc++ cudart cublas - sqlite3 - boost_system - boost_filesystem + sqlite + boost_system_static + boost_filesystem_static snappy z bz2 diff --git a/cpp/unittest/storage/CMakeLists.txt b/cpp/unittest/storage/CMakeLists.txt index 6b4303b70a..d4deaefab8 100644 --- a/cpp/unittest/storage/CMakeLists.txt +++ b/cpp/unittest/storage/CMakeLists.txt @@ -25,7 +25,7 @@ set(s3_client_libs stdc++ aws-cpp-sdk-s3 aws-cpp-sdk-core - boost_filesystem + boost_filesystem_static ) target_link_libraries(s3_test ${s3_client_libs} diff --git a/cpp/unittest/utils/CMakeLists.txt b/cpp/unittest/utils/CMakeLists.txt index a46a3b05e1..61e4459462 100644 --- a/cpp/unittest/utils/CMakeLists.txt +++ b/cpp/unittest/utils/CMakeLists.txt @@ -25,6 +25,6 @@ add_executable(valication_util_test target_link_libraries(valication_util_test ${unittest_libs} - boost_filesystem) + boost_filesystem_static) install(TARGETS valication_util_test DESTINATION bin) \ No newline at end of file From df26e649cd006a6c1a5de1783041a7e11a6fa472 Mon Sep 17 00:00:00 2001 From: zhiru Date: Tue, 9 Jul 2019 17:32:05 +0800 Subject: [PATCH 2/6] update Former-commit-id: 632e7b8205196c234eb85dca72c59f52db82979f --- cpp/src/db/Factories.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/src/db/Factories.cpp b/cpp/src/db/Factories.cpp index 3cfb9a6eb3..442dca2974 100644 --- a/cpp/src/db/Factories.cpp +++ b/cpp/src/db/Factories.cpp @@ -26,8 +26,6 @@ namespace zilliz { namespace milvus { namespace engine { -#define USE_NEW_MEM_MANAGER 1 - DBMetaOptions DBMetaOptionsFactory::Build(const std::string& path) { auto p = path; if(p == "") { From f57ffefa36bb83ff69621785a071fa7bdf60e431 Mon Sep 17 00:00:00 2001 From: zhiru Date: Tue, 9 Jul 2019 21:11:05 +0800 Subject: [PATCH 3/6] update Former-commit-id: c4bd8a4f4c714ad54999e8c7471b1c6179427b62 --- cpp/cmake/ThirdPartyPackages.cmake | 2 +- cpp/unittest/db/CMakeLists.txt | 6 +- cpp/unittest/db/mem_test.cpp | 160 ++++++++++++++--------------- 3 files changed, 85 insertions(+), 83 deletions(-) diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index b4b21b8085..8b888519f9 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -534,7 +534,7 @@ if(MILVUS_BOOST_VENDORED) "" ${EP_LOG_OPTIONS}) set(Boost_INCLUDE_DIR "${BOOST_PREFIX}") - set(Boost_INCLUDE_DIRS "${BOOST_INCLUDE_DIR}") + set(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIR}") add_dependencies(boost_system_static boost_ep) add_dependencies(boost_filesystem_static boost_ep) add_dependencies(boost_serialization_static boost_ep) diff --git a/cpp/unittest/db/CMakeLists.txt b/cpp/unittest/db/CMakeLists.txt index acd13b8cda..1415cef16a 100644 --- a/cpp/unittest/db/CMakeLists.txt +++ b/cpp/unittest/db/CMakeLists.txt @@ -24,6 +24,8 @@ link_directories("/usr/local/cuda/lib64") include_directories(/usr/include/mysql) +#add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY) + set(db_test_src #${unittest_srcs} ${config_files} @@ -40,8 +42,8 @@ cuda_add_executable(db_test ${db_test_src}) set(db_libs sqlite - boost_system_static boost_filesystem_static + boost_system_static lz4 mysqlpp ) @@ -59,6 +61,6 @@ set(knowhere_libs cublas ) -target_link_libraries(db_test ${db_libs} ${unittest_libs} ${knowhere_libs}) +target_link_libraries(db_test ${knowhere_libs} ${db_libs} ${unittest_libs}) install(TARGETS db_test DESTINATION bin) diff --git a/cpp/unittest/db/mem_test.cpp b/cpp/unittest/db/mem_test.cpp index 5b7972ec35..56ff0dbec6 100644 --- a/cpp/unittest/db/mem_test.cpp +++ b/cpp/unittest/db/mem_test.cpp @@ -289,84 +289,84 @@ TEST_F(NewMemManagerTest, INSERT_TEST) { } -TEST_F(NewMemManagerTest, CONCURRENT_INSERT_SEARCH_TEST) { - - auto options = engine::OptionsFactory::Build(); - options.meta.path = "/tmp/milvus_test"; - options.meta.backend_uri = "sqlite://:@:/"; - auto db_ = engine::DBFactory::Build(options); - - engine::meta::TableSchema table_info = BuildTableSchema(); - engine::Status stat = db_->CreateTable(table_info); - - engine::meta::TableSchema table_info_get; - table_info_get.table_id_ = TABLE_NAME; - stat = db_->DescribeTable(table_info_get); - ASSERT_STATS(stat); - ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); - - engine::IDNumbers vector_ids; - engine::IDNumbers target_ids; - - int64_t nb = 409600; - std::vector xb; - BuildVectors(nb, xb); - - int64_t qb = 5; - std::vector qxb; - BuildVectors(qb, qxb); - - std::thread search([&]() { - engine::QueryResults results; - int k = 10; - std::this_thread::sleep_for(std::chrono::seconds(2)); - - INIT_TIMER; - std::stringstream ss; - uint64_t count = 0; - uint64_t prev_count = 0; - - for (auto j = 0; j < 10; ++j) { - ss.str(""); - db_->Size(count); - prev_count = count; - - START_TIMER; - stat = db_->Query(TABLE_NAME, k, qb, qxb.data(), results); - ss << "Search " << j << " With Size " << count / engine::meta::M << " M"; - STOP_TIMER(ss.str()); - - ASSERT_STATS(stat); - for (auto k = 0; k < qb; ++k) { - ASSERT_EQ(results[k][0].first, target_ids[k]); - ss.str(""); - ss << "Result [" << k << "]:"; - for (auto result : results[k]) { - ss << result.first << " "; - } - /* LOG(DEBUG) << ss.str(); */ - } - ASSERT_TRUE(count >= prev_count); - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - }); - - int loop = 20; - - for (auto i = 0; i < loop; ++i) { - if (i == 0) { - db_->InsertVectors(TABLE_NAME, qb, qxb.data(), target_ids); - ASSERT_EQ(target_ids.size(), qb); - } else { - db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); - } - std::this_thread::sleep_for(std::chrono::microseconds(1)); - } - - search.join(); - - delete db_; - boost::filesystem::remove_all(options.meta.path); - -}; +//TEST_F(NewMemManagerTest, CONCURRENT_INSERT_SEARCH_TEST) { +// +// auto options = engine::OptionsFactory::Build(); +// options.meta.path = "/tmp/milvus_test"; +// options.meta.backend_uri = "sqlite://:@:/"; +// auto db_ = engine::DBFactory::Build(options); +// +// engine::meta::TableSchema table_info = BuildTableSchema(); +// engine::Status stat = db_->CreateTable(table_info); +// +// engine::meta::TableSchema table_info_get; +// table_info_get.table_id_ = TABLE_NAME; +// stat = db_->DescribeTable(table_info_get); +// ASSERT_STATS(stat); +// ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); +// +// engine::IDNumbers vector_ids; +// engine::IDNumbers target_ids; +// +// int64_t nb = 409600; +// std::vector xb; +// BuildVectors(nb, xb); +// +// int64_t qb = 5; +// std::vector qxb; +// BuildVectors(qb, qxb); +// +// std::thread search([&]() { +// engine::QueryResults results; +// int k = 10; +// std::this_thread::sleep_for(std::chrono::seconds(5)); +// +// INIT_TIMER; +// std::stringstream ss; +// uint64_t count = 0; +// uint64_t prev_count = 0; +// +// for (auto j = 0; j < 10; ++j) { +// ss.str(""); +// db_->Size(count); +// prev_count = count; +// +// START_TIMER; +// stat = db_->Query(TABLE_NAME, k, qb, qxb.data(), results); +// ss << "Search " << j << " With Size " << count / engine::meta::M << " M"; +// STOP_TIMER(ss.str()); +// +// ASSERT_STATS(stat); +// for (auto k = 0; k < qb; ++k) { +// ASSERT_EQ(results[k][0].first, target_ids[k]); +// ss.str(""); +// ss << "Result [" << k << "]:"; +// for (auto result : results[k]) { +// ss << result.first << " "; +// } +// /* LOG(DEBUG) << ss.str(); */ +// } +// ASSERT_TRUE(count >= prev_count); +// std::this_thread::sleep_for(std::chrono::seconds(2)); +// } +// }); +// +// int loop = 20; +// +// for (auto i = 0; i < loop; ++i) { +// if (i == 0) { +// db_->InsertVectors(TABLE_NAME, qb, qxb.data(), target_ids); +// ASSERT_EQ(target_ids.size(), qb); +// } else { +// db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); +// } +// std::this_thread::sleep_for(std::chrono::microseconds(1)); +// } +// +// search.join(); +// +// delete db_; +// boost::filesystem::remove_all(options.meta.path); +// +//}; From 143a172ae89a9eb1b323bdc5ccef270d65622f7d Mon Sep 17 00:00:00 2001 From: zhiru Date: Tue, 9 Jul 2019 21:13:55 +0800 Subject: [PATCH 4/6] update Former-commit-id: 1575fe6ead3c09caf0d5d3fa764ceb461431ab5e --- cpp/unittest/db/mem_test.cpp | 160 +++++++++++++++++------------------ 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/cpp/unittest/db/mem_test.cpp b/cpp/unittest/db/mem_test.cpp index 56ff0dbec6..5b7972ec35 100644 --- a/cpp/unittest/db/mem_test.cpp +++ b/cpp/unittest/db/mem_test.cpp @@ -289,84 +289,84 @@ TEST_F(NewMemManagerTest, INSERT_TEST) { } -//TEST_F(NewMemManagerTest, CONCURRENT_INSERT_SEARCH_TEST) { -// -// auto options = engine::OptionsFactory::Build(); -// options.meta.path = "/tmp/milvus_test"; -// options.meta.backend_uri = "sqlite://:@:/"; -// auto db_ = engine::DBFactory::Build(options); -// -// engine::meta::TableSchema table_info = BuildTableSchema(); -// engine::Status stat = db_->CreateTable(table_info); -// -// engine::meta::TableSchema table_info_get; -// table_info_get.table_id_ = TABLE_NAME; -// stat = db_->DescribeTable(table_info_get); -// ASSERT_STATS(stat); -// ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); -// -// engine::IDNumbers vector_ids; -// engine::IDNumbers target_ids; -// -// int64_t nb = 409600; -// std::vector xb; -// BuildVectors(nb, xb); -// -// int64_t qb = 5; -// std::vector qxb; -// BuildVectors(qb, qxb); -// -// std::thread search([&]() { -// engine::QueryResults results; -// int k = 10; -// std::this_thread::sleep_for(std::chrono::seconds(5)); -// -// INIT_TIMER; -// std::stringstream ss; -// uint64_t count = 0; -// uint64_t prev_count = 0; -// -// for (auto j = 0; j < 10; ++j) { -// ss.str(""); -// db_->Size(count); -// prev_count = count; -// -// START_TIMER; -// stat = db_->Query(TABLE_NAME, k, qb, qxb.data(), results); -// ss << "Search " << j << " With Size " << count / engine::meta::M << " M"; -// STOP_TIMER(ss.str()); -// -// ASSERT_STATS(stat); -// for (auto k = 0; k < qb; ++k) { -// ASSERT_EQ(results[k][0].first, target_ids[k]); -// ss.str(""); -// ss << "Result [" << k << "]:"; -// for (auto result : results[k]) { -// ss << result.first << " "; -// } -// /* LOG(DEBUG) << ss.str(); */ -// } -// ASSERT_TRUE(count >= prev_count); -// std::this_thread::sleep_for(std::chrono::seconds(2)); -// } -// }); -// -// int loop = 20; -// -// for (auto i = 0; i < loop; ++i) { -// if (i == 0) { -// db_->InsertVectors(TABLE_NAME, qb, qxb.data(), target_ids); -// ASSERT_EQ(target_ids.size(), qb); -// } else { -// db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); -// } -// std::this_thread::sleep_for(std::chrono::microseconds(1)); -// } -// -// search.join(); -// -// delete db_; -// boost::filesystem::remove_all(options.meta.path); -// -//}; +TEST_F(NewMemManagerTest, CONCURRENT_INSERT_SEARCH_TEST) { + + auto options = engine::OptionsFactory::Build(); + options.meta.path = "/tmp/milvus_test"; + options.meta.backend_uri = "sqlite://:@:/"; + auto db_ = engine::DBFactory::Build(options); + + engine::meta::TableSchema table_info = BuildTableSchema(); + engine::Status stat = db_->CreateTable(table_info); + + engine::meta::TableSchema table_info_get; + table_info_get.table_id_ = TABLE_NAME; + stat = db_->DescribeTable(table_info_get); + ASSERT_STATS(stat); + ASSERT_EQ(table_info_get.dimension_, TABLE_DIM); + + engine::IDNumbers vector_ids; + engine::IDNumbers target_ids; + + int64_t nb = 409600; + std::vector xb; + BuildVectors(nb, xb); + + int64_t qb = 5; + std::vector qxb; + BuildVectors(qb, qxb); + + std::thread search([&]() { + engine::QueryResults results; + int k = 10; + std::this_thread::sleep_for(std::chrono::seconds(2)); + + INIT_TIMER; + std::stringstream ss; + uint64_t count = 0; + uint64_t prev_count = 0; + + for (auto j = 0; j < 10; ++j) { + ss.str(""); + db_->Size(count); + prev_count = count; + + START_TIMER; + stat = db_->Query(TABLE_NAME, k, qb, qxb.data(), results); + ss << "Search " << j << " With Size " << count / engine::meta::M << " M"; + STOP_TIMER(ss.str()); + + ASSERT_STATS(stat); + for (auto k = 0; k < qb; ++k) { + ASSERT_EQ(results[k][0].first, target_ids[k]); + ss.str(""); + ss << "Result [" << k << "]:"; + for (auto result : results[k]) { + ss << result.first << " "; + } + /* LOG(DEBUG) << ss.str(); */ + } + ASSERT_TRUE(count >= prev_count); + std::this_thread::sleep_for(std::chrono::seconds(1)); + } + }); + + int loop = 20; + + for (auto i = 0; i < loop; ++i) { + if (i == 0) { + db_->InsertVectors(TABLE_NAME, qb, qxb.data(), target_ids); + ASSERT_EQ(target_ids.size(), qb); + } else { + db_->InsertVectors(TABLE_NAME, nb, xb.data(), vector_ids); + } + std::this_thread::sleep_for(std::chrono::microseconds(1)); + } + + search.join(); + + delete db_; + boost::filesystem::remove_all(options.meta.path); + +}; From 81ab29ed88323879f33041a99edc6da1370c0e6a Mon Sep 17 00:00:00 2001 From: zhiru Date: Tue, 9 Jul 2019 21:15:54 +0800 Subject: [PATCH 5/6] update Former-commit-id: 64463e2d9609f85f1347c39a3b42eba880f35565 --- cpp/unittest/db/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/unittest/db/CMakeLists.txt b/cpp/unittest/db/CMakeLists.txt index 1415cef16a..60c22d0ee2 100644 --- a/cpp/unittest/db/CMakeLists.txt +++ b/cpp/unittest/db/CMakeLists.txt @@ -42,8 +42,8 @@ cuda_add_executable(db_test ${db_test_src}) set(db_libs sqlite - boost_filesystem_static boost_system_static + boost_filesystem_static lz4 mysqlpp ) From 739744569cae60e9c66d2c38a60a274be1883114 Mon Sep 17 00:00:00 2001 From: starlord Date: Wed, 10 Jul 2019 14:54:19 +0800 Subject: [PATCH 6/6] fix server test Former-commit-id: 9f3f0b98fb27392407ad0319608034a89a918b33 --- cpp/unittest/CMakeLists.txt | 2 +- cpp/unittest/server/cache_test.cpp | 73 +++++++++++++++++++++++++----- 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/cpp/unittest/CMakeLists.txt b/cpp/unittest/CMakeLists.txt index 8675bf8735..225aca2c81 100644 --- a/cpp/unittest/CMakeLists.txt +++ b/cpp/unittest/CMakeLists.txt @@ -37,7 +37,7 @@ set(unittest_libs ${CUDA_TOOLKIT_ROOT_DIR}/lib64/stubs/libnvidia-ml.so ) -#add_subdirectory(server) +add_subdirectory(server) add_subdirectory(db) add_subdirectory(index_wrapper) #add_subdirectory(faiss_wrapper) diff --git a/cpp/unittest/server/cache_test.cpp b/cpp/unittest/server/cache_test.cpp index 8c323d81d3..4b40861d0b 100644 --- a/cpp/unittest/server/cache_test.cpp +++ b/cpp/unittest/server/cache_test.cpp @@ -8,6 +8,7 @@ #include "cache/GpuCacheMgr.h" #include "wrapper/Index.h" +#include "wrapper/knowhere/vec_index.h" using namespace zilliz::milvus; @@ -26,6 +27,54 @@ public: } }; +class MockVecIndex : public engine::VecIndex { +public: + virtual void BuildAll(const long &nb, + const float *xb, + const long *ids, + const engine::Config &cfg, + const long &nt = 0, + const float *xt = nullptr) { + + } + + virtual void Add(const long &nb, + const float *xb, + const long *ids, + const engine::Config &cfg = engine::Config()) { + + } + + virtual void Search(const long &nq, + const float *xq, + float *dist, + long *ids, + const engine::Config &cfg = engine::Config()) { + + } + + virtual int64_t Dimension() { + return dimension_; + } + + virtual int64_t Count() { + return ntotal_; + } + + virtual zilliz::knowhere::BinarySet Serialize() { + zilliz::knowhere::BinarySet binset; + return binset; + } + + virtual void Load(const zilliz::knowhere::BinarySet &index_binary) { + + } + +public: + int64_t dimension_ = 512; + int64_t ntotal_ = 0; +}; + } TEST(CacheTest, CPU_CACHE_TEST) { @@ -40,9 +89,9 @@ TEST(CacheTest, CPU_CACHE_TEST) { const int dim = 256; for (int i = 0; i < 20; i++) { - std::shared_ptr raw_index(faiss::index_factory(dim, "IDMap,Flat")); - engine::Index_ptr index = std::make_shared(raw_index); - index->ntotal = 1000000;//less 1G per index + MockVecIndex* mock_index = new MockVecIndex(); + mock_index->ntotal_ = 1000000;//less 1G per index + engine::Index_ptr index(mock_index); cpu_mgr->InsertItem("index_" + std::to_string(i), index); } @@ -65,9 +114,9 @@ TEST(CacheTest, CPU_CACHE_TEST) { g_num = 5; cpu_mgr->SetCapacity(g_num * gbyte); - std::shared_ptr raw_index(faiss::index_factory(dim, "IDMap,Flat")); - engine::Index_ptr index = std::make_shared(raw_index); - index->ntotal = 6000000;//6G less + MockVecIndex* mock_index = new MockVecIndex(); + mock_index->ntotal_ = 6000000;//6G less + engine::Index_ptr index(mock_index); cpu_mgr->InsertItem("index_6g", index); ASSERT_EQ(cpu_mgr->ItemCount(), 0);//data greater than capacity can not be inserted sucessfully @@ -82,9 +131,9 @@ TEST(CacheTest, GPU_CACHE_TEST) { const int dim = 256; for(int i = 0; i < 20; i++) { - std::shared_ptr raw_index(faiss::index_factory(dim, "IDMap,Flat")); - engine::Index_ptr index = std::make_shared(raw_index); - index->ntotal = 1000; + MockVecIndex* mock_index = new MockVecIndex(); + mock_index->ntotal_ = 1000; + engine::Index_ptr index(mock_index); cache::DataObjPtr obj = std::make_shared(index); @@ -117,9 +166,9 @@ TEST(CacheTest, INVALID_TEST) { { LessItemCacheMgr mgr; for(int i = 0; i < 20; i++) { - std::shared_ptr raw_index(faiss::index_factory(2, "IDMap,Flat")); - engine::Index_ptr index = std::make_shared(raw_index); - index->ntotal = 2; + MockVecIndex* mock_index = new MockVecIndex(); + mock_index->ntotal_ = 2; + engine::Index_ptr index(mock_index); cache::DataObjPtr obj = std::make_shared(index); mgr.InsertItem("index_" + std::to_string(i), obj);