def gen_grid_topology(m, n, nets_per_router): """ Generate 2D m*n routers topology each router is connected to `net_per_router` networks """ g = NetworkGraph() rows = range(1, m + 1) columns = range(1, n + 1) networks = range(1, nets_per_router + 1) for i in rows: for j in columns: node = 'R%d%d' % (i, j) g.add_router(node) for n in networks: net = 'N%d%d_%d' % (i, j, n) g.add_network(net) g.add_network_edge(net, node) g.add_network_edge(node, net) for i in rows: for j in columns: # Connect rows if j > 1: node1 = 'R%d%d' % (i, j) node2 = 'R%d%d' % (i, j - 1) g.add_router_edge(node1, node2) g.add_router_edge(node2, node1) # Connect columns if i > 1: node1 = 'R%d%d' % (i, j) node2 = 'R%d%d' % (i - 1, j) g.add_router_edge(node1, node2) g.add_router_edge(node2, node1) return g
def test_add_network(self): # init g = NetworkGraph() network = 'NET1' # Action g.add_network(network) # Asserts self.assertTrue(g.has_node(network)) self.assertTrue(g.is_network(network)) self.assertEqual(g.node[network][VERTEX_TYPE], VERTEXTYPE.NETWORK) self.assertFalse(g.is_router(network)) self.assertFalse(g.is_local_router(network)) self.assertFalse(g.is_peer(network)) self.assertEqual(list(g.networks_iter()), [network])