From 4aefdaeabeb36e1c314bf89c494178dff1a3a4eb Mon Sep 17 00:00:00 2001 From: binbin <83755740+binbinlv@users.noreply.github.com> Date: Fri, 4 Jun 2021 14:23:35 +0800 Subject: [PATCH] [skip ci] interface name changed. (#5595) Signed-off-by: Binbin Lv --- .../python_client/testcases/test_search.py | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/tests20/python_client/testcases/test_search.py b/tests20/python_client/testcases/test_search.py index 42e237f8fc..6033dc8506 100644 --- a/tests20/python_client/testcases/test_search.py +++ b/tests20/python_client/testcases/test_search.py @@ -22,7 +22,7 @@ epsilon = ct.epsilon CaseLabel = ct.CaseLabel class TestCollectionSearch(ApiReq): - """ Test case of search interface """ + """ Test case of collection search interface """ def init_data(self, insert_data=False, nb=3000, partition_num=0, multiple=False, is_binary=False): ''' @@ -41,13 +41,15 @@ class TestCollectionSearch(ApiReq): default_schema = cf.gen_default_collection_schema() else: default_schema = cf.gen_default_binary_collection_schema() - collection, _ = self.collection.collection_init(default_collection_name, data=None, schema=default_schema) + collection, _ = self.collection_wrap.collection_init(default_collection_name, + data=None, schema=default_schema) # 2 add extra partition if specified (default is 1 partition named "_default") if partition_num > 0: log.info("init_data: creating partitions") for i in range(partition_num): partition_name = "search_partition_" + str(i) - collection.create_partition(partition_name=partition_name, description="search partition") + collection.create_partition(partition_name=partition_name, + description="search partition") par = collection.partitions assert len(par) == (partition_num + 1) log.info("init_data: created partitions %s" % par) @@ -55,18 +57,21 @@ class TestCollectionSearch(ApiReq): if insert_data: vectors = [] raw_vectors = [] - log.info("init_data: inserting default data into collection %s (num_entities: %s)" % (collection.name, nb)) + log.info("init_data: inserting default data into collection %s (num_entities: %s)" + % (collection.name, nb)) if partition_num > 0: num = partition_num + 1 for i in range(num): if not is_binary: - vectors_num = [[random.random() for _ in range(default_dim)] for _ in range(nb // num)] + vectors_num = [[random.random() for _ in range(default_dim)] + for _ in range(nb // num)] vectors += vectors_num collection.insert( [[i for i in range(nb // num)], [np.float32(i) for i in range(nb // num)], vectors_num], par[i].name) else: - default_binary_data, binary_raw_data = cf.gen_default_binary_dataframe_data(nb // num) + default_binary_data, binary_raw_data = \ + cf.gen_default_binary_dataframe_data(nb // num) collection.insert(default_binary_data, par[i].name) vectors += default_binary_data raw_vectors += binary_raw_data @@ -81,7 +86,8 @@ class TestCollectionSearch(ApiReq): collection.load() assert collection.is_empty == False assert collection.num_entities == nb - log.info("init_data: inserted default data into collection %s (num_entities: %s)" % (collection.name, collection.num_entities)) + log.info("init_data: inserted default data into collection %s (num_entities: %s)" + % (collection.name, collection.num_entities)) if not is_binary: return collection, vectors else: @@ -116,14 +122,14 @@ class TestCollectionSearch(ApiReq): self._connect() # 2. delete all the collections test search cases created before log.info("clear_env: clearing env") - res_list, _ = self.utility.list_collections() + res_list, _ = self.utility_wrap.list_collections() count = 0 for res in res_list: - collection = self.collection.collection_init(name=res) + collection, _ = self.collection_wrap.collection_init(name=res) if "search_collection" in res: self.clear_data(collection) count = count + 1 - res_list_new, _ = self.utility.list_collections() + res_list_new, _ = self.utility_wrap.list_collections() for res in res_list_new: assert not ("search_collection" in res) log.info("clear_env: cleared env (deleted %s search collections)" % count) @@ -155,7 +161,7 @@ class TestCollectionSearch(ApiReq): log.info("test_search_no_connection: searched collection %s" % collection.name) # 3. remove connection log.info("test_search_no_connection: removing connection") - self.connection.remove_connection(alias='default') + self.connection_wrap.remove_connection(alias='default') log.info("test_search_no_connection: removed connection") # 4. search without connection log.info("test_search_no_connection: searching without connection") @@ -194,7 +200,8 @@ class TestCollectionSearch(ApiReq): log.info("test_search_with_empty_collection: Searching empty collection %s" % collection.name) vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)] with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], "float_vector", default_search_params, default_limit, default_search_exp) + collection.search(vectors[:default_nq], "float_vector", default_search_params, default_limit, + default_search_exp) assert "collection hasn't been loaded or has been released" in str(e.value) log.info("test_search_with_empty_collection: test PASS with expected assertion: %s" % e.value) @@ -233,7 +240,8 @@ class TestCollectionSearch(ApiReq): wrong_dim = 129 vectors = [[random.random() for _ in range(wrong_dim)] for _ in range(default_nq)] with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], default_search_field, default_search_params, default_limit, default_search_exp) + collection.search(vectors[:default_nq], default_search_field, default_search_params, default_limit, + default_search_exp) assert "UnexpectedError" in str(e.value) log.info("test_search_param_invalid_dim: test PASS with expected assertion: %s" % e.value) @@ -247,7 +255,8 @@ class TestCollectionSearch(ApiReq): vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)] search_params = {"metric_type": "L10", "params": {"nprobe": 10}} with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], default_search_field, search_params, default_limit, default_search_exp) + collection.search(vectors[:default_nq], default_search_field, search_params, default_limit, + default_search_exp) assert "metric type not found" in str(e.value) log.info("test_search_param_invalid_metric_type: test PASS with expected assertion: %s" % e.value) @@ -262,13 +271,15 @@ class TestCollectionSearch(ApiReq): vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)] log.info("test_search_param_invalid_limit: searching with invalid limit (topK) = %s" % limit) with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], default_search_field, default_search_params, limit, default_search_exp) + collection.search(vectors[:default_nq], default_search_field, default_search_params, limit, + default_search_exp) assert "division by zero" in str(e.value) log.info("test_search_param_invalid_limit: test PASS with expected assertion: %s" % e.value) limit = 16385 log.info("test_search_param_invalid_limit: searching with invalid max limit (topK) = %s" % limit) with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], default_search_field, default_search_params, limit, default_search_exp) + collection.search(vectors[:default_nq], default_search_field, default_search_params, limit, + default_search_exp) assert "limit" and "too large" in str(e.value) log.info("test_search_param_invalid_limit: test PASS with expected assertion: %s" % e.value) @@ -288,7 +299,8 @@ class TestCollectionSearch(ApiReq): log.info("test_search_param_invalid_field: searching with invalid field") invalid_search_field = "floatvector" with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], invalid_search_field, default_search_params, default_limit, default_search_exp) + collection.search(vectors[:default_nq], invalid_search_field, default_search_params, default_limit, + default_search_exp) assert "invalid expression" in str(e.value) log.info("test_search_param_invalid_field: test PASS with expected assertion: %s" % e.value) @@ -307,7 +319,8 @@ class TestCollectionSearch(ApiReq): log.info("test_search_param_invalid_expr: test PASS with expected assertion: %s" % e.value) log.info("test_search_param_invalid_expr: searching with invalid expr") with pytest.raises(Exception) as e: - collection.search(vectors[:default_nq], default_search_field, default_search_params, default_limit, "int63 >= 0") + collection.search(vectors[:default_nq], default_search_field, default_search_params, default_limit, + "int63 >= 0") assert "invalid expression" in str(e.value) log.info("test_search_param_invalid_expr: test PASS with expected assertion: %s" % e.value) @@ -346,7 +359,8 @@ class TestCollectionSearch(ApiReq): _, binary_vectors = cf.gen_binary_vectors(3000, default_dim) wrong_search_params = {"metric_type": "L2", "params": {"nprobe": 10}} with pytest.raises(Exception) as e: - collection.search(binary_vectors[:nq], "binary_vector", wrong_search_params, default_limit, default_search_exp) + collection.search(binary_vectors[:nq], "binary_vector", wrong_search_params, default_limit, + default_search_exp) assert "unsupported" in str(e.value) log.info("test_search_param_invalid_value: test PASS with expected assertion: %s" % e.value) """ @@ -448,7 +462,8 @@ class TestCollectionSearch(ApiReq): limit = 1 vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)] for _ in range(N): - res = collection.search(vectors[:default_nq], "float_vector", default_search_params, limit, default_search_exp) + res = collection.search(vectors[:default_nq], "float_vector", default_search_params, limit, + default_search_exp) log.info("test_search_collection_multiple_times: Searched results length: %s" % len(res)) assert len(res) == default_nq for hits in res: @@ -546,7 +561,8 @@ class TestCollectionSearch(ApiReq): distance_1 = cf.jaccard(query_raw_vector[0], binary_raw_vector[1]) # 4. search and compare the distance search_params = {"metric_type": "JACCARD", "params": {"nprobe": 10}} - res = collection.search(binary_vectors[:default_nq], "binary_vector", search_params, default_limit, "int64 >= 0") + res = collection.search(binary_vectors[:default_nq], "binary_vector", search_params, default_limit, + "int64 >= 0") assert abs(res[0]._distances[0] - min(distance_0, distance_1)) <= epsilon @pytest.mark.tags(CaseLabel.L3) @@ -621,14 +637,16 @@ class TestCollectionSearch(ApiReq): expected: search status ok, the length of result ''' log.info("Test case of search interface: test_search_multi_collections") + self._connect() connection_num = 10 - for _ in range(connection_num): + for i in range(connection_num): # 1. initialize with data + log.info("test_search_multi_collections: search round %d" % i) collection, _ = self.init_data(insert_data=True, multiple=True) # 2. search vectors = [[random.random() for _ in range(default_dim)] for _ in range(default_nq)] - log.info("test_search_multi_collections: searching %s entities (nq = %s) from collection %s" % ( - default_limit, default_nq, collection.name)) + log.info("test_search_multi_collections: searching %s entities (nq = %s) from collection %s" % + (default_limit, default_nq, collection.name)) res = collection.search(vectors[:default_nq], default_search_field, default_search_params, default_limit, default_search_exp) assert len(res) == default_nq @@ -636,6 +654,7 @@ class TestCollectionSearch(ApiReq): assert len(hits) == default_limit assert len(hits.ids) == default_limit log.info("test_search_multi_collections: searched %s collections" % connection_num) + self.clear_env() @pytest.mark.tags(CaseLabel.L3) @pytest.mark.timeout(300)