def algo_key(algo): if algo == "classic": return 0 if algo == "bba0": return 1 return 10 if __name__ == "__main__": filenames = sys.argv[1:] assert len(filenames) export = False if filenames[0] == "export": filenames = sys.argv[2:] export = "comparison.svg" sessions = [Session.read(f) for f in filenames] sessions.sort(key=lambda s: (s.bwprofile[0], algo_key(s.VLClogs[0].algorithm))) sessions_by_algo = [] for s in sessions: algo = s.VLClogs[0].algorithm obj = next((o for o in sessions_by_algo if o["algo"] == algo), None) if not obj: obj = {"algo": algo, "sessions": []} sessions_by_algo.append(obj) obj["sessions"].append(s) plotCompareSessions(sessions_by_algo, export)
assert len(filenames) sessions_summary = OrderedDict() for filename in filenames: try: filename = filename.rstrip(os.sep) run = 1 sessions = [] while True: runpath = os.path.join(filename, str(run)) if not os.path.isdir(runpath): runpath += ".tar.gz" if not os.path.isfile(runpath): break # print "Reading {0} run {1}...".format(filename, run) sessions.append(Session.read(runpath)) run += 1 if len(sessions) == 0: # print "No runs in {0}".format(filename) continue # print "Analyzing {0}...".format(filename) for run_zerobased, session in enumerate(sessions): for VLClog in session.VLClogs: summary = PlainObject() summary.total_clients = 1 summary.rebuffering_ratio = VLClog.get_buffering_fraction() summary.avg_bitrate = VLClog.get_avg_bitrate() summary.avg_relative_bitrate = float(summary.avg_bitrate) / session.get_fairshare() * 100 summary.avg_quality_level = VLClog.get_avg_quality() summary.instability = VLClog.get_instability()