diff --git a/tests/python_client/chaos/chaos_objects/memory_stress/chaos_indexnode_memory_stress.yaml b/tests/python_client/chaos/chaos_objects/memory_stress/chaos_indexnode_memory_stress.yaml new file mode 100644 index 0000000000..a35ba9b4b7 --- /dev/null +++ b/tests/python_client/chaos/chaos_objects/memory_stress/chaos_indexnode_memory_stress.yaml @@ -0,0 +1,18 @@ +kind: StressChaos +apiVersion: chaos-mesh.org/v1alpha1 +metadata: + name: test-indexnode-memory-stress + namespace: chaos-testing +spec: + selector: + namespaces: + - chaos-testing + labelSelectors: + app.kubernetes.io/name: milvus + app.kubernetes.io/instance: mic-memory + app.kubernetes.io/component: indexnode + mode: one + stressors: + memory: + workers: 4 + size: 512Mi \ No newline at end of file diff --git a/tests/python_client/chaos/test_chaos_memory_stress.py b/tests/python_client/chaos/test_chaos_memory_stress.py index d80243d753..c06b755c26 100644 --- a/tests/python_client/chaos/test_chaos_memory_stress.py +++ b/tests/python_client/chaos/test_chaos_memory_stress.py @@ -1,4 +1,4 @@ -from time import sleep +from time import sleep, time import pytest import datetime @@ -145,4 +145,54 @@ class TestChaosData: 4.Inject memory stress chaos expected: """ - pass + # init collection and insert 250 nb + nb = 25600 + dim = 512 + c_name = cf.gen_unique_str('chaos_memory') + index_params = {"index_type": "IVF_SQ8", "metric_type": "L2", "params": {"nlist": 128}} + + collection_w = ApiCollectionWrapper() + collection_w.init_collection(name=c_name, + schema=cf.gen_default_collection_schema(dim=dim)) + # insert 256000 512 dim entities 512Mi + for i in range(10): + t0_insert = datetime.datetime.now() + df = cf.gen_default_dataframe_data(nb=nb, dim=dim) + res = collection_w.insert(df)[0] + assert res.insert_count == nb + # log.info(f'After {i + 1} insert, num_entities: {collection_w.num_entities}') + tt_insert = datetime.datetime.now() - t0_insert + log.info(f"{i} insert data cost: {tt_insert}") + + # flush + t0_flush = datetime.datetime.now() + assert collection_w.num_entities == nb * 10 + tt_flush = datetime.datetime.now() - t0_flush + log.info(f'flush {nb * 10} entities cost: {tt_flush}') + + # create index + # index + t0_index = datetime.datetime.now() + index, _ = collection_w.create_index(field_name=ct.default_float_vec_field_name, + index_params=index_params) + tt_index = datetime.datetime.now() - t0_index + + log.info(f"create index cost: {tt_index}") + log.info(collection_w.indexes) + + # indexNode start build index, inject chaos memory stress + chaos_config = gen_experiment_config(chaos_yaml) + log.debug(chaos_config) + chaos_res = CusResource(kind=chaos_config['kind'], + group=constants.CHAOS_GROUP, + version=constants.CHAOS_VERSION, + namespace=constants.CHAOS_NAMESPACE) + chaos_res.create(chaos_config) + log.debug("inject chaos") + + time.sleep(constants.WAIT_PER_OP) + + + + +