| import sys |
| import time |
| import json |
| from decimal import Decimal |
| |
| def gen_stat(file_name,output_name): |
| with open(file_name) as file_input: |
| total = 0 |
| start_time = 0 |
| end_time = 0 |
| items = [] |
| time_list = [] |
| succ_count = 0 |
| fail_count = 0 |
| timestr=time.strftime('%Y.%m.%d %H:%M:%S ',time.localtime(time.time())) |
| output_item={ |
| "Samples":0, |
| "Throughout":0, |
| "50th":0, |
| "95th":0, |
| "99.9th":0, |
| "Avg":0, |
| "Min":0, |
| "Max":0, |
| "Err":0, |
| "Date":timestr |
| } |
| for line in file_input: |
| line = line.strip("\n") |
| if line != "": |
| items=line.split(",") |
| time_list.append(int(items[1])) |
| if total == 0: |
| start_time = items[0] |
| if items[7] == "true": |
| succ_count = succ_count+1 |
| else: |
| fail_count = fail_count+1 |
| total = total+1 |
| if total > 0: |
| end_time = items[0] |
| the99 = int(total*0.999) |
| the95 = int(total*0.95) |
| the50 = int(total*0.5) |
| timeStamp = int(end_time)-int(start_time) |
| tps=str(Decimal(str(total*1.0/(timeStamp*1.0/1000))).quantize(Decimal('0.00'))) |
| err=str(float(fail_count/total)*100)+"%" |
| time_sorted_list=sorted(time_list) |
| the50s=str(time_sorted_list[the50]) |
| the95s=str(time_sorted_list[the95]) |
| the99s=str(time_sorted_list[the99]) |
| avg=str(sum(time_list)/total) |
| minstr=str(time_sorted_list[0]) |
| maxstr=str(time_sorted_list[len(time_sorted_list)-1]) |
| output_item={ |
| "Samples":total, |
| "Throughout":tps, |
| "50th":the90s, |
| "95th":the95s, |
| "99.9th":the99s, |
| "Avg":avg, |
| "Min":minstr, |
| "Max":maxstr, |
| "Err":err, |
| "Date":timestr |
| } |
| print(output_name) |
| with open(output_name, 'a+') as f: |
| f.write(json.dumps(output_item)) |
| f.write("\n") |
| if __name__=='__main__': |
| file_name = sys.argv[1] |
| out_name = sys.argv[2] |
| gen_stat(file_name,out_name) |