def run_exps(self, net, sche, run_time): dicts = self.get_parameter() base_dir = 'output/cover-all-x/' + sche dirmanager.dir_ready(base_dir) dirmanager.file_ready(base_dir + '/record') dirmanager.file_ready(base_dir + '/broken') seq = 0 first_exp = 0 #for breakpoint resume is_resume = False #for breakpoint resume with open(base_dir + '/record') as record: lines = record.readlines() if len(lines) == 2: print lines seq = int(lines[0]) first_exp = int(lines[1]) + 1 if first_exp == run_time: first_exp = 0 seq += 1 is_resume = True counter = 0 for dic in dicts: if counter < seq: counter += 1 continue self.run_exp(dic, net, sche, base_dir, run_time, seq, first_exp, is_resume) is_resume = False first_exp = 0 seq += 1 counter = seq
def run_exp(net, sche, run_time, base_dir, traffic_type): dirmanager.dir_ready(base_dir) dirmanager.file_ready(base_dir + '/record') dump = True syslog = False exp = net.topo for exp_time in range(0, run_time): for time in range(0, 10): work_dir = base_dir + '/' + str(exp_time) dirmanager.dir_ready(work_dir) exp.set_output_dir(work_dir) if dump: exp.dump_start(net) if syslog: exp.syslog_start(net) exp.new_output_file() sleep(2) app_time = 150 wait_time = 40 data_size = 8 if traffic_type == 'CBR': exp.run_app(net, app_time, data_size) else: exp.run_iperf(net, app_time) for l in lr: exp.limit_links(net, [rtt_1, rtt_2], [loss_1, l]) sleep(10) exp.stop_app_dump(net, dump, syslog) if exp.is_multipath(dump): break else: exp.rm_all_data(dump) else: record = open(base_dir + '/record', 'a') record.write(str(exp_time) + '\n') record.close()
def run_exp(self, setup, net, sche, base_dir, run_time, seq, first_exp, is_resume): exp = net.topo dump = True syslog = False set = {} set['d'] = setup['d'][-1*self.path_num:] set['l'] = setup['l'][-1*self.path_num:] set['b'] = setup['b'][-1*self.path_num:] set['dt'] = setup['dt'][-1*self.path_num:] if is_resume: start_time = first_exp else: start_time = 0 for exp_time in range(start_time, run_time): work_dir = base_dir + '/' + str(seq) + '/' + str(exp_time) dirmanager.dir_ready(work_dir) exp.set_output_dir(work_dir) if (is_resume): exp.rm_all_data(True) is_resume = False for time in range(0, 5): if dump: exp.dump_start(net) if syslog: exp.syslog_start(net) exp.new_output_file() app_time = 30 data_size = 8 print set['d'],set['l'],set['b'],set['dt'] events = exp.get_events(set['l'], set['b'],set['dt'], app_time) sleep(2) exp.run_app(net, app_time, data_size) exp.limit_links(net, set['d'], [0] * self.path_num) '''l0 = 0 l1 = 0 for i in range(0, len(events)): sleep(events[i]['t']) if i == len(events) - 1: break if events[i]['pi'] == 0: exp.limit_links(net, set['d'], [events[i]['l'], l1]) l0 = events[i]['l'] else: exp.limit_links(net, set['d'], [l0, events[i]['l']]) l1 = events[i]['l'] print events[i]['t'], l0, l1''' ls = [0] * self.path_num for i in range(0, len(events)): sleep(events[i]['t']) if i == len(events) - 1: break pi = events[i]['pi'] ls[pi] = events[i]['l'] exp.limit_links(net, set['d'], ls) print events[i]['t'], ls exp.stop_app_dump(net, dump, syslog) if exp.is_multipath(dump = True): with open(base_dir + '/record', 'w') as record: record.writelines([str(seq), '\n', str(exp_time), '\n']) break else: exp.rm_all_data(dump = True) else: with open(base_dir + '/broken', 'a') as broken: broken.write(str(seq) + ' ' + str(exp_time)+'\n')