Esempio n. 1
0
	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
Esempio n. 2
0
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()
Esempio n. 3
0
	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')