import sys, itertools from pylibs.test import Test, Player, BwChange, DelayChange, TcpDump from pylibs.generic import PlainObject server_url = 'http://192.168.100.10:3000/static' bigbuckbunny8_url = server_url + '/bbb8/play_size.m3u8' # rates: 350k 470k 630k 845k 1130k 1520k 2040k 2750k, duration (s): ~600 settings = PlainObject() settings.video_label = 'bbb8' settings.video_url = bigbuckbunny8_url settings.kill_after = 700 settings.rtt = ('20ms', '80ms') settings.rtt_zfill = 4 settings.buffer_size = ('25%', '50%', '100%', '600%') #won't be given directly to tc_helper, but will pass through get_bdp_fraction settings.buffer_size_zfill = 4 settings.fairshare = range(600, 3001, 300) settings.aqm = ('droptail', 'ared', 'codel') settings.clients = (1, 2, 3) settings.algorithms = ('classic-119', 'bba2', 'bba3') settings.curl = ('yes', 'bandwidth') def get_curl_label(curl): if curl == 'yes': return 'keepalive' if curl == 'bandwidth': return 'keepalive_est' return 'close' def get_algocurl_tuples(algorithms, curl_tuple): tuples = [] for curl in curl_tuple:
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() summary.link_utilization = -1 if len(session.bwprofile) == 1: summary.link_utilization = ( float(session.bandwidth_eth2_toclients.get_avg_rate()) / session.bwprofile.values()[0] * 100 ) summary.avg_router_queue_len = session.bandwidth_buffer.get_avg_queue_len() if len(set(session.buffer_profile.values())) != 1: