def test(cls, config_name, is_export=True, is_update_map=True, is_simulate=False): assert config_name == 'config_line' cfgHelper = ConfigDataHelper(config_name, is_export) cfgHelper.init_task_graph() cfgHelper.update_topo_device_graph() cfgHelper.update_task_map() cfgHelper.update_max_latency_log() topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) all_mobiles = ['CAMERA.0', 'CAMERA.1', 'PHONE.0'] all_aps = ['BB_AP.0', 'BB_AP.1', 'BB_AP.2', 'BB_AP.3', 'BB_AP.4'] all_sws = [ 'BB_SWITCH.0', 'BB_SWITCH.1', 'BB_SWITCH.2', 'BB_SWITCH.3', 'BB_SWITCH.4' ] update_id = -1 for i in range(1, 50): update_id += 1 log.info('=== update {}: change link dst ==='.format(update_id)) dev = random.sample(all_mobiles, 1)[0] edges = list(topo_device_graph.edges(dev)) assert len(edges) == 1 nw_dev = edges[0][1] assert nw_dev in all_aps, '{} not in {}'.format(nw_dev, all_aps) new_nw_dev = random.sample(all_aps, 1)[0] new_latency = Unit.ms(random.randint(1, 500)) cfgHelper.update_dev_link(dev, nw_dev, new_nw_dev, new_latency) cfgHelper.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper.update_max_latency_log() topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) # update device graph update_id += 1 log.info('=== update {}: change latency ==='.format(update_id)) edges = list(topo_device_graph.edges()) [nw_dev1, nw_dev2] = random.sample(all_aps + all_sws, 2) while (nw_dev1, nw_dev2) not in edges: [nw_dev1, nw_dev2] = random.sample(all_aps + all_sws, 2) latency = Unit.ms(random.randint(20, 5000)) cfgHelper.update_nw_link_latency(nw_dev1, nw_dev2, latency) cfgHelper.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper.update_max_latency_log() topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) latency_dynamic, latency_static = cfgHelper.get_max_latency_log() log.info('latency_dynamic: {}'.format(latency_dynamic)) log.info('latency_static: {}'.format(latency_static))
def test(cls, config_name=None, is_export=True, is_update_map=False, is_simulate=False): cfgHelper = ConfigDataHelper(config_name, is_export) cfgHelper.init_task_graph() cfgHelper.update_topo_device_graph() cfgHelper.update_task_map() cfgHelper.update_max_latency_log() _topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) update_id = 0 log.info('=== update round {} ==='.format(update_id)) dev = 'PHONE.0' nw_dev = 'BB_AP.0' new_nw_dev = 'HOME_IOTGW.0' new_latency = Unit.ms(3) cfgHelper.update_dev_link(dev, nw_dev, new_nw_dev, new_latency) cfgHelper.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper.update_max_latency_log() _topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) # update device graph update_id += 1 log.info('=== update round {} ==='.format(update_id)) nw_dev1 = 'BB_SWITCH.0' nw_dev2 = 'CLOUD_SWITCH.0' latency = Unit.sec(5) cfgHelper.update_nw_link_latency(nw_dev1, nw_dev2, latency) cfgHelper.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper.update_max_latency_log() _topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) # update device graph update_id += 1 log.info('=== update round {} ==='.format(update_id)) dev = 'PHONE.0' nw_dev = 'HOME_IOTGW.0' new_nw_dev = 'BB_AP.0' new_latency = Unit.ms(3) cfgHelper.update_dev_link(dev, nw_dev, new_nw_dev, new_latency) cfgHelper.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper.update_max_latency_log() _topo, topo_device_graph, Gd, G_map = cfgHelper.get_graphs() if is_simulate: cls._simulate(topo_device_graph, Gd, G_map) log.info('latency trend: {}'.format(cfgHelper.get_max_latency_log()))
def test(cls, config_name, is_export=False, is_update_map=False, is_simulate=False): assert config_name == 'config_ddflow_phase2' # TODO: clean this shit cfg1 = Config('{}.1'.format(config_name)) cfg2 = Config('{}.2'.format(config_name)) cfgHelper = ConfigDataHelper(cfg1, is_export) cfgHelper.init_task_graph() cfgHelper.update_topo_device_graph() cfgHelper.update_task_map() cfgHelper.update_max_latency_log() cfgHelper2 = ConfigDataHelper(cfg2, is_export) cfgHelper2.init_task_graph() cfgHelper2.update_topo_device_graph() cfgHelper2.update_task_map() cfgHelper2.update_max_latency_log() all_mobiles = ['CAMERA.0'] all_aps = ['BB_AP.0', 'BB_AP.1', 'BB_AP.2'] update_id = -1 for i in range(1, 100): update_id += 1 log.info('=== update {}: mobile-ap link ==='.format(update_id)) dev = random.sample(all_mobiles, 1)[0] _, topo_device_graph, _, _ = cfgHelper.get_graphs() edges = list(topo_device_graph.edges(dev)) assert len(edges) == 1 nw_dev = edges[0][1] assert nw_dev in all_aps, '{} not in {}'.format(nw_dev, all_aps) new_nw_dev = random.sample(all_aps, 1)[0] new_latency = Unit.ms(random.randint(30, 50)) cfgHelper.update_dev_link(dev, nw_dev, new_nw_dev, new_latency) cfgHelper2.update_dev_link(dev, nw_dev, new_nw_dev, new_latency) log.info('=== update {}: ap-bb link ==='.format(update_id)) ap_bb_links = [ # ('BB_AP.0', 'BB_SWITCH.0'), ('BB_AP.1', 'BB_SWITCH.1'), ('BB_AP.2', 'BB_SWITCH.2') ] [which_link] = random.sample(ap_bb_links, 1) which_rand = random.randint(0, 9) if which_rand < 5: latency = Unit.ms(random.randint(5000, 6000)) else: latency = Unit.ms(random.randint(30, 50)) nw_dev1, nw_dev2 = which_link cfgHelper.update_nw_link_latency(nw_dev1, nw_dev2, latency) cfgHelper2.update_nw_link_latency(nw_dev1, nw_dev2, latency) log.info('=== update {}: ap-ap link ==='.format(update_id)) # _, topo_device_graph, _, _ = cfgHelper2.get_graphs() # edges = list(topo_device_graph.edges()) ap_ap_links = [('BB_AP.0', 'BB_AP.1'), ('BB_AP.1', 'BB_AP.2')] [which_link] = random.sample(ap_ap_links, 1) latency = Unit.ms(random.randint(30, 50)) nw_dev1, nw_dev2 = which_link cfgHelper2.update_nw_link_latency(nw_dev1, nw_dev2, latency) log.info('=== update {}: update graphs ==='.format(update_id)) cfgHelper.update_topo_device_graph() cfgHelper2.update_topo_device_graph() if is_update_map: cfgHelper.update_task_map() cfgHelper2.update_task_map() cfgHelper.update_max_latency_log() cfgHelper2.update_max_latency_log() _, latency_static = cfgHelper.get_max_latency_log() _, latency_static2 = cfgHelper2.get_max_latency_log() print('static\tdynamic\tdiff') for t1, t2 in zip(latency_static, latency_static2): print('{}\t{}\t{}'.format(t1, t2, t2 - t1))