def setup(self): # setup commonly used paths self.cc_src = path.join(context.src_dir, 'wrappers', self.cc + '.py') self.tunnel_manager = path.join(context.src_dir, 'experiments', 'tunnel_manager.py') # record who runs first if self.test_config is None: self.run_first, self.run_second = utils.who_runs_first(self.cc) else: self.run_first = None self.run_second = None # wait for 3 seconds until run_first is ready self.run_first_setup_time = 3 # setup output logs self.datalink_name = self.cc + '_datalink_run%d' % self.run_id self.acklink_name = self.cc + '_acklink_run%d' % self.run_id self.datalink_log = path.join(self.data_dir, self.datalink_name + '.log') self.acklink_log = path.join(self.data_dir, self.acklink_name + '.log') if self.flows > 0: self.prepare_tunnel_log_paths() if self.mode == 'local': self.setup_mm_cmd() else: # record local and remote clock offset if self.ntp_addr is not None: self.local_ofst, self.remote_ofst = utils.query_clock_offset( self.ntp_addr, self.r['ssh_cmd'])
def setup(self): # setup commonly used paths self.cc_src = path.join(context.src_dir, 'wrappers', self.cc + '.py') self.tunnel_manager = path.join(context.src_dir, 'experiments', 'tunnel_manager.py') # record who runs first if self.test_config is None: self.run_first, self.run_second = utils.who_runs_first(self.cc) else: self.run_first = None self.run_second = None # wait for 3 seconds until run_first is ready self.run_first_setup_time = 3 # setup output logs self.datalink_name = self.cc + '_datalink_run%d' % self.run_id self.acklink_name = self.cc + '_acklink_run%d' % self.run_id self.datalink_log = path.join( self.data_dir, self.datalink_name + '.log') self.acklink_log = path.join( self.data_dir, self.acklink_name + '.log') if self.flows > 0: self.prepare_tunnel_log_paths() if self.mode == 'local': self.setup_mm_cmd() else: # record local and remote clock offset if self.ntp_addr is not None: self.local_ofst, self.remote_ofst = utils.query_clock_offset( self.ntp_addr, self.r['ssh_cmd'])
def __init__(self, args, run_id, cc): self.mode = args.mode self.run_id = run_id self.cc = cc self.data_dir = path.abspath(args.data_dir) self.extra_sender_args = args.extra_sender_args # shared arguments between local and remote modes self.flows = args.flows self.runtime = args.runtime self.interval = args.interval self.run_times = args.run_times # used for cleanup self.proc_first = None self.proc_second = None self.ts_manager = None self.tc_manager = None self.test_start_time = None self.test_end_time = None # local mode if self.mode == 'local': self.datalink_trace = args.uplink_trace self.acklink_trace = args.downlink_trace self.prepend_mm_cmds = args.prepend_mm_cmds self.append_mm_cmds = args.append_mm_cmds self.extra_mm_link_args = args.extra_mm_link_args # for convenience self.sender_side = 'remote' self.server_side = 'local' # remote mode if self.mode == 'remote': self.sender_side = args.sender_side self.server_side = args.server_side self.local_addr = args.local_addr self.local_if = args.local_if self.remote_if = args.remote_if self.local_desc = args.local_desc self.remote_desc = args.remote_desc self.ntp_addr = args.ntp_addr self.local_ofst = None self.remote_ofst = None self.r = utils.parse_remote_path(args.remote_path, self.cc) # arguments when there's a config self.test_config = None if hasattr(args, 'test_config'): self.test_config = args.test_config if self.test_config is not None: self.cc = self.test_config['test-name'] self.flow_objs = {} cc_src_remote_dir = '' if self.mode == 'remote': cc_src_remote_dir = r['base_dir'] tun_id = 1 for flow in args.test_config['flows']: cc = flow['scheme'] run_first, run_second = utils.who_runs_first(cc) local_p = path.join(context.src_dir, 'wrappers', cc + '.py') remote_p = path.join(cc_src_remote_dir, 'wrappers', cc + '.py') self.flow_objs[tun_id] = Flow(cc=cc, cc_src_local=local_p, cc_src_remote=remote_p, run_first=run_first, run_second=run_second) tun_id += 1
def __init__(self, args, run_id, cc): self.mode = args.mode self.run_id = run_id self.cc = cc self.data_dir = path.abspath(args.data_dir) # shared arguments between local and remote modes self.flows = args.flows self.runtime = args.runtime self.interval = args.interval self.run_times = args.run_times # used for cleanup self.proc_first = None self.proc_second = None self.ts_manager = None self.tc_manager = None self.test_start_time = None self.test_end_time = None # local mode if self.mode == 'local': self.datalink_trace = args.uplink_trace self.acklink_trace = args.downlink_trace self.prepend_mm_cmds = args.prepend_mm_cmds self.append_mm_cmds = args.append_mm_cmds self.extra_mm_link_args = args.extra_mm_link_args # for convenience self.sender_side = 'remote' self.server_side = 'local' # remote mode if self.mode == 'remote': self.sender_side = args.sender_side self.server_side = args.server_side self.local_addr = args.local_addr self.local_if = args.local_if self.remote_if = args.remote_if self.local_desc = args.local_desc self.remote_desc = args.remote_desc self.ntp_addr = args.ntp_addr self.local_ofst = None self.remote_ofst = None self.r = utils.parse_remote_path(args.remote_path, self.cc) # arguments when there's a config self.test_config = None if hasattr(args, 'test_config'): self.test_config = args.test_config if self.test_config is not None: self.cc = self.test_config['test-name'] self.flow_objs = {} cc_src_remote_dir = '' if self.mode == 'remote': cc_src_remote_dir = r['base_dir'] tun_id = 1 for flow in args.test_config['flows']: cc = flow['scheme'] run_first, run_second = utils.who_runs_first(cc) local_p = path.join(context.src_dir, 'wrappers', cc + '.py') remote_p = path.join(cc_src_remote_dir, 'wrappers', cc + '.py') self.flow_objs[tun_id] = Flow( cc=cc, cc_src_local=local_p, cc_src_remote=remote_p, run_first=run_first, run_second=run_second) tun_id += 1