mirror of https://github.com/milvus-io/milvus.git
[test]Skip new feature in upgrade deploy test cases (#24748)
Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>pull/24765/head
parent
44e5daae3a
commit
bede8f6171
|
@ -115,9 +115,11 @@ class TestcaseBase(Base):
|
||||||
port=cf.param_info.param_port)
|
port=cf.param_info.param_port)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def init_collection_wrap(self, name=None, schema=None, check_task=None, check_items=None, **kwargs):
|
def init_collection_wrap(self, name=None, schema=None, check_task=None, check_items=None,
|
||||||
|
enable_dynamic_field=False, with_json=True, **kwargs):
|
||||||
name = cf.gen_unique_str('coll_') if name is None else name
|
name = cf.gen_unique_str('coll_') if name is None else name
|
||||||
schema = cf.gen_default_collection_schema() if schema is None else schema
|
schema = cf.gen_default_collection_schema(enable_dynamic_field=enable_dynamic_field, with_json=with_json) \
|
||||||
|
if schema is None else schema
|
||||||
if not self.connection_wrap.has_connection(alias=DefaultConfig.DEFAULT_USING)[0]:
|
if not self.connection_wrap.has_connection(alias=DefaultConfig.DEFAULT_USING)[0]:
|
||||||
self._connect()
|
self._connect()
|
||||||
collection_w = ApiCollectionWrapper()
|
collection_w = ApiCollectionWrapper()
|
||||||
|
@ -149,7 +151,8 @@ class TestcaseBase(Base):
|
||||||
def insert_data_general(self, prefix="test", insert_data=False, nb=ct.default_nb,
|
def insert_data_general(self, prefix="test", insert_data=False, nb=ct.default_nb,
|
||||||
partition_num=0, is_binary=False, is_all_data_type=False,
|
partition_num=0, is_binary=False, is_all_data_type=False,
|
||||||
auto_id=False, dim=ct.default_dim,
|
auto_id=False, dim=ct.default_dim,
|
||||||
primary_field=ct.default_int64_field_name, is_flush=True, name=None, **kwargs):
|
primary_field=ct.default_int64_field_name, is_flush=True, name=None,
|
||||||
|
enable_dynamic_field=False, with_json=True, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -162,19 +165,25 @@ class TestcaseBase(Base):
|
||||||
insert_ids = []
|
insert_ids = []
|
||||||
time_stamp = 0
|
time_stamp = 0
|
||||||
# 1 create collection
|
# 1 create collection
|
||||||
default_schema = cf.gen_default_collection_schema(auto_id=auto_id, dim=dim, primary_field=primary_field)
|
default_schema = cf.gen_default_collection_schema(auto_id=auto_id, dim=dim, primary_field=primary_field,
|
||||||
|
enable_dynamic_field=enable_dynamic_field,
|
||||||
|
with_json=with_json)
|
||||||
if is_binary:
|
if is_binary:
|
||||||
default_schema = cf.gen_default_binary_collection_schema(auto_id=auto_id, dim=dim,
|
default_schema = cf.gen_default_binary_collection_schema(auto_id=auto_id, dim=dim,
|
||||||
primary_field=primary_field)
|
primary_field=primary_field)
|
||||||
if is_all_data_type:
|
if is_all_data_type:
|
||||||
default_schema = cf.gen_collection_schema_all_datatype(auto_id=auto_id, dim=dim,
|
default_schema = cf.gen_collection_schema_all_datatype(auto_id=auto_id, dim=dim,
|
||||||
primary_field=primary_field)
|
primary_field=primary_field,
|
||||||
|
enable_dynamic_field=enable_dynamic_field,
|
||||||
|
with_json=with_json)
|
||||||
log.info("insert_data_general: collection creation")
|
log.info("insert_data_general: collection creation")
|
||||||
collection_w = self.init_collection_wrap(name=collection_name, schema=default_schema, **kwargs)
|
collection_w = self.init_collection_wrap(name=collection_name, schema=default_schema, **kwargs)
|
||||||
pre_entities = collection_w.num_entities
|
pre_entities = collection_w.num_entities
|
||||||
if insert_data:
|
if insert_data:
|
||||||
collection_w, vectors, binary_raw_vectors, insert_ids, time_stamp = \
|
collection_w, vectors, binary_raw_vectors, insert_ids, time_stamp = \
|
||||||
cf.insert_data(collection_w, nb, is_binary, is_all_data_type, auto_id=auto_id, dim=dim)
|
cf.insert_data(collection_w, nb, is_binary, is_all_data_type, auto_id=auto_id, dim=dim,
|
||||||
|
enable_dynamic_field=enable_dynamic_field,
|
||||||
|
with_json=with_json)
|
||||||
if is_flush:
|
if is_flush:
|
||||||
collection_w.flush()
|
collection_w.flush()
|
||||||
assert collection_w.num_entities == nb + pre_entities
|
assert collection_w.num_entities == nb + pre_entities
|
||||||
|
|
|
@ -29,7 +29,8 @@ class TestAllCollection(TestcaseBase):
|
||||||
# create
|
# create
|
||||||
name = collection_name if collection_name else cf.gen_unique_str("Checker_")
|
name = collection_name if collection_name else cf.gen_unique_str("Checker_")
|
||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
collection_w = self.init_collection_wrap(name=name, active_trace=True)
|
collection_w = self.init_collection_wrap(name=name, active_trace=True, enable_dynamic_field=False,
|
||||||
|
with_json=False)
|
||||||
tt = time.time() - t0
|
tt = time.time() - t0
|
||||||
assert collection_w.name == name
|
assert collection_w.name == name
|
||||||
# compact collection before getting num_entities
|
# compact collection before getting num_entities
|
||||||
|
@ -42,7 +43,7 @@ class TestAllCollection(TestcaseBase):
|
||||||
|
|
||||||
# insert
|
# insert
|
||||||
insert_batch = 3000
|
insert_batch = 3000
|
||||||
data = cf.gen_default_list_data(start=-insert_batch)
|
data = cf.gen_default_list_data(start=-insert_batch, with_json=False)
|
||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
_, res = collection_w.insert(data)
|
_, res = collection_w.insert(data)
|
||||||
tt = time.time() - t0
|
tt = time.time() - t0
|
||||||
|
@ -97,7 +98,7 @@ class TestAllCollection(TestcaseBase):
|
||||||
collection_w.release()
|
collection_w.release()
|
||||||
|
|
||||||
# insert data
|
# insert data
|
||||||
d = cf.gen_default_list_data()
|
d = cf.gen_default_list_data(with_json=False)
|
||||||
collection_w.insert(d)
|
collection_w.insert(d)
|
||||||
|
|
||||||
# load
|
# load
|
||||||
|
|
|
@ -442,13 +442,16 @@ def gen_default_binary_dataframe_data(nb=ct.default_nb, dim=ct.default_dim, star
|
||||||
return df, binary_raw_values
|
return df, binary_raw_values
|
||||||
|
|
||||||
|
|
||||||
def gen_default_list_data(nb=ct.default_nb, dim=ct.default_dim, start=0):
|
def gen_default_list_data(nb=ct.default_nb, dim=ct.default_dim, start=0, with_json=True):
|
||||||
int_values = [i for i in range(start, start + nb)]
|
int_values = [i for i in range(start, start + nb)]
|
||||||
float_values = [np.float32(i) for i in range(start, start + nb)]
|
float_values = [np.float32(i) for i in range(start, start + nb)]
|
||||||
string_values = [str(i) for i in range(start, start + nb)]
|
string_values = [str(i) for i in range(start, start + nb)]
|
||||||
json_values = [{"number": i, "string": str(i), "bool": bool(i), "list": [j for j in range(0, i)]}
|
json_values = [{"number": i, "string": str(i), "bool": bool(i), "list": [j for j in range(0, i)]}
|
||||||
for i in range(start, start + nb)]
|
for i in range(start, start + nb)]
|
||||||
float_vec_values = gen_vectors(nb, dim)
|
float_vec_values = gen_vectors(nb, dim)
|
||||||
|
if with_json is False:
|
||||||
|
data = [int_values, float_values, string_values, float_vec_values]
|
||||||
|
else:
|
||||||
data = [int_values, float_values, string_values, json_values, float_vec_values]
|
data = [int_values, float_values, string_values, json_values, float_vec_values]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -742,7 +745,7 @@ def gen_normal_string_expressions(field):
|
||||||
return expressions
|
return expressions
|
||||||
|
|
||||||
|
|
||||||
def gen_invaild_string_expressions():
|
def gen_invalid_string_expressions():
|
||||||
expressions = [
|
expressions = [
|
||||||
"varchar in [0, \"1\"]",
|
"varchar in [0, \"1\"]",
|
||||||
"varchar not in [\"0\", 1, 2]"
|
"varchar not in [\"0\", 1, 2]"
|
||||||
|
|
|
@ -29,6 +29,7 @@ prefix = "deploy_test"
|
||||||
|
|
||||||
TIMEOUT = 120
|
TIMEOUT = 120
|
||||||
|
|
||||||
|
|
||||||
class TestActionFirstDeployment(TestDeployBase):
|
class TestActionFirstDeployment(TestDeployBase):
|
||||||
""" Test case of action before reinstall """
|
""" Test case of action before reinstall """
|
||||||
|
|
||||||
|
@ -54,7 +55,9 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
is_binary = False
|
is_binary = False
|
||||||
if "BIN" in name:
|
if "BIN" in name:
|
||||||
is_binary = True
|
is_binary = True
|
||||||
collection_w = self.init_collection_general(insert_data=False, is_binary=is_binary, name=name)[0]
|
collection_w = \
|
||||||
|
self.init_collection_general(insert_data=False, is_binary=is_binary, name=name, enable_dynamic_field=False,
|
||||||
|
with_json=False)[0]
|
||||||
if collection_w.has_index():
|
if collection_w.has_index():
|
||||||
index_names = [index.index_name for index in collection_w.indexes]
|
index_names = [index.index_name for index in collection_w.indexes]
|
||||||
for index_name in index_names:
|
for index_name in index_names:
|
||||||
|
@ -66,7 +69,7 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
@pytest.mark.parametrize("is_deleted", ["is_deleted"])
|
@pytest.mark.parametrize("is_deleted", ["is_deleted"])
|
||||||
@pytest.mark.parametrize("is_string_indexed", ["is_string_indexed", "not_string_indexed"])
|
@pytest.mark.parametrize("is_string_indexed", ["is_string_indexed", "not_string_indexed"])
|
||||||
@pytest.mark.parametrize("segment_status", ["only_growing", "all"])
|
@pytest.mark.parametrize("segment_status", ["only_growing", "all"])
|
||||||
@pytest.mark.parametrize("index_type", ["HNSW", "BIN_IVF_FLAT"]) #"IVF_FLAT", "HNSW", "BIN_IVF_FLAT"
|
@pytest.mark.parametrize("index_type", ["HNSW", "BIN_IVF_FLAT"])
|
||||||
def test_task_all(self, index_type, is_compacted,
|
def test_task_all(self, index_type, is_compacted,
|
||||||
segment_status, is_string_indexed, replica_number, is_deleted, data_size):
|
segment_status, is_string_indexed, replica_number, is_deleted, data_size):
|
||||||
"""
|
"""
|
||||||
|
@ -104,7 +107,9 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
|
|
||||||
# init collection and insert with small size data without flush to get growing segment
|
# init collection and insert with small size data without flush to get growing segment
|
||||||
collection_w = self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
collection_w = self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
||||||
is_flush=False, is_index=False, name=name)[0]
|
is_flush=False, is_index=False, name=name,
|
||||||
|
enable_dynamic_field=False,
|
||||||
|
with_json=False)[0]
|
||||||
# params for creating index
|
# params for creating index
|
||||||
if is_binary:
|
if is_binary:
|
||||||
default_index_field = ct.default_binary_vec_field_name
|
default_index_field = ct.default_binary_vec_field_name
|
||||||
|
@ -155,7 +160,8 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
# insert with flush multiple times to generate multiple sealed segment
|
# insert with flush multiple times to generate multiple sealed segment
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=data_size,
|
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=data_size,
|
||||||
is_flush=False, is_index=False, name=name)
|
is_flush=False, is_index=False, name=name, enable_dynamic_field=False,
|
||||||
|
with_json=False)
|
||||||
# at this step, all segment are sealed
|
# at this step, all segment are sealed
|
||||||
if pymilvus_version >= "2.2.0":
|
if pymilvus_version >= "2.2.0":
|
||||||
collection_w.flush()
|
collection_w.flush()
|
||||||
|
@ -175,7 +181,8 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
# get growing segment before reload
|
# get growing segment before reload
|
||||||
if segment_status == "all":
|
if segment_status == "all":
|
||||||
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
||||||
is_flush=False, is_index=False, name=name)
|
is_flush=False, is_index=False, name=name, enable_dynamic_field=False,
|
||||||
|
with_json=False)
|
||||||
# reload after flush and creating index
|
# reload after flush and creating index
|
||||||
if replica_number > 0:
|
if replica_number > 0:
|
||||||
collection_w.release()
|
collection_w.release()
|
||||||
|
@ -185,7 +192,8 @@ class TestActionFirstDeployment(TestDeployBase):
|
||||||
# insert data to get growing segment after reload
|
# insert data to get growing segment after reload
|
||||||
if segment_status == "all":
|
if segment_status == "all":
|
||||||
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
self.init_collection_general(insert_data=True, is_binary=is_binary, nb=3000,
|
||||||
is_flush=False, is_index=False, name=name)
|
is_flush=False, is_index=False, name=name, enable_dynamic_field=False,
|
||||||
|
with_json=False)
|
||||||
|
|
||||||
# search and query for sealed and growing segment
|
# search and query for sealed and growing segment
|
||||||
if replica_number > 0:
|
if replica_number > 0:
|
||||||
|
|
|
@ -190,7 +190,8 @@ class TestActionSecondDeployment(TestDeployBase):
|
||||||
# insert data and flush
|
# insert data and flush
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
self.insert_data_general(insert_data=True, is_binary=is_binary, nb=data_size,
|
self.insert_data_general(insert_data=True, is_binary=is_binary, nb=data_size,
|
||||||
is_flush=False, is_index=True, name=name)
|
is_flush=False, is_index=True, name=name,
|
||||||
|
enable_dynamic_field=False, with_json=False)
|
||||||
if pymilvus_version >= "2.2.0":
|
if pymilvus_version >= "2.2.0":
|
||||||
collection_w.flush()
|
collection_w.flush()
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1631,7 +1631,7 @@ class TestQueryString(TestcaseBase):
|
||||||
check_task=CheckTasks.check_query_results, check_items={exp_res: res})
|
check_task=CheckTasks.check_query_results, check_items={exp_res: res})
|
||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L1)
|
@pytest.mark.tags(CaseLabel.L1)
|
||||||
@pytest.mark.parametrize("expression", cf.gen_invaild_string_expressions())
|
@pytest.mark.parametrize("expression", cf.gen_invalid_string_expressions())
|
||||||
def test_query_with_invalid_string_expr(self, expression):
|
def test_query_with_invalid_string_expr(self, expression):
|
||||||
"""
|
"""
|
||||||
target: test query data
|
target: test query data
|
||||||
|
@ -1674,10 +1674,10 @@ class TestQueryString(TestcaseBase):
|
||||||
check_task=CheckTasks.check_query_results, check_items={exp_res: res})
|
check_task=CheckTasks.check_query_results, check_items={exp_res: res})
|
||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L1)
|
@pytest.mark.tags(CaseLabel.L1)
|
||||||
def test_query_string_with_invaild_prefix_expr(self):
|
def test_query_string_with_invalid_prefix_expr(self):
|
||||||
"""
|
"""
|
||||||
target: test query with invalid prefix string expression
|
target: test query with invalid prefix string expression
|
||||||
method: specify string primary field, use invaild prefix string expr
|
method: specify string primary field, use invalid prefix string expr
|
||||||
expected: raise error
|
expected: raise error
|
||||||
"""
|
"""
|
||||||
collection_w = self.init_collection_general(prefix, insert_data=True)[0]
|
collection_w = self.init_collection_general(prefix, insert_data=True)[0]
|
||||||
|
|
Loading…
Reference in New Issue