From d90f9cab55a2a072d94ea13bcc9818a069affef6 Mon Sep 17 00:00:00 2001 From: zhuwenxing Date: Mon, 24 Oct 2022 17:55:30 +0800 Subject: [PATCH] [test]Update deploy test testcases (#20014) Signed-off-by: zhuwenxing Signed-off-by: zhuwenxing --- tests/python_client/base/client_base.py | 53 ++++++++++++++++--- .../python_client/base/collection_wrapper.py | 1 - .../deploy/scripts/action_after_upgrade.py | 1 + .../testcases/test_action_first_deployment.py | 5 +- .../test_action_second_deployment.py | 37 +++++++------ 5 files changed, 73 insertions(+), 24 deletions(-) diff --git a/tests/python_client/base/client_base.py b/tests/python_client/base/client_base.py index 9f75765602..f69abba14a 100644 --- a/tests/python_client/base/client_base.py +++ b/tests/python_client/base/client_base.py @@ -89,11 +89,14 @@ class TestcaseBase(Base): def _connect(self): """ Add a connection and create the connect """ if cf.param_info.param_user and cf.param_info.param_password: - res, is_succ = self.connection_wrap.connect(alias=DefaultConfig.DEFAULT_USING, host=cf.param_info.param_host, + res, is_succ = self.connection_wrap.connect(alias=DefaultConfig.DEFAULT_USING, + host=cf.param_info.param_host, port=cf.param_info.param_port, user=cf.param_info.param_user, - password=cf.param_info.param_password, secure=cf.param_info.param_secure) + password=cf.param_info.param_password, + secure=cf.param_info.param_secure) else: - res, is_succ = self.connection_wrap.connect(alias=DefaultConfig.DEFAULT_USING, host=cf.param_info.param_host, + res, is_succ = self.connection_wrap.connect(alias=DefaultConfig.DEFAULT_USING, + host=cf.param_info.param_host, port=cf.param_info.param_port) return res @@ -103,7 +106,8 @@ class TestcaseBase(Base): if not self.connection_wrap.has_connection(alias=DefaultConfig.DEFAULT_USING)[0]: self._connect() collection_w = ApiCollectionWrapper() - collection_w.init_collection(name=name, schema=schema, shards_num=shards_num, check_task=check_task, check_items=check_items, **kwargs) + collection_w.init_collection(name=name, schema=schema, shards_num=shards_num, check_task=check_task, + check_items=check_items, **kwargs) self.collection_object_list.append(collection_w) return collection_w @@ -127,6 +131,41 @@ class TestcaseBase(Base): **kwargs) return partition_wrap + 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, + auto_id=False, dim=ct.default_dim, + primary_field=ct.default_int64_field_name, is_flush=True, name=None, **kwargs): + """ + + """ + self._connect() + collection_name = cf.gen_unique_str(prefix) + if name is not None: + collection_name = name + vectors = [] + binary_raw_vectors = [] + insert_ids = [] + time_stamp = 0 + # 1 create collection + default_schema = cf.gen_default_collection_schema(auto_id=auto_id, dim=dim, primary_field=primary_field) + if is_binary: + default_schema = cf.gen_default_binary_collection_schema(auto_id=auto_id, dim=dim, + primary_field=primary_field) + if is_all_data_type: + default_schema = cf.gen_collection_schema_all_datatype(auto_id=auto_id, dim=dim, + primary_field=primary_field) + log.info("init_collection_general: collection creation") + collection_w = self.init_collection_wrap(name=collection_name, schema=default_schema, **kwargs) + pre_entities = collection_w.num_entities + if insert_data: + 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) + if is_flush: + collection_w.flush() + assert collection_w.num_entities == nb + pre_entities + + return collection_w, vectors, binary_raw_vectors, insert_ids, time_stamp + def init_collection_general(self, prefix="test", insert_data=False, nb=ct.default_nb, partition_num=0, is_binary=False, is_all_data_type=False, auto_id=False, dim=ct.default_dim, is_index=False, @@ -152,9 +191,11 @@ class TestcaseBase(Base): # 1 create collection default_schema = cf.gen_default_collection_schema(auto_id=auto_id, dim=dim, primary_field=primary_field) if is_binary: - default_schema = cf.gen_default_binary_collection_schema(auto_id=auto_id, dim=dim, primary_field=primary_field) + default_schema = cf.gen_default_binary_collection_schema(auto_id=auto_id, dim=dim, + primary_field=primary_field) if is_all_data_type: - default_schema = cf.gen_collection_schema_all_datatype(auto_id=auto_id, dim=dim, primary_field=primary_field) + default_schema = cf.gen_collection_schema_all_datatype(auto_id=auto_id, dim=dim, + primary_field=primary_field) log.info("init_collection_general: collection creation") collection_w = self.init_collection_wrap(name=collection_name, schema=default_schema, **kwargs) # 2 add extra partitions if specified (default is 1 partition named "_default") diff --git a/tests/python_client/base/collection_wrapper.py b/tests/python_client/base/collection_wrapper.py index 2a98964fe2..e3881597ed 100644 --- a/tests/python_client/base/collection_wrapper.py +++ b/tests/python_client/base/collection_wrapper.py @@ -238,7 +238,6 @@ class ApiCollectionWrapper: 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.create_index, field_name, index_params], **kwargs) check_result = ResponseChecker(res, func_name, check_task, check_items, check, diff --git a/tests/python_client/deploy/scripts/action_after_upgrade.py b/tests/python_client/deploy/scripts/action_after_upgrade.py index 0d901463e1..86949fb63f 100644 --- a/tests/python_client/deploy/scripts/action_after_upgrade.py +++ b/tests/python_client/deploy/scripts/action_after_upgrade.py @@ -16,6 +16,7 @@ def task_1(data_size, host): connections.connect(host=host, port=19530, timeout=60) col_list = get_collections(prefix, check=True) assert len(col_list) == len(all_index_types) + create_index(prefix) load_and_search(prefix) create_collections_and_insert_data(prefix, data_size) create_index(prefix) diff --git a/tests/python_client/deploy/testcases/test_action_first_deployment.py b/tests/python_client/deploy/testcases/test_action_first_deployment.py index 1391d687d6..a6f7dbe9a3 100644 --- a/tests/python_client/deploy/testcases/test_action_first_deployment.py +++ b/tests/python_client/deploy/testcases/test_action_first_deployment.py @@ -52,7 +52,10 @@ class TestActionFirstDeployment(TestDeployBase): is_binary = False if "BIN" in name: is_binary = True - 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)[0] + if collection_w.has_index(): + collection_w.drop_index() + @pytest.mark.tags(CaseLabel.L3) diff --git a/tests/python_client/deploy/testcases/test_action_second_deployment.py b/tests/python_client/deploy/testcases/test_action_second_deployment.py index d6f30d2618..2d38a2e20d 100644 --- a/tests/python_client/deploy/testcases/test_action_second_deployment.py +++ b/tests/python_client/deploy/testcases/test_action_second_deployment.py @@ -41,6 +41,21 @@ class TestActionSecondDeployment(TestDeployBase): method.__name__) log.info("skip drop collection") + def create_index(self, collection_w, default_index_field, default_index_param): + index_field_map = dict([(index.field_name, index.index_name) for index in collection_w.indexes]) + index_infos = [index.to_dict() for index in collection_w.indexes] + log.info(index_infos) + # log.info(f"{default_index_field:} {default_index_param:}") + if len(index_infos) > 0: + log.info( + f"current index param is {index_infos[0]['index_param']}, passed in param is {default_index_param}") + log.info( + f"current index name is {index_infos[0]['index_name']}, passed in param is {index_field_map.get(default_index_field)}") + collection_w.create_index(default_index_field, default_index_param, + index_name=index_field_map.get(default_index_field, gen_unique_str("test"))) + collection_w.create_index(default_string_field_name, {}, + index_name=index_field_map.get(default_string_field_name, gen_unique_str("test"))) + @pytest.mark.tags(CaseLabel.L3) def test_check(self, all_collection_name, data_size): """ @@ -93,11 +108,7 @@ class TestActionSecondDeployment(TestDeployBase): # load if not loaded if replicas_loaded == 0: default_index_param = gen_index_param(vector_index_type) - collection_w.create_index(default_index_field, default_index_param, - index_name=index_field_map[default_index_field]) - collection_w.create_index(default_string_field_name, {}, - index_name=index_field_map[default_string_field_name]) - + self.create_index(collection_w, default_index_field, default_index_param) collection_w.load() # search and query @@ -148,8 +159,8 @@ class TestActionSecondDeployment(TestDeployBase): # insert data and flush for i in range(2): - self.init_collection_general(insert_data=True, is_binary=is_binary, nb=data_size, - is_flush=False, is_index=True, name=name) + self.insert_data_general(insert_data=True, is_binary=is_binary, nb=data_size, + is_flush=False, is_index=True, name=name) if pymilvus_version >= "2.2.0": collection_w.flush() else: @@ -175,12 +186,8 @@ class TestActionSecondDeployment(TestDeployBase): for index_name in index_names: collection_w.release() collection_w.drop_index(index_name=index_name) - default_index_param = gen_index_param(vector_index_type) - collection_w.create_index(default_index_field, default_index_param, - index_name=index_field_map[default_index_field]) - collection_w.create_index(default_string_field_name, {}, - index_name=index_field_map[default_string_field_name]) + self.create_index(collection_w, default_index_field, default_index_param) collection_w.load() collection_w.search(vectors_to_search[:default_nq], default_search_field, @@ -193,11 +200,9 @@ class TestActionSecondDeployment(TestDeployBase): collection_w.query(default_term_expr, output_fields=[ct.default_int64_field_name], check_task=CheckTasks.check_query_not_empty) - # create index + # create index default_index_param = gen_index_param(vector_index_type) - collection_w.create_index(default_index_field, default_index_param, - index_name=index_field_map[default_index_field]) - collection_w.create_index(default_string_field_name, {}, index_name=index_field_map[default_string_field_name]) + self.create_index(collection_w, default_index_field, default_index_param) # search and query collection_w.search(vectors_to_search[:default_nq], default_search_field,