@@ -131,7 +131,10 @@ def process_data(self):
131131 os .mkdir (self .workpath )
132132
133133 all_node = []
134- for node in self .cluster ["osds" ] + self .cluster ["client" ]:
134+ all_nodes = set (self .cluster ["osds" ] + self .cluster ["client" ])
135+ if case_type == "sysbench" :
136+ all_nodes = set (self .cluster ["vclient" ])
137+ for node in all_nodes :
135138 common .printout ("LOG" ,"note " + node + " start analysis" )
136139 common .scp (self .cluster ["user" ],node ,remote_file ,self .cluster ["tmp_dir" ])
137140 common .scp (self .cluster ["user" ],node ,remote_file1 ,self .cluster ["tmp_dir" ])
@@ -341,7 +344,7 @@ def get_execute_time(self):
341344
342345 def summary_result (self , data ):
343346 # generate summary
344- benchmark_tool = ["fio" , "cosbench" , "vdbench" ]
347+ benchmark_tool = ["fio" , "cosbench" , "vdbench" , "sysbench" ]
345348 data ["summary" ]["run_id" ] = {}
346349 res = re .search ('^(\d+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\d+)-(\d+)-(\w+)$' ,data ["session_name" ])
347350 if not res :
@@ -471,6 +474,8 @@ def _process_data(self, node_name):
471474 result .update (res )
472475 if 'cosbench' in dir_name :
473476 workload_result .update (self .process_cosbench_data ("%s/%s/%s" % (dest_dir , node_name , dir_name ), dir_name ))
477+ if 'sysbench' in dir_name :
478+ workload_result .update (self .process_sysbench_data ("%s/%s/%s" % (dest_dir , node_name , dir_name ), node_name , dir_name ))
474479 if '_sar.txt' in dir_name :
475480 result .update (self .process_sar_data ("%s/%s/%s" % (dest_dir , node_name , dir_name )))
476481 if 'totals.html' in dir_name :
@@ -779,6 +784,40 @@ def process_iostat_data(self, node, path):
779784 result [output ]["disk_num" ] = disk_num
780785 return result
781786
787+ def process_sysbench_data (self , path ,node_name , dirname ):
788+ result = {}
789+ sysbench_data = {}
790+ runtime_tmp = path .replace (self .all_conf_data .get ("dest_dir" ),'' ).split ('/' )
791+ while '' in runtime_tmp :
792+ runtime_tmp .remove ('' )
793+ runtime = runtime_tmp [0 ].split ('-' )[- 2 ]
794+ with open (path ,"r" ) as fd :
795+ self .data = fd .readlines ()
796+ self .sysbench_data = {}
797+ if len (self .data ) != 0 :
798+ for i in self .data :
799+ self .line = i .strip ('\n ' ).split (':' )
800+ while '' in self .line :
801+ self .line .remove ('' )
802+ if len (self .line ) == 2 :
803+ self .sysbench_data [self .line [0 ].strip ()] = self .line [1 ].strip ()
804+ output_sysbench_data = OrderedDict ()
805+ output_sysbench_data ['read_lat' ] = '%.3f' % float (self .sysbench_data ["avg" ].strip ("ms" ))
806+ output_sysbench_data ["read_iops" ] = '%.3f' % (int (self .sysbench_data ["read" ])/ int (runtime ))
807+ output_sysbench_data ["read_bw" ] = '0.000'
808+ output_sysbench_data ['read_runtime' ] = '%.3f' % float (runtime )
809+ output_sysbench_data ['write_lat' ] = '%.3f' % float (self .sysbench_data ["avg" ].strip ("ms" ))
810+ output_sysbench_data ["write_iops" ] = '%.3f' % (int (self .sysbench_data ["write" ])/ int (runtime ))
811+ output_sysbench_data ["write_bw" ] = '0.000'
812+ output_sysbench_data ["99.99%_lat" ] = '%.3f' % float (self .sysbench_data ["approx. 99 percentile" ].strip ("ms" ))
813+ output_sysbench_data ['write_runtime' ] = '%.3f' % float (runtime )
814+ output_sysbench_data ['lat_unit' ] = 'msec'
815+ output_sysbench_data ['runtime_unit' ] = 'sec'
816+ output_sysbench_data ['bw_unit' ] = 'MB/s'
817+ result [node_name ] = {}
818+ result [node_name ]["sysbench" ] = output_sysbench_data
819+ return result
820+
782821 def process_vdbench_data (self , path , dirname ):
783822 result = {}
784823 vdbench_data = {}
0 commit comments