Skip to content

Commit d14e185

Browse files
committed
Adding coexistence tests for bhive and composite vector indexes
Change-Id: I540765f6742c930be76e8f560427328a169b29de Reviewed-on: https://review.couchbase.org/c/testrunner/+/226413 Reviewed-by: <pavan.pb@couchbase.com> Tested-by: <yash.dodderi@couchbase.com>
1 parent ffdb14e commit d14e185

4 files changed

Lines changed: 286 additions & 12 deletions

File tree

conf/gsi/bhive-index.conf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ gsi.composite_vector_index.CompositeVectorIndex:
5050
test_crash_indexer_data_nodes,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,use_magma_loader=True,vector_backup_filename=backup_zips/200k_default_scope_named_scope.zip,s3_bucket=gsi-vector-car-backups,quantization_algo_description_vector=PQ32x8,bhive_index=True,num_index_replica=1,kill_parallel=False,num_of_docs_per_collection=100000,GROUP=P1
5151
test_recovery_post_deleting_recovery_files,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,use_magma_loader=True,vector_backup_filename=backup_zips/200k_default_scope_named_scope.zip,s3_bucket=gsi-vector-car-backups,quantization_algo_description_vector=PQ32x8,bhive_index=True,num_index_replica=1,num_of_docs_per_collection=100000,GROUP=P1
5252

53-
53+
# Bhive and composite_vector_index coexistence tests
54+
test_batch_index_create_drop_bhive_composite_combo,init_nodes=False,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,num_of_docs_per_collection=100000,use_magma_loader=True,num_index_replica=1,index_quota_percent=75,index_category_dropped=composite_vector,num_indexes_batch=3,GROUP=P3
55+
test_batch_index_create_drop_bhive_composite_combo,init_nodes=False,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,num_of_docs_per_collection=100000,use_magma_loader=True,num_index_replica=1,index_quota_percent=75,index_category_dropped=bhive_vector,num_indexes_batch=3,GROUP=P3
56+
test_skewed_bhive_composite_co_existence_test,init_nodes=False,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,num_of_docs_per_collection=100000,use_magma_loader=True,num_index_replica=1,index_quota_percent=75,num_indexes_batch=3,bhive_index=True,GROUP=P3
57+
test_skewed_bhive_composite_co_existence_test,init_nodes=False,nodes_init=3,services_init=kv:n1ql-index-index,default_bucket=False,skip_cleanup=True,skip_load=True,create_primary_index=False,json_template=Cars,num_of_docs_per_collection=100000,use_magma_loader=True,num_index_replica=1,index_quota_percent=75,num_indexes_batch=3,bhive_index=False,GROUP=P3
5458

5559
#mixed dimension test
5660
test_mixed_dimension_data,init_nodes=False,nodes_init=2,services_init=kv:n1ql-index,default_bucket=False,skip_cleanup=True,skip_load=True,num_of_docs_per_collection=100000,json_template=Cars,bhive_index=True,GROUP=P2

pytests/gsi/base_gsi.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3212,6 +3212,29 @@ def get_all_array_index_names(self):
32123212
array_indexes.append(index['indexName'])
32133213
return array_indexes
32143214

3215+
def get_all_primary_index_names(self):
3216+
"""Returns a list of all primary indexes in the cluster
3217+
"""
3218+
primary_index = []
3219+
index_metadata = self.index_rest.get_indexer_metadata()['status']
3220+
for index in index_metadata:
3221+
# Check if index definition contains primary indexing syntax like PRIMARY
3222+
if 'definition' in index and ('isPrimary' in index):
3223+
primary_index.append(index['indexName'])
3224+
return primary_index
3225+
3226+
def get_all_bhive_index_names(self):
3227+
"""Returns a list of all bhive indexes in the cluster
3228+
"""
3229+
bhive_index = []
3230+
index_metadata = self.index_rest.get_indexer_metadata()['status']
3231+
for index in index_metadata:
3232+
# Check if index definition contains bhive indexing syntax like VECTOR
3233+
# TODO to make tweak to validation once https://jira.issues.couchbase.com/browse/MB-66285 is fixed
3234+
if 'definition' in index and ('VECTOR' in index['definition'][:14]):
3235+
bhive_index.append(index['indexName'])
3236+
return bhive_index
3237+
32153238
def get_storage_stats_map(self, node):
32163239
"""
32173240
Fetches index storage stats from /stats/storage endpoint
@@ -3245,6 +3268,8 @@ def backstore_mainstore_check(self):
32453268
idx_node_list = self.get_nodes_from_services_map(service_type="index", get_all_nodes=True)
32463269
# Exclude all array indexes
32473270
ignore_count_index_list = self.get_all_array_index_names()
3271+
primary_index_list = self.get_all_primary_index_names()
3272+
bhive_index_list = self.get_all_bhive_index_names()
32483273
errors = []
32493274
for node in idx_node_list:
32503275
self.log.info(f"Checking stats for node {node}")
@@ -3253,16 +3278,22 @@ def backstore_mainstore_check(self):
32533278
for index in list(content.values()):
32543279
for index_name, stats in index.items():
32553280
self.log.info(f"checking for index {index_name}")
3281+
if index_name in primary_index_list:
3282+
continue
32563283
if index_name in ignore_count_index_list or "BackStore" not in stats:
32573284
continue
3258-
if stats["MainStore"]["item_count"] != stats["BackStore"]["item_count"]:
3285+
if index in bhive_index_list:
3286+
key = "item_count"
3287+
else:
3288+
key = "items_count"
3289+
if stats["MainStore"][key] != stats["BackStore"][key]:
32593290
self.log.info(f"Index map as seen during backstore_mainstore_check is {stats}")
32603291
self.log.error(f"Item count mismatch in backstore and mainstore for {index_name}")
32613292
errors_obj = dict()
32623293
errors_obj["type"] = "mismatch in backstore and mainstore"
32633294
errors_obj["index_name"] = index_name
3264-
errors_obj["mainstore_count"] = stats["MainStore"]["item_count"]
3265-
errors_obj["backstore_count"] = stats["BackStore"]["item_count"]
3295+
errors_obj["mainstore_count"] = stats["MainStore"][key]
3296+
errors_obj["backstore_count"] = stats["BackStore"][key]
32663297
errors.append(errors_obj)
32673298
if len(errors) > 0:
32683299
return errors

0 commit comments

Comments
 (0)