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