#!/usr/bin/env python2 import hashlib import os import sys __author__ = 'ty' import re import time from datetime import datetime from datetime import timedelta from nvd3 import lineWithFocusChart MAX_SPEED = 5000 class SpeedObject: def __init__(self, _date, _uri, _speed): self.date = _date self.uri = _uri self.speed = _speed directory = sys.argv[1] name = sys.argv[2] test_duration = sys.argv[3] with open(directory+"/"+name+".txt", 'r') as content_file: content = content_file.read() tests = content.split('#######################') date = datetime min_date = datetime.now() + timedelta(0, -3600*36) uri = "" testDict = {} for test in tests: try: item = re.findall("--.*", test, re.MULTILINE)[0] time_s = item.split(' ')[0] uri = item.split(' ')[1] date = datetime.strptime(time_s, '--%Y-%m-%d %H:%M:%S--') print date print uri if date < min_date: print "more than 36 hour, ignore." continue if uri in testDict: speedList = testDict[uri] else: speedList = [] testDict[uri] = speedList speeds = re.findall(".*%.*", test, re.MULTILINE) if len(speeds) == 0: continue else: delta = float(test_duration) / len(speeds) speedList.append(SpeedObject(date + timedelta(0, -3), uri, "10K")) for speed in speeds: speed = speed.split('% ')[1].strip().split(' ')[0] if "M" in speed: speed_i = float(speed.split('M')[0]) * 1024 if speed_i > MAX_SPEED: continue speed = str(speed_i) + 'K' speedList.append(SpeedObject(date, uri, speed)) date = date + timedelta(0, delta) print speed speedList.append(SpeedObject(date + timedelta(0, 3), uri, "10K")) except IndexError as e: pass output_file = open(directory+'/'+name+'.htm', 'w') chart_name = "Speed Test" chart = lineWithFocusChart(name=chart_name, width="1280", height="720", color_category='category20b', x_is_date=True, x_axis_format="%m-%d %H:%M") title = "\n\n