@@ -60,18 +60,19 @@ template <typename index_type_t>
6060class SVSTieredIndexTest : public ::testing::Test {
6161public:
6262 using data_t = typename index_type_t ::data_t ;
63- static const size_t defaultTrainingThreshold = 1024 ;
64- static const size_t defaultUpdateThreshold = 16 ;
63+ static const size_t TestsDefaultTrainingThreshold = 1024 ;
64+ static const size_t TestsDefaultUpdateThreshold = 16 ;
6565
6666protected:
6767 TieredSVSIndex<data_t > *CastToTieredSVS (VecSimIndex *index) {
6868 return reinterpret_cast <TieredSVSIndex<data_t > *>(index);
6969 }
7070
71- TieredIndexParams CreateTieredSVSParams (VecSimParams &svs_params,
72- tieredIndexMock &mock_thread_pool,
73- size_t training_threshold = defaultTrainingThreshold,
74- size_t update_threshold = defaultUpdateThreshold) {
71+ TieredIndexParams
72+ CreateTieredSVSParams (VecSimParams &svs_params, tieredIndexMock &mock_thread_pool,
73+ size_t training_threshold = TestsDefaultTrainingThreshold,
74+ size_t update_threshold = TestsDefaultUpdateThreshold,
75+ size_t update_job_wait_time = SVS_DEFAULT_UPDATE_JOB_WAIT_TIME) {
7576 trainingThreshold = training_threshold;
7677 updateThreshold = update_threshold;
7778 svs_params.algoParams .svsParams .quantBits = index_type_t::get_quant_bits ();
@@ -85,7 +86,8 @@ class SVSTieredIndexTest : public ::testing::Test {
8586 .primaryIndexParams = &svs_params,
8687 .specificParams = {.tieredSVSParams =
8788 TieredSVSParams{.trainingTriggerThreshold = training_threshold,
88- .updateTriggerThreshold = update_threshold}}};
89+ .updateTriggerThreshold = update_threshold,
90+ .updateJobWaitTime = update_job_wait_time}}};
8991 }
9092
9193 TieredSVSIndex<data_t > *CreateTieredSVSIndex (const TieredIndexParams &tiered_params,
@@ -101,11 +103,13 @@ class SVSTieredIndexTest : public ::testing::Test {
101103
102104 TieredSVSIndex<data_t > *
103105 CreateTieredSVSIndex (VecSimParams &svs_params, tieredIndexMock &mock_thread_pool,
104- size_t training_threshold = defaultTrainingThreshold,
105- size_t update_threshold = defaultUpdateThreshold) {
106+ size_t training_threshold = TestsDefaultTrainingThreshold,
107+ size_t update_threshold = TestsDefaultUpdateThreshold,
108+ size_t update_job_wait_time = SVS_DEFAULT_UPDATE_JOB_WAIT_TIME) {
106109 svs_params.algoParams .svsParams .quantBits = index_type_t::get_quant_bits ();
107- TieredIndexParams tiered_params = CreateTieredSVSParams (
108- svs_params, mock_thread_pool, training_threshold, update_threshold);
110+ TieredIndexParams tiered_params =
111+ CreateTieredSVSParams (svs_params, mock_thread_pool, training_threshold,
112+ update_threshold, update_job_wait_time);
109113 return CreateTieredSVSIndex (tiered_params, mock_thread_pool);
110114 }
111115
@@ -128,8 +132,8 @@ class SVSTieredIndexTest : public ::testing::Test {
128132 size_t getUpdateThreshold () const { return updateThreshold; }
129133
130134private:
131- size_t trainingThreshold = defaultTrainingThreshold ;
132- size_t updateThreshold = defaultUpdateThreshold ;
135+ size_t trainingThreshold = TestsDefaultTrainingThreshold ;
136+ size_t updateThreshold = TestsDefaultUpdateThreshold ;
133137};
134138
135139// TEST_DATA_T and TEST_DIST_T are defined in test_utils.h
@@ -2108,6 +2112,30 @@ TYPED_TEST(SVSTieredIndexTestBasic, overwriteVectorAsync) {
21082112 }
21092113}
21102114
2115+ TYPED_TEST (SVSTieredIndexTest, testCreateWithDefaultTieredSVSParams) {
2116+ // Create TieredSVS index instance with a mock queue.
2117+ size_t dim = 4 ;
2118+ SVSParams params = {.type = TypeParam::get_index_type (), .dim = dim, .metric = VecSimMetric_L2};
2119+ VecSimParams svs_params = CreateParams (params);
2120+ auto mock_thread_pool = tieredIndexMock ();
2121+
2122+ // Build with default specificTieredBackendInfo.svsTieredInfo params
2123+ auto *tiered_index = this ->CreateTieredSVSIndex (svs_params, mock_thread_pool, 0 , 0 , 0 );
2124+ ASSERT_INDEX (tiered_index);
2125+
2126+ VecSimIndexDebugInfo info = tiered_index->debugInfo ();
2127+ // Validate tiered svs info fields
2128+ constexpr size_t expected_training_threshold =
2129+ TypeParam::get_quant_bits () == VecSimSvsQuant_NONE ? SVS_VAMANA_DEFAULT_UPDATE_THRESHOLD
2130+ : SVS_VAMANA_DEFAULT_TRAINING_THRESHOLD;
2131+ EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .trainingTriggerThreshold ,
2132+ expected_training_threshold);
2133+ EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .updateTriggerThreshold ,
2134+ SVS_VAMANA_DEFAULT_UPDATE_THRESHOLD);
2135+ EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .updateJobWaitTime ,
2136+ SVS_DEFAULT_UPDATE_JOB_WAIT_TIME);
2137+ }
2138+
21112139TYPED_TEST (SVSTieredIndexTest, testInfo) {
21122140 // Create TieredSVS index instance with a mock queue.
21132141 size_t dim = 4 ;
@@ -2116,7 +2144,7 @@ TYPED_TEST(SVSTieredIndexTest, testInfo) {
21162144 VecSimParams svs_params = CreateParams (params);
21172145 auto mock_thread_pool = tieredIndexMock ();
21182146
2119- auto *tiered_index = this ->CreateTieredSVSIndex (svs_params, mock_thread_pool, 1 , 1 );
2147+ auto *tiered_index = this ->CreateTieredSVSIndex (svs_params, mock_thread_pool, 1 , 1 , 1 );
21202148 ASSERT_INDEX (tiered_index);
21212149 auto allocator = tiered_index->getAllocator ();
21222150
@@ -2145,8 +2173,7 @@ TYPED_TEST(SVSTieredIndexTest, testInfo) {
21452173 // Validate tiered svs info fields
21462174 EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .trainingTriggerThreshold , 1 );
21472175 EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .updateTriggerThreshold , 1 );
2148- EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .updateJobWaitTime ,
2149- SVS_DEFAULT_UPDATE_JOB_WAIT_TIME);
2176+ EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .updateJobWaitTime , 1 );
21502177 EXPECT_EQ (info.tieredInfo .specificTieredBackendInfo .svsTieredInfo .indexUpdateScheduled , false );
21512178
21522179 // Validate that Static info returns the right restricted info as well.
0 commit comments