mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-11-30 19:08:30 +08:00
[test] Update some index related cases (#19031)
Signed-off-by: ThreadDao <yufen.zong@zilliz.com> Signed-off-by: ThreadDao <yufen.zong@zilliz.com>
This commit is contained in:
parent
2bafdf8c53
commit
495b214dd0
@ -16,6 +16,7 @@ from common.common_func import param_info
|
||||
TIMEOUT = 20
|
||||
INDEX_NAME = "_default_idx"
|
||||
|
||||
|
||||
# keep small timeout for stability tests
|
||||
# TIMEOUT = 5
|
||||
|
||||
@ -26,7 +27,8 @@ class ApiCollectionWrapper:
|
||||
def __init__(self, active_trace=False):
|
||||
self.active_trace = active_trace
|
||||
|
||||
def init_collection(self, name, schema=None, using="default", shards_num=2, check_task=None, check_items=None, active_trace=False, **kwargs):
|
||||
def init_collection(self, name, schema=None, using="default", shards_num=2, check_task=None, check_items=None,
|
||||
active_trace=False, **kwargs):
|
||||
self.active_trace = active_trace
|
||||
consistency_level = kwargs.get("consistency_level", CONSISTENCY_STRONG)
|
||||
kwargs.update({"consistency_level": consistency_level})
|
||||
@ -92,7 +94,7 @@ class ApiCollectionWrapper:
|
||||
def load(self, partition_names=None, replica_number=NaN, timeout=None, check_task=None, check_items=None, **kwargs):
|
||||
timeout = TIMEOUT if timeout is None else timeout
|
||||
replica_number = param_info.param_replica_num if replica_number is NaN else replica_number
|
||||
|
||||
|
||||
func_name = sys._getframe().f_code.co_name
|
||||
res, check = api_request([self.collection.load, partition_names, replica_number, timeout], **kwargs)
|
||||
check_result = ResponseChecker(res, func_name, check_task, check_items, check,
|
||||
@ -233,8 +235,8 @@ class ApiCollectionWrapper:
|
||||
@trace()
|
||||
def create_index(self, field_name, index_params, index_name=None, check_task=None, check_items=None, **kwargs):
|
||||
timeout = kwargs.get("timeout", TIMEOUT * 2)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
kwargs.update({"timeout": timeout, "index_name": index_name})
|
||||
|
||||
func_name = sys._getframe().f_code.co_name
|
||||
@ -245,8 +247,8 @@ class ApiCollectionWrapper:
|
||||
|
||||
@trace()
|
||||
def has_index(self, index_name=None, check_task=None, check_items=None, **kwargs):
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
kwargs.update({"index_name": index_name})
|
||||
|
||||
func_name = sys._getframe().f_code.co_name
|
||||
@ -257,10 +259,10 @@ class ApiCollectionWrapper:
|
||||
@trace()
|
||||
def drop_index(self, index_name=None, check_task=None, check_items=None, **kwargs):
|
||||
timeout = kwargs.get("timeout", TIMEOUT)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
kwargs.update({"timeout": timeout, "index_name": index_name})
|
||||
|
||||
|
||||
func_name = sys._getframe().f_code.co_name
|
||||
res, check = api_request([self.collection.drop_index], **kwargs)
|
||||
check_result = ResponseChecker(res, func_name, check_task, check_items, check, **kwargs).run()
|
||||
|
@ -5,20 +5,20 @@ sys.path.append("..")
|
||||
from check.func_check import ResponseChecker
|
||||
from utils.api_request import api_request
|
||||
|
||||
|
||||
|
||||
TIMEOUT = 20
|
||||
INDEX_NAME = "_default_idx"
|
||||
|
||||
|
||||
class ApiIndexWrapper:
|
||||
index = None
|
||||
|
||||
def init_index(self, collection, field_name, index_params, index_name=None, check_task=None, check_items=None, **kwargs):
|
||||
def init_index(self, collection, field_name, index_params, index_name=None, check_task=None, check_items=None,
|
||||
**kwargs):
|
||||
timeout = kwargs.get("timeout", TIMEOUT * 2)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
kwargs.update({"timeout": timeout, "index_name": index_name})
|
||||
|
||||
|
||||
""" In order to distinguish the same name of index """
|
||||
func_name = sys._getframe().f_code.co_name
|
||||
res, is_succ = api_request([Index, collection, field_name, index_params], **kwargs)
|
||||
@ -28,9 +28,9 @@ class ApiIndexWrapper:
|
||||
index_params=index_params, **kwargs).run()
|
||||
return res, check_result
|
||||
|
||||
def drop(self, index_name=None ,check_task=None, check_items=None, **kwargs):
|
||||
def drop(self, index_name=None, check_task=None, check_items=None, **kwargs):
|
||||
timeout = kwargs.get("timeout", TIMEOUT)
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = INDEX_NAME if index_name is None else index_name
|
||||
index_name = kwargs.get("index_name", index_name)
|
||||
kwargs.update({"timeout": timeout, "index_name": index_name})
|
||||
|
||||
@ -49,4 +49,4 @@ class ApiIndexWrapper:
|
||||
|
||||
@property
|
||||
def field_name(self):
|
||||
return self.index.field_name
|
||||
return self.index.field_name
|
||||
|
@ -987,17 +987,17 @@ class TestNewIndexBase(TestcaseBase):
|
||||
"""
|
||||
collection_w = self.init_collection_wrap(cf.gen_unique_str(prefix))
|
||||
nums = 20
|
||||
tmp_nb = 5000
|
||||
for i in range (nums) :
|
||||
tmp_nb = 5000
|
||||
for i in range(nums):
|
||||
df = cf.gen_default_dataframe_data(nb=tmp_nb, start=i * tmp_nb)
|
||||
insert_res, _ = collection_w.insert(df)
|
||||
assert collection_w.num_entities ==(i+1) * tmp_nb
|
||||
insert_res, _ = collection_w.insert(df)
|
||||
assert collection_w.num_entities == (i + 1) * tmp_nb
|
||||
collection_w.create_index(ct.default_float_vec_field_name, default_index_params)
|
||||
collection_w.load()
|
||||
vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)]
|
||||
search_res, _ = collection_w.search(vectors, default_search_field, default_search_params, default_limit)
|
||||
assert len(search_res[0]) == ct.default_limit
|
||||
|
||||
|
||||
|
||||
class TestNewIndexBinary(TestcaseBase):
|
||||
|
||||
@ -1229,9 +1229,18 @@ class TestNewIndexAsync(TestcaseBase):
|
||||
collection_w.insert(data=data)
|
||||
res, _ = collection_w.create_index(ct.default_float_vec_field_name, default_index_params,
|
||||
index_name=ct.default_index_name, _async=_async)
|
||||
|
||||
# load and search
|
||||
collection_w.load()
|
||||
vectors_s = [[random.random() for _ in range(ct.default_dim)] for _ in range(ct.default_nq)]
|
||||
search_res, _ = collection_w.search(vectors_s[:ct.default_nq], ct.default_float_vec_field_name,
|
||||
ct.default_search_params, ct.default_limit)
|
||||
assert len(search_res) == ct.default_nq
|
||||
assert len(search_res[0]) == ct.default_limit
|
||||
|
||||
if _async:
|
||||
res.done()
|
||||
assert len(collection_w.indexes) == 1
|
||||
assert collection_w.indexes[0].params == default_index_params
|
||||
collection_w.drop_index(index_name=ct.default_index_name)
|
||||
assert len(collection_w.indexes) == 0
|
||||
|
||||
|
@ -1725,6 +1725,14 @@ class TestUtilityAdvanced(TestcaseBase):
|
||||
|
||||
@pytest.mark.tags(CaseLabel.L1)
|
||||
def test_handoff_query_search(self):
|
||||
"""
|
||||
target: test query search after handoff
|
||||
method: 1.load collection
|
||||
2.insert, query and search
|
||||
3.flush collection and triggere handoff
|
||||
4. search with handoff indexed segments
|
||||
expected: Search ids before and after handoff are different, because search from growing and search from index
|
||||
"""
|
||||
collection_w = self.init_collection_wrap(name=cf.gen_unique_str(prefix), shards_num=1)
|
||||
collection_w.create_index(default_field_name, default_index_params)
|
||||
collection_w.load()
|
||||
@ -1743,7 +1751,7 @@ class TestUtilityAdvanced(TestcaseBase):
|
||||
|
||||
start = time.time()
|
||||
while True:
|
||||
time.sleep(0.5)
|
||||
time.sleep(2)
|
||||
segment_infos, _ = self.utility_wrap.get_query_segment_info(collection_w.name)
|
||||
# handoff done
|
||||
if len(segment_infos) == 1 and segment_infos[0].state == SegmentState.Sealed:
|
||||
@ -1758,9 +1766,9 @@ class TestUtilityAdvanced(TestcaseBase):
|
||||
ct.default_float_vec_field_name,
|
||||
ct.default_search_params, ct.default_limit)
|
||||
# the ids between twice search is different because of index building
|
||||
log.debug(search_res_before[0].ids)
|
||||
log.debug(search_res_after[0].ids)
|
||||
# assert search_res_before[0].ids != search_res_after[0].ids
|
||||
# log.debug(search_res_before[0].ids)
|
||||
# log.debug(search_res_after[0].ids)
|
||||
assert search_res_before[0].ids != search_res_after[0].ids
|
||||
|
||||
# assert search result includes the nq-vector before or after handoff
|
||||
assert search_res_after[0].ids[0] == 0
|
||||
|
Loading…
Reference in New Issue
Block a user