Add test cases of Ignore growing (#22901)

Signed-off-by: nico <cheng.yuan@zilliz.com>
This commit is contained in:
NicoYuan1986 2023-03-24 09:33:58 +08:00 committed by GitHub
parent 0e9a4478e3
commit 306d29de26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 5 deletions

View File

@ -1502,13 +1502,19 @@ class TestUpsertValid(TestcaseBase):
data2, float_values2 = cf.gen_default_data_for_upsert(upsert_nb)
# upsert at the same time
def do_upsert():
def do_upsert1():
collection_w.upsert(data=data1)
t = threading.Thread(target=do_upsert, args=())
t.start()
collection_w.upsert(data=data2)
t.join()
def do_upsert2():
collection_w.upsert(data=data2)
t1 = threading.Thread(target=do_upsert1, args=())
t2 = threading.Thread(target=do_upsert2, args=())
t1.start()
t2.start()
t1.join()
t2.join()
# check the result
exp = f"int64 >= 0 && int64 <= {upsert_nb}"

View File

@ -923,6 +923,52 @@ class TestQueryParams(TestcaseBase):
for ids in [res[i][default_int_field_name] for i in range(ct.default_nb)]:
assert ids < 10000
@pytest.mark.tags(CaseLabel.L2)
def test_query_ignore_growing_after_upsert(self):
"""
target: test query ignoring growing segment after upsert
method: 1. create a collection, insert data, create index and load
2. upsert the inserted data
3. query with param ignore_growing=True
expected: query successfully
"""
# 1. create a collection
collection_w = self.init_collection_general(prefix, True)[0]
# 2. insert data again
data = cf.gen_default_data_for_upsert()[0]
collection_w.upsert(data)
# 3. query with param ignore_growing=True
res1 = collection_w.query('int64 >= 0', ignore_growing=True)[0]
res2 = collection_w.query('int64 >= 0')[0]
assert len(res1) == 0
assert len(res2) == ct.default_nb
@pytest.mark.tags(CaseLabel.L2)
@pytest.mark.parametrize("ignore_growing", ct.get_invalid_strs[:8])
def test_query_invalid_ignore_growing_param(self, ignore_growing):
"""
target: test query ignoring growing segment param invalid
method: 1. create a collection, insert data and load
2. insert data again
3. query with ignore_growing type invalid
expected: raise exception
"""
if ignore_growing == 1:
pytest.skip("number is valid")
# 1. create a collection
collection_w = self.init_collection_general(prefix, True)[0]
# 2. insert data again
data = cf.gen_default_dataframe_data(start=10000)
collection_w.insert(data)
# 3. query with param ignore_growing invalid
error = {ct.err_code: 1, ct.err_msg: "parse search growing failed"}
collection_w.query('int64 >= 0', ignore_growing=ignore_growing,
check_task=CheckTasks.err_res, check_items=error)
@pytest.fixture(scope="function", params=[0, 10, 100])
def offset(self, request):
yield request.param

View File

@ -869,6 +869,34 @@ class TestCollectionSearchInvalid(TestcaseBase):
check_items={"err_code": 1,
"err_msg": f"Field {output_fields[-1]} not exist"})
@pytest.mark.tags(CaseLabel.L2)
@pytest.mark.parametrize("ignore_growing", ct.get_invalid_strs[:8])
def test_search_invalid_ignore_growing_param(self, ignore_growing):
"""
target: test search ignoring growing segment
method: 1. create a collection, insert data, create index and load
2. insert data again
3. search with param ignore_growing invalid
expected: raise exception
"""
if ignore_growing == 1:
pytest.skip("number is valid")
# 1. create a collection
collection_w = self.init_collection_general(prefix, True)[0]
# 2. insert data again
data = cf.gen_default_dataframe_data(start=10000)
collection_w.insert(data)
# 3. search with param ignore_growing=True
search_params = {"metric_type": "L2", "params": {"nprobe": 10}, "ignore_growing": ignore_growing}
vector = [[random.random() for _ in range(default_dim)] for _ in range(nq)]
collection_w.search(vector[:default_nq], default_search_field, search_params, default_limit,
default_search_exp,
check_task=CheckTasks.err_res,
check_items={"err_code": 1,
"err_msg": "parse search growing failed"})
@pytest.mark.tags(CaseLabel.L2)
def test_search_param_invalid_travel_timestamp(self, get_invalid_travel_timestamp):
"""