1- import threading
1+ import time
22import pytest
33import json
44from time import sleep
99 SearchChecker ,
1010 QueryChecker ,
1111 DeleteChecker ,
12- Op )
13- from common .cus_resource_opts import CustomResourceOperations as CusResource
12+ Op ,
13+ ResultAnalyzer
14+ )
15+ from utils .util_k8s import wait_pods_ready , get_milvus_instance_name
1416from utils .util_log import test_log as log
1517from chaos import chaos_commons as cc
1618from common import common_func as cf
19+ from common .milvus_sys import MilvusSys
1720from chaos .chaos_commons import assert_statistic
1821from common .common_type import CaseLabel
1922from chaos import constants
2023from delayed_assert import expect , assert_expectations
2124
2225
23- def assert_statistic (checkers , expectations = {}):
24- for k in checkers .keys ():
25- # expect succ if no expectations
26- succ_rate = checkers [k ].succ_rate ()
27- total = checkers [k ].total ()
28- average_time = checkers [k ].average_time
29- if 'compact' in str (k ):
30- log .info ("skip compact check" )
31- log .info (
32- f"Expect Succ: { str (k )} succ rate { succ_rate } , total: { total } , average time: { average_time :.4f} " )
33- continue
34- if expectations .get (k , '' ) == constants .FAIL :
35- log .info (
36- f"Expect Fail: { str (k )} succ rate { succ_rate } , total: { total } , average time: { average_time :.4f} " )
37- expect (succ_rate < 0.49 or total < 2 ,
38- f"Expect Fail: { str (k )} succ rate { succ_rate } , total: { total } , average time: { average_time :.4f} " )
39- else :
40- log .info (
41- f"Expect Succ: { str (k )} succ rate { succ_rate } , total: { total } , average time: { average_time :.4f} " )
42- expect (succ_rate > 0.90 and total > 2 ,
43- f"Expect Succ: { str (k )} succ rate { succ_rate } , total: { total } , average time: { average_time :.4f} " )
44-
45-
4626def get_all_collections ():
4727 try :
4828 with open ("/tmp/ci_logs/all_collections.json" , "r" ) as f :
@@ -70,7 +50,7 @@ class TestBase:
7050class TestOperations (TestBase ):
7151
7252 @pytest .fixture (scope = "function" , autouse = True )
73- def connection (self , host , port , user , password ):
53+ def connection (self , host , port , user , password , milvus_ns ):
7454 if user and password :
7555 # log.info(f"connect to {host}:{port} with user {user} and password {password}")
7656 connections .connect ('default' , host = host , port = port , user = user , password = password , secure = True )
@@ -82,7 +62,10 @@ def connection(self, host, port, user, password):
8262 self .host = host
8363 self .port = port
8464 self .user = user
85- self .password = password
65+ self .password = password
66+ self .milvus_sys = MilvusSys (alias = 'default' )
67+ self .milvus_ns = milvus_ns
68+ self .release_name = get_milvus_instance_name (self .milvus_ns , milvus_sys = self .milvus_sys )
8669
8770 def init_health_checkers (self , collection_name = None ):
8871 c_name = collection_name
@@ -91,7 +74,7 @@ def init_health_checkers(self, collection_name=None):
9174 Op .flush : FlushChecker (collection_name = c_name ),
9275 Op .search : SearchChecker (collection_name = c_name ),
9376 Op .query : QueryChecker (collection_name = c_name ),
94- Op .compact :CompactChecker (collection_name = c_name ),
77+ Op .compact : CompactChecker (collection_name = c_name ),
9578 Op .delete : DeleteChecker (collection_name = c_name ),
9679 }
9780 self .health_checkers = checkers
@@ -107,11 +90,14 @@ def test_operations(self, request_duration, is_check, collection_name):
10790 # start the monitor threads to check the milvus ops
10891 log .info ("*********************Test Start**********************" )
10992 log .info (connections .get_connection_addr ('default' ))
93+ # event_records = EventRecords()
11094 c_name = collection_name if collection_name else cf .gen_unique_str ("Checker_" )
95+ # event_records.insert("init_health_checkers", "start")
11196 self .init_health_checkers (collection_name = c_name )
97+ # event_records.insert("init_health_checkers", "finished")
11298 cc .start_monitor_threads (self .health_checkers )
11399 log .info ("*********************Load Start**********************" )
114- request_duration = request_duration .replace ("h" ,"*3600+" ).replace ("m" ,"*60+" ).replace ("s" ,"" )
100+ request_duration = request_duration .replace ("h" , "*3600+" ).replace ("m" , "*60+" ).replace ("s" , "" )
115101 if request_duration [- 1 ] == "+" :
116102 request_duration = request_duration [:- 1 ]
117103 request_duration = eval (request_duration )
@@ -120,7 +106,11 @@ def test_operations(self, request_duration, is_check, collection_name):
120106 for k , v in self .health_checkers .items ():
121107 v .check_result ()
122108 # log.info(v.check_result())
109+ wait_pods_ready (self .milvus_ns , f"app.kubernetes.io/instance={ self .release_name } " )
110+ time .sleep (60 )
111+ ra = ResultAnalyzer ()
112+ ra .get_stage_success_rate ()
123113 if is_check :
124114 assert_statistic (self .health_checkers )
125- assert_expectations ()
115+ assert_expectations ()
126116 log .info ("*********************Chaos Test Completed**********************" )
0 commit comments