Example #1
0
 def test_sin_cyclostationary_traffic_matrix(self):
     tms = fnss.sin_cyclostationary_traffic_matrix(self.G, 10, 0.2, gamma=0.3, 
                                                   log_psi=-0.3, delta=0.2, 
                                                   n=24, periods=2, max_u=0.9)
     self.assertEqual(48, len(tms))
     self.assertAlmostEqual(0.9, max([max(fnss.link_loads(self.G, tm).values()) for tm in tms]))
     self.assertLessEqual(0, min([min(fnss.link_loads(self.G, tm).values()) for tm in tms]))
Example #2
0
 def test_static_traffic_matrix_parallel(self):
     # If number of edges is greater than 100, computation is parallelized
     G = fnss.full_mesh_topology(15)
     fnss.set_capacities_constant(G, 10, capacity_unit='Mbps')
     tm = fnss.static_traffic_matrix(G, 10, 8, max_u=0.9)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(G, tm).values()))
Example #3
0
 def test_static_traffic_matrix_parallel(self):
     # If number of edges is greater than 100, computation is parallelized
     G = fnss.full_mesh_topology(15)
     fnss.set_capacities_constant(G, 10, capacity_unit='Mbps')
     tm = fnss.static_traffic_matrix(G, 10, 8, max_u=0.9)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(G, tm).values()))
Example #4
0
 def test_sin_cyclostationary_traffic_matrix(self):
     tms = fnss.sin_cyclostationary_traffic_matrix(self.G, 10, 0.2, gamma=0.3, 
                                                   log_psi=-0.3, delta=0.2, 
                                                   n=24, periods=2, max_u=0.9)
     self.assertEqual(48, len(tms))
     self.assertAlmostEqual(0.9, max([max(fnss.link_loads(self.G, tm).values()) for tm in tms]))
     self.assertLessEqual(0, min([min(fnss.link_loads(self.G, tm).values()) for tm in tms]))
Example #5
0
 def test_static_traffic_matrix_partial_od_pairs(self):
     origin_nodes = [1, 2, 3]
     destination_nodes = [3, 4, 5]
     od_pairs = [(o, d) for o in origin_nodes for d in destination_nodes if o != d]
     tm = fnss.static_traffic_matrix(self.G, 10, 8,
                                     origin_nodes=origin_nodes,
                                     destination_nodes=destination_nodes, 
                                     max_u=0.9)
     tm_od_pairs = tm.od_pairs()
     self.assertEqual(len(od_pairs), len(tm_od_pairs))
     for od in od_pairs:
         self.assertTrue(od in tm_od_pairs)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(self.G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(self.G, tm).values()))
Example #6
0
 def test_stationary_traffic_matrix(self):
     tms = fnss.stationary_traffic_matrix(self.G,
                                          mean=10,
                                          stddev=3.5,
                                          gamma=5,
                                          log_psi=-0.3,
                                          n=5,
                                          max_u=0.9)
     self.assertEqual(5, len(tms))
     self.assertAlmostEqual(
         0.9,
         max([max(fnss.link_loads(self.G, tm).values()) for tm in tms]))
     self.assertLessEqual(
         0, min([min(fnss.link_loads(self.G, tm).values()) for tm in tms]))
Example #7
0
 def test_static_traffic_matrix_partial_od_pairs(self):
     origin_nodes = [1, 2, 3]
     destination_nodes = [3, 4, 5]
     od_pairs = [(o, d) for o in origin_nodes for d in destination_nodes if o != d]
     tm = fnss.static_traffic_matrix(self.G, 10, 8,
                                     origin_nodes=origin_nodes,
                                     destination_nodes=destination_nodes, 
                                     max_u=0.9)
     tm_od_pairs = tm.od_pairs()
     self.assertEqual(len(od_pairs), len(tm_od_pairs))
     for od in od_pairs:
         self.assertTrue(od in tm_od_pairs)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(self.G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(self.G, tm).values()))
Example #8
0
    def test_link_loads_ecmp(self):
        topo = fnss.ring_topology(5)
        topo.add_edge(1, 3)
        fnss.set_capacities_constant(topo, 100, capacity_unit='Mbps')
        tm = fnss.TrafficMatrix(volume_unit='Mbps')
        tm.add_flow(0, 1, 20)
        tm.add_flow(1, 0, 30)
        tm.add_flow(0, 2, 40)
        tm.add_flow(1, 4, 70)
        rm = {
            0: {
                0: [[0]],
                1: [[0, 1]],
                2: [[0, 1, 2]],
                3: [[0, 1, 3], [0, 4, 3]],
                4: [[0, 4]]
            },
            1: {
                0: [[1, 0]],
                1: [[1]],
                2: [[1, 2]],
                3: [[1, 3]],
                4: [[1, 3, 4], [1, 0, 4]]
            },
            2: {
                0: [[2, 1, 0]],
                1: [[2, 1]],
                2: [[2]],
                3: [[2, 3]],
                4: [[2, 3, 4]]
            },
            3: {
                0: [[3, 1, 0], [3, 4, 0]],
                1: [[3, 1]],
                2: [[3, 2]],
                3: [[3]],
                4: [[3, 4]]
            },
            4: {
                0: [[4, 0]],
                1: [[4, 0, 1], [4, 3, 1]],
                2: [[4, 3, 2]],
                3: [[4, 3]],
                4: [[4]]
            }
        }

        load = fnss.link_loads(topo, tm, routing_matrix=rm, ecmp=True)
        self.assertAlmostEqual(0.6, load[(0, 1)])
        self.assertAlmostEqual(0.65, load[(1, 0)])
        self.assertAlmostEqual(0.4, load[(1, 2)])
        self.assertAlmostEqual(0.0, load[(2, 1)])
        self.assertAlmostEqual(0.35, load[(0, 4)])
        self.assertAlmostEqual(0.35, load[(3, 4)])
        self.assertAlmostEqual(0.0, load[(4, 3)])
        self.assertAlmostEqual(0.0, load[(4, 0)])
        self.assertAlmostEqual(0.0, load[(2, 1)])
        self.assertAlmostEqual(0.0, load[(2, 3)])
Example #9
0
    def test_link_loads_ecmp(self):
        topo = fnss.ring_topology(5)
        topo.add_edge(1, 3)
        fnss.set_capacities_constant(topo, 100, capacity_unit='Mbps')
        tm = fnss.TrafficMatrix(volume_unit='Mbps')
        tm.add_flow(0, 1, 20)
        tm.add_flow(1, 0, 30)
        tm.add_flow(0, 2, 40)
        tm.add_flow(1, 4, 70)
        rm = {0 :
                { 0: [[0]],
                  1: [[0, 1]],
                  2: [[0, 1, 2]],
                  3: [[0, 1, 3], [0, 4, 3]],
                  4: [[0, 4]]
                },
              1 :
                { 0: [[1, 0]],
                  1: [[1]],
                  2: [[1, 2]],
                  3: [[1, 3]],
                  4: [[1, 3, 4], [1, 0, 4]]
                },
              2 :
                { 0: [[2, 1, 0]],
                  1: [[2, 1]],
                  2: [[2]],
                  3: [[2, 3]],
                  4: [[2, 3, 4]]
                },
              3 :
                { 0: [[3, 1, 0], [3, 4, 0]],
                  1: [[3, 1]],
                  2: [[3, 2]],
                  3: [[3]],
                  4: [[3, 4]]
                },
              4 :
                { 0: [[4, 0]],
                  1: [[4, 0, 1], [4, 3, 1]],
                  2: [[4, 3, 2]],
                  3: [[4, 3]],
                  4: [[4]]
                }}

        load = fnss.link_loads(topo, tm, routing_matrix=rm, ecmp=True)
        self.assertAlmostEqual(0.6, load[(0, 1)])
        self.assertAlmostEqual(0.65, load[(1, 0)])
        self.assertAlmostEqual(0.4, load[(1, 2)])
        self.assertAlmostEqual(0.0, load[(2, 1)])
        self.assertAlmostEqual(0.35, load[(0, 4)])
        self.assertAlmostEqual(0.35, load[(3, 4)])
        self.assertAlmostEqual(0.0, load[(4, 3)])
        self.assertAlmostEqual(0.0, load[(4, 0)])
        self.assertAlmostEqual(0.0, load[(2, 1)])
        self.assertAlmostEqual(0.0, load[(2, 3)])
Example #10
0
 def test_link_loads(self):
     topo = fnss.ring_topology(5)
     fnss.set_capacities_constant(topo, 100, capacity_unit='Mbps')
     tm = fnss.TrafficMatrix(volume_unit='Mbps')
     tm.add_flow(0, 1, 20)
     tm.add_flow(1, 0, 30)
     tm.add_flow(0, 2, 40)
     tm.add_flow(1, 4, 70)
     tm.add_flow(4, 2, 50)
     load = fnss.link_loads(topo, tm)
     self.assertAlmostEqual(0.6, load[(0, 1)])
     self.assertAlmostEqual(1.0, load[(1, 0)])
     self.assertAlmostEqual(0.4, load[(1, 2)])
     self.assertAlmostEqual(0.0, load[(2, 1)])
     self.assertAlmostEqual(0.7, load[(0, 4)])
     self.assertAlmostEqual(0.5, load[(4, 3)])
Example #11
0
 def test_link_loads(self):
     topo = fnss.ring_topology(5)
     fnss.set_capacities_constant(topo, 100, capacity_unit='Mbps')
     tm = fnss.TrafficMatrix(volume_unit='Mbps')
     tm.add_flow(0, 1, 20)
     tm.add_flow(1, 0, 30)
     tm.add_flow(0, 2, 40)
     tm.add_flow(1, 4, 70)
     tm.add_flow(4, 2, 50)
     load = fnss.link_loads(topo, tm)
     self.assertAlmostEqual(0.6, load[(0, 1)])
     self.assertAlmostEqual(1.0, load[(1, 0)])
     self.assertAlmostEqual(0.4, load[(1, 2)])
     self.assertAlmostEqual(0.0, load[(2, 1)])
     self.assertAlmostEqual(0.7, load[(0, 4)])
     self.assertAlmostEqual(0.5, load[(4, 3)])
Example #12
0
 def test_stationary_traffic_matrix(self):
     tms = fnss.stationary_traffic_matrix(self.G, mean=10, stddev=3.5, gamma=5, 
                                          log_psi=-0.3, n=5, max_u=0.9)
     self.assertEqual(5, len(tms))
     self.assertAlmostEqual(0.9, max([max(fnss.link_loads(self.G, tm).values()) for tm in tms]))
     self.assertLessEqual(0, min([min(fnss.link_loads(self.G, tm).values()) for tm in tms]))
Example #13
0
 def test_static_traffic_matrix(self):
     tm = fnss.static_traffic_matrix(self.G, 10, 8, max_u=0.9)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(self.G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(self.G, tm).values()))
Example #14
0
 def test_static_traffic_matrix(self):
     tm = fnss.static_traffic_matrix(self.G, 10, 8, max_u=0.9)
     self.assertAlmostEqual(0.9, max(fnss.link_loads(self.G, tm).values()))
     self.assertLessEqual(0, min(fnss.link_loads(self.G, tm).values()))