70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
import csv
|
|
import os
|
|
from pprint import pprint
|
|
|
|
# Returns array of csv files in current directory
|
|
|
|
|
|
def getFiles():
|
|
files = [f for f in os.listdir('.') if os.path.isfile(f)]
|
|
return[f for f in files if f.endswith('.csv')]
|
|
|
|
|
|
def processFile(fname):
|
|
with open(fname, 'r') as f:
|
|
lines = []
|
|
data = csv.reader(f)
|
|
fields = next(data)
|
|
responseCodes = {}
|
|
responsePerSec = {}
|
|
responseTimes = []
|
|
for row in data:
|
|
items = zip(fields, row)
|
|
item = {}
|
|
for(name, value) in items:
|
|
item[name] = value.strip()
|
|
sec = int(item['offset'].split('.')[0])
|
|
if sec not in responsePerSec:
|
|
responsePerSec[sec] = []
|
|
else:
|
|
responsePerSec[sec].append(item['response-time'])
|
|
code = item['status-code']
|
|
if code not in responseCodes:
|
|
responseCodes[code] = 1
|
|
else:
|
|
responseCodes[code] = responseCodes[code] + 1
|
|
responseTimes.append(item['response-time'])
|
|
if len(responseTimes) != 0:
|
|
maxResponse = max(responseTimes)
|
|
minResponse = min(responseTimes)
|
|
#print("Maximum response time was ", maxResponse)
|
|
#print("Minimum response time was ", minResponse)
|
|
else:
|
|
print("csv is empty")
|
|
#pprint(responseCodes)
|
|
for sec in responsePerSec:
|
|
if len(responsePerSec[sec]) != 0:
|
|
#print(sec, ":")
|
|
#print(" Maximum:", max(responsePerSec[sec]))
|
|
#print(" Minimum:", min(responsePerSec[sec]))
|
|
#print(" Num of responses:", len(responsePerSec[sec]))
|
|
print(len(responsePerSec[sec]))
|
|
#else:
|
|
#print(" empty")
|
|
|
|
|
|
def keychars(x):
|
|
return int(x.split('.')[1])
|
|
|
|
|
|
def processAllFiles():
|
|
files = sorted(getFiles(), key=keychars)
|
|
for f in files:
|
|
#print("Processing ", f)
|
|
processFile(f)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
processAllFiles()
|