From d68444e9849c882ceacccc69a8ab0cd7af28e17e Mon Sep 17 00:00:00 2001 From: yanliang567 <82361606+yanliang567@users.noreply.github.com> Date: Thu, 18 Nov 2021 10:35:37 +0800 Subject: [PATCH] [skip ci]Add customize segment size test (#12005) Signed-off-by: yanliang567 --- .../customize/test_customize_segment_size.py | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 tests/python_client/customize/test_customize_segment_size.py diff --git a/tests/python_client/customize/test_customize_segment_size.py b/tests/python_client/customize/test_customize_segment_size.py new file mode 100644 index 0000000000..23e19bfb08 --- /dev/null +++ b/tests/python_client/customize/test_customize_segment_size.py @@ -0,0 +1,139 @@ +import pytest +import time + +from pymilvus import connections +from utils.util_log import test_log as log +from base.collection_wrapper import ApiCollectionWrapper +from common import common_func as cf +from common import common_type as ct +from milvus_operator import MilvusOperator +from common.milvus_sys import MilvusSys +from common.common_type import CaseLabel + + +customize_segment_sizes = [128, 1024] +namespace = 'chaos-testing' + + +def _install_milvus(seg_size): + release_name = f"mil-segsize-{seg_size}-" + cf.gen_digits_by_length(6) + cus_configs = {'spec.components.image': 'milvusdb/milvus-dev:master-latest', + 'metadata.namespace': namespace, + 'metadata.name': release_name, + 'spec.components.proxy.serviceType': 'LoadBalancer', + 'spec.config.dataCoord.segment.maxSize': seg_size + } + milvus_op = MilvusOperator() + log.info(f"install milvus with configs: {cus_configs}") + milvus_op.install(cus_configs) + healthy = milvus_op.wait_for_healthy(release_name, namespace, timeout=1200) + log.info(f"milvus healthy: {healthy}") + if healthy: + endpoint = milvus_op.endpoint(release_name, namespace).split(':') + log.info(f"milvus endpoint: {endpoint}") + host = endpoint[0] + port = endpoint[1] + return release_name, host, port + else: + return release_name, None, None + + +@pytest.skip(reason="issue #11952") +class TestCustomizeSegmentSize: + + def teardown_method(self): + milvus_op = MilvusOperator() + milvus_op.uninstall(self.release_name, namespace) + + @pytest.mark.tags(CaseLabel.L3) + @pytest.mark.parametrize('size_id', [i for i in range(len(customize_segment_sizes))]) + def test_customize_segment_size(self, size_id): + """ + steps + 1. [test_milvus_install]: set up milvus with customized simd configured + 2. [test_simd_compat_e2e]: verify milvus is working well + 4. [test_milvus_cleanup]: delete milvus instances in teardown + """ + size = customize_segment_sizes[size_id] + log.info(f"start to install milvus with segment size {size}") + release_name, host, port = _install_milvus(size) + self.release_name = release_name + assert host is not None + conn = connections.connect("default", host=host, port=port) + assert conn is not None + mil = MilvusSys(alias="default") + log.info(f"milvus build version: {mil.build_version}") + + # log.info(f"start to e2e verification: {size}") + # # create + # name = cf.gen_unique_str("compat") + # t0 = time.time() + # collection_w = ApiCollectionWrapper() + # collection_w.init_collection(name=name, + # schema=cf.gen_default_collection_schema(), + # timeout=40) + # tt = time.time() - t0 + # assert collection_w.name == name + # entities = collection_w.num_entities + # log.info(f"assert create collection: {tt}, init_entities: {entities}") + # + # # insert + # data = cf.gen_default_list_data() + # t0 = time.time() + # _, res = collection_w.insert(data) + # tt = time.time() - t0 + # log.info(f"assert insert: {tt}") + # assert res + # + # # flush + # t0 = time.time() + # assert collection_w.num_entities == len(data[0]) + entities + # tt = time.time() - t0 + # entities = collection_w.num_entities + # log.info(f"assert flush: {tt}, entities: {entities}") + # + # # search + # collection_w.load() + # search_vectors = cf.gen_vectors(1, ct.default_dim) + # search_params = {"metric_type": "L2", "params": {"nprobe": 16}} + # t0 = time.time() + # res_1, _ = collection_w.search(data=search_vectors, + # anns_field=ct.default_float_vec_field_name, + # param=search_params, limit=1) + # tt = time.time() - t0 + # log.info(f"assert search: {tt}") + # assert len(res_1) == 1 + # collection_w.release() + # + # # index + # d = cf.gen_default_list_data() + # collection_w.insert(d) + # log.info(f"assert index entities: {collection_w.num_entities}") + # _index_params = {"index_type": "IVF_SQ8", "params": {"nlist": 64}, "metric_type": "L2"} + # t0 = time.time() + # index, _ = collection_w.create_index(field_name=ct.default_float_vec_field_name, + # index_params=_index_params, + # name=cf.gen_unique_str()) + # tt = time.time() - t0 + # log.info(f"assert index: {tt}") + # assert len(collection_w.indexes) == 1 + # + # # search + # t0 = time.time() + # collection_w.load() + # tt = time.time() - t0 + # log.info(f"assert load: {tt}") + # search_vectors = cf.gen_vectors(1, ct.default_dim) + # t0 = time.time() + # res_1, _ = collection_w.search(data=search_vectors, + # anns_field=ct.default_float_vec_field_name, + # param=search_params, limit=1) + # tt = time.time() - t0 + # log.info(f"assert search: {tt}") + # + # # query + # term_expr = f'{ct.default_int64_field_name} in [1001,1201,4999,2999]' + # t0 = time.time() + # res, _ = collection_w.query(term_expr) + # tt = time.time() - t0 + # log.info(f"assert query result {len(res)}: {tt}")