Example #1
0
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
Example #2
0
 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])