def test_interface_fields_missing_model_file_load(self):
     err_msg = 'node_name, remote_node_name, name, cost, capacity, circuit_id must be defined for line'
     with self.assertRaises(ModelException) as context:
         Parallel_Link_Model.load_model_file(
             'test/interface_field_info_missing_routing_topology_multidigraph.csv'
         )
     self.assertTrue(err_msg in err_msg in context.exception.args[0])
    def test_for_bad_node_in_lsp_data(self):

        err_msg = "No Node with name Y in Model"

        with self.assertRaises(ModelException) as context:
            Parallel_Link_Model.load_model_file(
                'test/parallel_link_model_bad_node_in_lsp.csv')
        self.assertIn(err_msg, context.exception.args[0])
    def test_mismatched_circuit_id(self):
        """
        Check that each circuit_id value appears exactly twice in the model file
        """
        msg = (
            "Each circuit_id value must appear exactly twice; the following circuit_id values do not meet "
            "that criteria:")

        with self.assertRaises(ModelException) as context:
            Parallel_Link_Model.load_model_file(
                'test/parallel_link_model_bad_circuit_id.csv')
        self.assertIn(msg, context.exception.args[0])
 def test_failed_node_interfaces(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.update_simulation()
     model.fail_node('A')
     model.update_simulation()
     self.assertEqual(len(model.get_failed_interface_objects()), 10)
 def test_fail_node(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.update_simulation()
     model.fail_node('A')
     model.update_simulation()
     self.assertTrue(model.get_node_object('A').failed)
 def test_ckt_mismatch_int_capacity_file_load(self):
     err_msg = 'circuits_with_mismatched_interface_capacity'
     model = Parallel_Link_Model.load_model_file(
         'test/mismatched_ckt_int_capacity_topology_parallel_links.csv')
     with self.assertRaises(ModelException) as context:
         model.update_simulation()
     self.assertTrue(err_msg in context.exception.args[0][1][0].keys())
Пример #7
0
 def setUpClass(self):
     self.model = Parallel_Link_Model.load_model_file(
         'test/test_rsvp_3rd_lsp_2_paths_parallel_links.csv')
     self.lsp_a_e_1 = self.model.get_rsvp_lsp('A', 'E', 'lsp_a_e_1')
     self.lsp_a_e_2 = self.model.get_rsvp_lsp('A', 'E', 'lsp_a_e_2')
     self.lsp_a_e_3 = self.model.get_rsvp_lsp('A', 'E', 'lsp_a_e_3')
     self.model.update_simulation()
    def test_failed_int_node_srlg(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()
        int_a_b = model.get_interface_object('A-to-B', 'A')
        int_b_a = int_a_b.get_remote_interface(model)
        node_a = model.get_node_object('A')

        model.add_srlg('new_srlg')
        model.update_simulation()

        int_a_b.add_to_srlg('new_srlg', model)
        model.update_simulation()

        srlg = model.get_srlg_object('new_srlg')

        model.fail_node('A')
        model.fail_srlg('new_srlg')
        model.update_simulation()

        self.assertTrue(int_a_b.failed)
        self.assertTrue(int_b_a.failed)

        # Unfail the SRLG, int_a_b and int_b_a should stay failed
        model.unfail_srlg('new_srlg')
        model.update_simulation()

        self.assertFalse(srlg.failed)
        self.assertTrue(node_a.failed)
        self.assertTrue(int_a_b.failed)
        self.assertTrue(int_b_a.failed)
 def test_get_unfailed_ints_2(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.update_simulation()
     model.fail_interface('A-to-B', 'A')
     model.update_simulation()
     self.assertEqual(len(model.get_unfailed_interface_objects()), 38)
    def test_get_bad_srlg_no_exception(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')

        bad_srlg = model.get_srlg_object('bad_srlg', raise_exception=False)

        self.assertEqual(bad_srlg, None)
Пример #11
0
    def test_complex_topology_demand_path_2(self):
        # Functional test for demand path across a topology where demand takes
        # multiple ECMP paths.  Some paths have parallel links, the other paths
        # have multiple IGP shortcut LSPs
        model = Parallel_Link_Model.load_model_file(
            "test/igp_shortcuts_model_mult_lsps_in_path_parallel_links_2.csv")
        model.update_simulation()

        dmd_a_f = model.get_demand_object("A", "F", "dmd_a_f_1")
        int_a_g = model.get_interface_object("A-G", "A")
        int_g_f = model.get_interface_object("G-F", "G")
        int_g_f_2 = model.get_interface_object("G-F_2", "G")
        int_a_b = model.get_interface_object("A-B", "A")
        int_d_e = model.get_interface_object("D-E", "D")
        lsp_b_d_1 = model.get_rsvp_lsp("B", "D", "lsp_b_d_1")
        lsp_b_d_2 = model.get_rsvp_lsp("B", "D", "lsp_b_d_2")
        lsp_d_f_1 = model.get_rsvp_lsp("D", "F", "lsp_d_f_1")

        dmd_a_f_path_1 = [int_a_g, int_g_f]
        dmd_a_f_path_2 = [int_a_g, int_g_f_2]
        dmd_a_f_path_3 = [int_a_b, lsp_b_d_1, lsp_d_f_1]
        dmd_a_f_path_4 = [int_a_b, lsp_b_d_2, lsp_d_f_1]

        self.assertIn(dmd_a_f_path_1, dmd_a_f.path)
        self.assertIn(dmd_a_f_path_2, dmd_a_f.path)
        self.assertIn(dmd_a_f_path_3, dmd_a_f.path)
        self.assertIn(dmd_a_f_path_4, dmd_a_f.path)

        self.assertEqual(4, len(dmd_a_f.path))

        self.assertEqual(80, int_d_e.utilization)
    def test_int_in_SRLG_failed_node(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()

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

        int_a_b.add_to_srlg('new_srlg', model, create_if_not_present=True)
        int_a_b.add_to_srlg('new_srlg_2', model, create_if_not_present=True)
        new_srlg = model.get_srlg_object('new_srlg')

        model.fail_node('A')
        model.fail_srlg('new_srlg')
        model.update_simulation()

        self.assertTrue(new_srlg.failed)
        self.assertTrue(int_a_b.failed)

        model.unfail_srlg('new_srlg')
        model.update_simulation()

        # int_a_b and int_b_a should stay failed since Node('A') is also failed
        self.assertTrue(int_a_b.failed)
        self.assertTrue(int_b_a.failed)
    def test_implied_node(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')

        node_x = model.get_node_object('X')

        self.assertTrue(node_x in model.node_objects)
    def test_remove_interface_from_srlg(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()
        int_a_b = model.get_interface_object('A-to-B', 'A')
        int_b_a = int_a_b.get_remote_interface(model)

        model.add_srlg('new_srlg')
        model.update_simulation()

        int_a_b.add_to_srlg('new_srlg', model)
        model.update_simulation()

        srlg = model.get_srlg_object('new_srlg')

        self.assertIn(int_a_b, srlg.interface_objects)
        self.assertIn(int_b_a, srlg.interface_objects)
        self.assertIn(srlg, int_a_b.srlgs)
        self.assertIn(srlg, int_b_a.srlgs)

        int_b_a.remove_from_srlg('new_srlg', model)
        model.update_simulation()

        self.assertNotIn(int_a_b, srlg.interface_objects)
        self.assertNotIn(int_b_a, srlg.interface_objects)
        self.assertNotIn(srlg, int_a_b.srlgs)
        self.assertNotIn(srlg, int_b_a.srlgs)
    def test_int_in_two_SRLGs(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        int_a_b = model.get_interface_object('A-to-B', 'A')
        model.update_simulation()

        int_a_b.add_to_srlg('new_srlg', model, create_if_not_present=True)
        int_a_b.add_to_srlg('new_srlg_2', model, create_if_not_present=True)
        new_srlg = model.get_srlg_object('new_srlg')
        new_srlg_2 = model.get_srlg_object('new_srlg_2')

        model.fail_srlg('new_srlg')
        model.fail_srlg('new_srlg_2')
        model.update_simulation()

        self.assertTrue(new_srlg.failed)
        self.assertTrue(new_srlg_2.failed)
        self.assertTrue(int_a_b.failed)

        model.unfail_srlg('new_srlg')
        model.update_simulation()

        # node_a should stay failed since it's part of another SRLG
        # that is still failed
        self.assertTrue(int_a_b.failed)
 def test_duplicate_srlg_2(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.add_srlg('new_srlg')
     err_msg = 'SRLG with name new_srlg already exists in Model'
     with self.assertRaises(ModelException) as context:
         model.add_srlg('new_srlg')
     self.assertTrue(err_msg in context.exception.args[0])
    def test_get_ckt(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        ckt = model.get_circuit_object_from_interface('A-to-B', 'A')

        self.assertIn(ckt, model.circuit_objects)
Пример #18
0
    def test_equality(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()
        ckt_1 = model.get_circuit_object_from_interface('A-to-B', 'A')
        int_a, int_b = ckt_1.get_circuit_interfaces(model)

        self.assertNotEqual(int_a, int_b)
    def test_get_bad_dmd(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        with self.assertRaises(ModelException) as context:
            model.get_demand_object('F', 'A', 'bad_demand')
        self.assertIn('no matching demand', context.exception.args[0])
    def test_get_bad_srlg(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')

        err_msg = 'No SRLG with name bad_srlg exists in Model'
        with self.assertRaises(ModelException) as context:
            model.get_srlg_object('bad_srlg')
        self.assertTrue(err_msg in context.exception.args[0])
Пример #21
0
    def test_ckt_non_failure(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()

        ckt_1 = model.get_circuit_object_from_interface('A-to-B', 'A')

        self.assertFalse(ckt_1.failed(model))
Пример #22
0
    def test_traffic_non_failed_int(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()

        int_b_e = model.get_interface_object('B-to-E', 'B')

        self.assertTrue(int_b_e.traffic, 10)
Пример #23
0
 def test_parallel_link_model_repr(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.add_demand('A', 'B', 40, 'dmd_a_b')
     model.update_simulation()
     self.assertEqual(
         self.model.__repr__(),
         'FlexModel(Interfaces: 40, Nodes: 10, Demands: 15, RSVP_LSPs: 4)')
    def test_bad_ckt(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()

        with self.assertRaises(ModelException) as context:
            model.get_circuit_object_from_interface('A-to-Z', 'A')
        self.assertTrue(
            'specified interface does not exist' in context.exception.args[0])
    def test_get_unrouted_dmds(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology.csv')
        model.update_simulation()
        model.fail_node('X')
        model.update_simulation()
        dmd_a_y = model.get_demand_object('A', 'Y', 'dmd_a_y_1')

        self.assertTrue(dmd_a_y, model.get_unrouted_demand_objects())
 def test_all_paths_needed_bw(self):
     model = Parallel_Link_Model.load_model_file(
         'test/parallel_link_model_test_topology.csv')
     model.update_simulation()
     all_paths = model.get_all_paths_reservable_bw('A', 'D', False, 3, 105)
     self.assertEqual(len(all_paths['path']), 1)
     path_lengths = [len(path) for path in all_paths['path']]
     path_lengths.sort()
     self.assertEqual(path_lengths, [2])
Пример #27
0
 def test_parallel_link_model_repr(self):
     model = Parallel_Link_Model.load_model_file(
         "test/parallel_link_model_test_topology.csv")
     model.add_demand("A", "B", 40, "dmd_a_b")
     model.update_simulation()
     self.assertEqual(
         self.model.__repr__(),
         "FlexModel(Interfaces: 40, Nodes: 10, Demands: 15, RSVP_LSPs: 4)",
     )
Пример #28
0
    def test_demands_non_failed(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()

        int_b_e = model.get_interface_object('B-to-E', 'B')
        dmd_a_e_1 = model.get_demand_object('A', 'E', 'dmd_a_e_1')

        self.assertEqual(int_b_e.demands(model), [dmd_a_e_1])
Пример #29
0
    def test_traffic_failed_int(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()
        model.fail_interface('A-to-B', 'A')
        model.update_simulation()

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

        self.assertEqual(int_a_b.traffic, 'Down')
Пример #30
0
    def test_get_ckt(self):
        model = Parallel_Link_Model.load_model_file(
            'test/parallel_link_model_test_topology_igp_only.csv')
        model.update_simulation()
        int_a_b = model.get_interface_object('A-to-B', 'A')

        ckt1 = model.get_circuit_object_from_interface('A-to-B', 'A')
        ckt2 = int_a_b.get_circuit_object(model)

        self.assertEqual(ckt1, ckt2)