コード例 #1
0
    def test_unroutable_demand(self):
        node_a = Node(name='nodeA', lat=0, lon=0)
        node_b = Node(name='nodeB', lat=0, lon=0)
        node_d = Node(name='nodeD')
        interface_a = Interface(name='inerfaceA-to-B',
                                cost=4,
                                capacity=100,
                                node_object=node_a,
                                remote_node_object=node_b,
                                circuit_id=1)
        interface_b = Interface(name='inerfaceB-to-A',
                                cost=4,
                                capacity=100,
                                node_object=node_b,
                                remote_node_object=node_a,
                                circuit_id=1)
        dmd_a_d = Demand(node_a, node_d, traffic=10)
        model = PerformanceModel(interface_objects=set(
            [interface_a, interface_b]),
                                 node_objects=set([node_a, node_b, node_d]),
                                 demand_objects=set([dmd_a_d]),
                                 rsvp_lsp_objects=set([]))
        model.update_simulation()

        self.assertEqual(dmd_a_d.path, 'Unrouted')
コード例 #2
0
 def setUpClass(self):
     self.maxDiff = None
     self.node_a = Node(name="nodeA", lat=0, lon=0)
     self.node_b = Node(name="nodeB", lat=0, lon=0)
     self.interface_a = Interface(
         name="inerfaceA-to-B",
         cost=4,
         capacity=100,
         node_object=self.node_a,
         remote_node_object=self.node_b,
         circuit_id=1,
     )
     self.interface_b = Interface(
         name="inerfaceB-to-A",
         cost=4,
         capacity=100,
         node_object=self.node_b,
         remote_node_object=self.node_a,
         circuit_id=1,
     )
     self.model = PerformanceModel(
         interface_objects=set([self.interface_a, self.interface_b]),
         node_objects=set([self.node_a, self.node_b]),
         demand_objects=set([]),
         rsvp_lsp_objects=set([]),
     )
     self.circuit = Circuit(self.interface_a, self.interface_b)
    def test_unroutable_demand(self):
        node_a = Node(name="nodeA", lat=0, lon=0)
        node_b = Node(name="nodeB", lat=0, lon=0)
        node_d = Node(name="nodeD")
        interface_a = Interface(
            name="inerfaceA-to-B",
            cost=4,
            capacity=100,
            node_object=node_a,
            remote_node_object=node_b,
            circuit_id=1,
        )
        interface_b = Interface(
            name="inerfaceB-to-A",
            cost=4,
            capacity=100,
            node_object=node_b,
            remote_node_object=node_a,
            circuit_id=1,
        )
        dmd_a_d = Demand(node_a, node_d, traffic=10)
        model = FlexModel(
            interface_objects=set([interface_a, interface_b]),
            node_objects=set([node_a, node_b, node_d]),
            demand_objects=set([dmd_a_d]),
            rsvp_lsp_objects=set([]),
        )
        model.update_simulation()

        self.assertEqual(dmd_a_d.path, "Unrouted")
コード例 #4
0
 def setUpClass(self):
     self.maxDiff = None
     self.node_a = Node(name='nodeA', lat=0, lon=0)
     self.node_b = Node(name='nodeB', lat=0, lon=0)
     self.interface_a = Interface(name='inerfaceA-to-B',
                                  cost=4,
                                  capacity=100,
                                  node_object=self.node_a,
                                  remote_node_object=self.node_b,
                                  circuit_id=1)
     self.interface_b = Interface(name='inerfaceB-to-A',
                                  cost=4,
                                  capacity=100,
                                  node_object=self.node_b,
                                  remote_node_object=self.node_a,
                                  circuit_id=1)
     self.rsvp_lsp_a = RSVP_LSP(source_node_object=self.node_a,
                                dest_node_object=self.node_b,
                                lsp_name='A-to-B')
     self.model = PerformanceModel(
         interface_objects=set([self.interface_a, self.interface_b]),
         node_objects=set([self.node_a, self.node_b]),
         demand_objects=set([]),
         rsvp_lsp_objects=set([self.rsvp_lsp_a]))
     self.demand = Demand(source_node_object=self.node_a,
                          dest_node_object=self.node_b,
                          traffic=10,
                          name='A-to-B')
コード例 #5
0
 def setUpClass(self):
     self.maxDiff = None
     self.node_a = Node(name='nodeA', lat=0, lon=0)
     self.node_b = Node(name='nodeB', lat=0, lon=0)
     self.interface_a = Interface(name='inerfaceA-to-B', cost=4, capacity=100,
                                  node_object=self.node_a, remote_node_object=self.node_b, circuit_id=1)
     self.interface_b = Interface(name='inerfaceB-to-A', cost=4, capacity=100,
                                  node_object=self.node_b, remote_node_object=self.node_a, circuit_id=1)
コード例 #6
0
 def setUpClass(self):
     self.maxDiff = None
     self.node_a = Node(name='nodeA', lat=0, lon=0)
     self.node_b = Node(name='nodeB', lat=0, lon=0)
     self.interface_a = Interface(name='inerfaceA-to-B', cost=4, capacity=100,
                                  node_object=self.node_a, remote_node_object=self.node_b, circuit_id=1)
     self.interface_b = Interface(name='inerfaceB-to-A', cost=4, capacity=100,
                                  node_object=self.node_b, remote_node_object=self.node_a, circuit_id=1)
     self.model = Model(interface_objects=set([self.interface_a, self.interface_b]),
                        node_objects=set([self.node_a, self.node_b]),
                        demand_objects=set([]), rsvp_lsp_objects=set([]))
コード例 #7
0
 def test_init_fail_neg_capacity(self):
     with self.assertRaises(ModelException):
         Interface(name='inerfaceA-to-B',
                   cost=4,
                   capacity=-1,
                   node_object=self.node_a,
                   remote_node_object=self.node_b,
                   address=1)
コード例 #8
0
 def test_init_fail_neg_cost(self):
     with self.assertRaises(ModelException):
         Interface(name='inerfaceA-to-B',
                   cost=-1,
                   capacity=100,
                   node_object=self.node_a,
                   remote_node_object=self.node_b,
                   circuit_id=1)
    def test_demand_on_lsp(self):
        """
        Ensure the demand takes an available LSP
        :return:
        """
        node_a = Node(name="nodeA", lat=0, lon=0)
        node_b = Node(name="nodeB", lat=0, lon=0)
        node_d = Node(name="nodeD")
        interface_a = Interface(
            name="inerfaceA-to-B",
            cost=4,
            capacity=100,
            node_object=node_a,
            remote_node_object=node_b,
            circuit_id=1,
        )
        interface_b = Interface(
            name="inerfaceB-to-A",
            cost=4,
            capacity=100,
            node_object=node_b,
            remote_node_object=node_a,
            circuit_id=1,
        )
        dmd_a_b = Demand(node_a, node_b, traffic=10)

        lsp_a_b = RSVP_LSP(source_node_object=node_a,
                           dest_node_object=node_b,
                           lsp_name="lsp_a_b")

        model = FlexModel(
            interface_objects=set([interface_a, interface_b]),
            node_objects=set([node_a, node_b, node_d]),
            demand_objects=set([dmd_a_b]),
            rsvp_lsp_objects=set([lsp_a_b]),
        )

        model.update_simulation()

        self.assertEqual(
            str(dmd_a_b.path),
            "[[RSVP_LSP(source = nodeA, dest = nodeB, lsp_name = 'lsp_a_b')]]",
        )
コード例 #10
0
    def test_not_equal(self):
        model = PerformanceModel.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        int_a_b = model.get_interface_object('A-to-B', 'A')
        circuit_id = int_a_b.circuit_id

        node_a_prime = Node('A')
        node_b_prime = Node('B')

        int_a_b_prime = Interface('A-to-B', 20, 125, node_a_prime, node_b_prime, circuit_id)

        self.assertFalse(int_a_b == int_a_b_prime)
コード例 #11
0
    def test_non_unique_interface_name(self):
        model = FlexModel.load_model_file('test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        node_f = model.get_node_object('F')
        node_b = model.get_node_object('B')
        new_int = Interface('F-to-B', 100, 100, node_f, node_b, 80)
        model.interface_objects.add(new_int)

        err_msg = "No matching Interface Object found"

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #12
0
    def test_int_not_in_ckt(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        node_f = model.get_node_object('F')
        node_b = model.get_node_object('B')
        new_int = Interface('F-to-B', 100, 100, node_f, node_b, 80)
        model.interface_objects.add(new_int)

        err_msg = "WARNING: These interfaces were not matched into a circuit [('F', 'B', {'cost': 100})]"

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #13
0
    def test_add_duplicate_int(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        node_a = model.get_node_object('A')
        node_b = model.get_node_object('B')
        duplicate_int = Interface('A-to-B', 100, 100, node_a, node_b, 80)
        model.interface_objects.add(duplicate_int)

        err_msg = "Interface names must be unique per node."

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #14
0
    def test_int_not_in_ckt(self):
        model = FlexModel.load_model_file('test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        node_f = model.get_node_object('F')
        node_x = model.get_node_object('X')
        new_int = Interface('F-to-X', 100, 100, node_f, node_x, 90)
        model.interface_objects.add(new_int)

        err_msg = "WARNING: These interfaces were not matched"

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #15
0
    def test_not_equal(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        int_a_b = model.get_interface_object('A-to-B', 'A')
        address = int_a_b.address

        node_a_prime = Node('A')
        node_b_prime = Node('B')

        int_a_b_prime = Interface('A-to-B', 20, 125, node_a_prime,
                                  node_b_prime, address)

        self.assertFalse(int_a_b == int_a_b_prime)
コード例 #16
0
    def test_add_duplicate_int(self):
        model = PerformanceModel.load_model_file("test/igp_routing_topology.csv")
        model.update_simulation()

        node_a = model.get_node_object("A")
        node_b = model.get_node_object("B")
        duplicate_int = Interface("A-to-B", 100, 125, node_a, node_b, 80)
        model.interface_objects.add(duplicate_int)

        err_msg = "multiple links between nodes detected; not allowed in Model object(use Parallel_Link_Model)"

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0][1][0].keys())
コード例 #17
0
    def test_demand_on_lsp(self):
        """
        Ensure the demand takes an available LSP
        :return:
        """
        node_a = Node(name='nodeA', lat=0, lon=0)
        node_b = Node(name='nodeB', lat=0, lon=0)
        node_d = Node(name='nodeD')
        interface_a = Interface(name='inerfaceA-to-B',
                                cost=4,
                                capacity=100,
                                node_object=node_a,
                                remote_node_object=node_b,
                                address=1)
        interface_b = Interface(name='inerfaceB-to-A',
                                cost=4,
                                capacity=100,
                                node_object=node_b,
                                remote_node_object=node_a,
                                address=1)
        dmd_a_b = Demand(node_a, node_b, traffic=10)

        lsp_a_b = RSVP_LSP(source_node_object=node_a,
                           dest_node_object=node_b,
                           lsp_name='lsp_a_b')

        model = Model(interface_objects=set([interface_a, interface_b]),
                      node_objects=set([node_a, node_b, node_d]),
                      demand_objects=set([dmd_a_b]),
                      rsvp_lsp_objects=set([lsp_a_b]))

        model.update_simulation()

        self.assertEqual(
            str(dmd_a_b.path),
            "[RSVP_LSP(source = nodeA, dest = nodeB, lsp_name = 'lsp_a_b')]")
コード例 #18
0
    def test_duplicate_interface(self):
        model = FlexModel.load_model_file('test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        node_a = model.get_node_object('A')
        node_b = model.get_node_object('B')

        int_a_b = Interface('A-to-B', 4, 100, node_a, node_b, 67)

        err_msg = "Interface names must be unique per node"

        model.interface_objects.add(int_a_b)
        with self.assertRaises(ModelException) as context:
            model._unique_interface_per_node()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #19
0
    def test_duplicate_interface(self):
        model = FlexModel.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        node_a = model.get_node_object('A')
        node_b = model.get_node_object('B')

        int_a_b = Interface('A-to-B', 4, 100, node_a, node_b, 67)

        err_msg = "No matching Interface Object found: source node B, dest node A circuit_id 67"

        model.interface_objects.add(int_a_b)
        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #20
0
    def test_int_not_in_ckt(self):
        model = PerformanceModel.load_model_file("test/igp_routing_topology.csv")
        model.update_simulation()

        node_f = model.get_node_object("F")
        node_b = model.get_node_object("B")
        new_int = Interface("F-to-B", 100, 100, node_f, node_b, 80)
        model.interface_objects.add(new_int)

        err_msg = (
            "WARNING: These interfaces were not matched into a circuit [('F', 'B', {"
        )

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #21
0
    def test_add_orphan_interface(self):
        """
        Tests adding an unpaired Interface to the model's interface_objects set
        """
        model = FlexModel.load_model_file('test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        node_a = model.get_node_object('A')
        node_b = model.get_node_object('B')
        orphan_int = Interface('A-to-B', 100, 100, node_a, node_b, circuit_id=80)
        model.interface_objects.add(orphan_int)

        err_msg = "No matching Interface Object found"

        with self.assertRaises(ModelException) as context:
            model.update_simulation()
        self.assertIn(err_msg, context.exception.args[0])
コード例 #22
0
 def test_bad_int_cost(self):
     with self.assertRaises(ModelException) as context:
         (Interface('test_int', -5, 40, self.node_a, self.node_b, 50))
     self.assertTrue('Interface cost cannot be less than 1' in
                     context.exception.args[0])