def test_interface_fields_missing_model_file_load(self):
     err_msg = "node_name, remote_node_name, name, cost, and capacity must be defined for line"
     with self.assertRaises(ModelException) as context:
         PerformanceModel.load_model_file(
             "test/interface_field_info_missing_routing_topology.csv"
         )
     self.assertTrue(err_msg in err_msg in context.exception.args[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')
Ejemplo n.º 3
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:
            PerformanceModel.load_model_file('test/model_bad_node_in_lsp.csv')
        self.assertIn(err_msg, context.exception.args[0])
Ejemplo n.º 4
0
    def test_demand_behavior(self):
        model = PerformanceModel.load_model_file(
            "test/igp_routing_topology.csv")

        model.update_simulation()

        dmd_a_f = model.get_demand_object("A", "F", "dmd_a_f_1")

        # Demand routes initially
        self.assertNotEqual(dmd_a_f.path, "Unrouted")

        # Demand should not route if source node is down
        model.fail_node("A")
        model.update_simulation()
        self.assertEqual(dmd_a_f.path, "Unrouted")

        # Demand should route when source node unfails
        model.unfail_node("A")
        model.update_simulation()
        self.assertNotEqual(dmd_a_f.path, "Unrouted")

        # Demand should not route when dest node fails
        model.fail_node("F")
        model.update_simulation()
        self.assertEqual(dmd_a_f.path, "Unrouted")

        # Demand should route when dest node unfails
        model.unfail_node("F")
        model.update_simulation()
        self.assertNotEqual(dmd_a_f.path, "Unrouted")
    def test_model_load_perf_model(self):
        model = PerformanceModel.load_model_file(
            'test/lsp_manual_metric_test_model.csv')
        model.update_simulation()
        lsp_a_d_1 = model.get_rsvp_lsp('A', 'D', 'lsp_a_d_1')
        lsp_a_d_2 = model.get_rsvp_lsp('A', 'D', 'lsp_a_d_2')
        lsp_a_d_3 = model.get_rsvp_lsp('A', 'D', 'lsp_a_d_3')
        lsp_a_d_4 = model.get_rsvp_lsp('A', 'D', 'lsp_a_d_4')

        self.assertEqual(lsp_a_d_1.effective_metric(model), 5)
        self.assertEqual(lsp_a_d_1.manual_metric, 5)
        self.assertEqual(lsp_a_d_1.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_1.configured_setup_bandwidth, 4)
        self.assertEqual(lsp_a_d_1.setup_bandwidth, 4)
        self.assertNotEqual(lsp_a_d_1.path, 'Unrouted')

        self.assertEqual(lsp_a_d_2.effective_metric(model), 10)
        self.assertEqual(lsp_a_d_2.manual_metric, 10)
        self.assertEqual(lsp_a_d_2.topology_metric(model), 40)
        self.assertNotEqual(lsp_a_d_2.path, 'Unrouted')

        self.assertEqual(lsp_a_d_3.effective_metric(model), 40)
        self.assertEqual(lsp_a_d_3.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_3.manual_metric, 'not set')
        self.assertNotEqual(lsp_a_d_3.path, 'Unrouted')

        self.assertEqual(lsp_a_d_4.effective_metric(model), 40)
        self.assertEqual(lsp_a_d_4.manual_metric, 'not set')
        self.assertEqual(lsp_a_d_4.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_4.configured_setup_bandwidth, 4)
        self.assertEqual(lsp_a_d_4.setup_bandwidth, 4)
        self.assertNotEqual(lsp_a_d_4.path, 'Unrouted')
    def test_get_bad_dmd(self):
        model = PerformanceModel.load_model_file("test/igp_routing_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_ckt(self):
        model = PerformanceModel.load_model_file("test/igp_routing_topology.csv")
        model.update_simulation()

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

        self.assertIn(ckt, model.circuit_objects)
Ejemplo n.º 8
0
    def test_traffic_non_failed_int(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')

        self.assertTrue(int_a_b.traffic, 20)
 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')
Ejemplo n.º 10
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)
Ejemplo n.º 11
0
    def test_ckt_non_failure(self):
        model = PerformanceModel.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

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

        self.assertFalse(ckt_1.failed(model))
Ejemplo n.º 12
0
 def test_ckt_mismatch_int_capacity_file_load(self):
     err_msg = 'circuits_with_mismatched_interface_capacity'
     model = PerformanceModel.load_model_file(
         'test/mismatched_ckt_int_capacity_topology_file.csv')
     with self.assertRaises(ModelException) as context:
         model.update_simulation()
     self.assertTrue(err_msg in context.exception.args[0][1][0].keys())
Ejemplo n.º 13
0
    def test_equality(self):
        model = PerformanceModel.load_model_file('test/igp_routing_topology.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)
Ejemplo n.º 14
0
 def test_failed_node_interfaces(self):
     model = PerformanceModel.load_model_file(
         'test/model_test_topology.csv')
     model.update_simulation()
     model.fail_node('A')
     model.update_simulation()
     self.assertEqual(len(model.get_failed_interface_objects()), 8)
Ejemplo n.º 15
0
    def test_int_in_SRLG_failed_node(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")
        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_node_in_two_srlgs(self):
        model = PerformanceModel.load_model_file(
            'test/igp_routing_topology.csv')
        node_a = model.get_node_object('A')
        model.update_simulation()

        node_a.add_to_srlg('new_srlg', model, create_if_not_present=True)
        node_a.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(node_a.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(node_a.failed)
Ejemplo n.º 17
0
    def test_get_bad_srlg_no_exception(self):
        model = PerformanceModel.load_model_file(
            "test/igp_routing_topology.csv")

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

        self.assertEqual(bad_srlg, None)
Ejemplo n.º 18
0
    def test_int_in_two_SRLGs(self):
        model = PerformanceModel.load_model_file(
            "test/igp_routing_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)
Ejemplo n.º 19
0
    def test_failed_int_node_srlg(self):
        model = PerformanceModel.load_model_file(
            "test/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_model_load_perf_model(self):
        model = PerformanceModel.load_model_file(
            "test/lsp_manual_metric_test_model.csv")
        model.update_simulation()
        lsp_a_d_1 = model.get_rsvp_lsp("A", "D", "lsp_a_d_1")
        lsp_a_d_2 = model.get_rsvp_lsp("A", "D", "lsp_a_d_2")
        lsp_a_d_3 = model.get_rsvp_lsp("A", "D", "lsp_a_d_3")
        lsp_a_d_4 = model.get_rsvp_lsp("A", "D", "lsp_a_d_4")

        self.assertEqual(lsp_a_d_1.effective_metric(model), 5)
        self.assertEqual(lsp_a_d_1.manual_metric, 5)
        self.assertEqual(lsp_a_d_1.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_1.configured_setup_bandwidth, 4)
        self.assertEqual(lsp_a_d_1.setup_bandwidth, 4)
        self.assertNotEqual(lsp_a_d_1.path, "Unrouted")

        self.assertEqual(lsp_a_d_2.effective_metric(model), 10)
        self.assertEqual(lsp_a_d_2.manual_metric, 10)
        self.assertEqual(lsp_a_d_2.topology_metric(model), 40)
        self.assertNotEqual(lsp_a_d_2.path, "Unrouted")

        self.assertEqual(lsp_a_d_3.effective_metric(model), 40)
        self.assertEqual(lsp_a_d_3.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_3.manual_metric, "not set")
        self.assertNotEqual(lsp_a_d_3.path, "Unrouted")

        self.assertEqual(lsp_a_d_4.effective_metric(model), 40)
        self.assertEqual(lsp_a_d_4.manual_metric, "not set")
        self.assertEqual(lsp_a_d_4.topology_metric(model), 40)
        self.assertEqual(lsp_a_d_4.configured_setup_bandwidth, 4)
        self.assertEqual(lsp_a_d_4.setup_bandwidth, 4)
        self.assertNotEqual(lsp_a_d_4.path, "Unrouted")
Ejemplo n.º 21
0
 def test_fail_node(self):
     model = PerformanceModel.load_model_file(
         'test/model_test_topology.csv')
     model.update_simulation()
     model.fail_node('A')
     model.update_simulation()
     self.assertTrue(model.get_node_object('A').failed)
Ejemplo n.º 22
0
    def test_remove_interface_from_srlg(self):
        model = PerformanceModel.load_model_file(
            "test/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_interface_in_failed_srlg(self):
        model = PerformanceModel.load_model_file(
            'test/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)
        self.assertFalse(int_a_b.failed)
        self.assertFalse(int_b_a.failed)

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

        self.assertTrue(int_a_b.failed)
        self.assertTrue(int_b_a.failed)
Ejemplo n.º 24
0
 def test_get_unfailed_ints_2(self):
     model = PerformanceModel.load_model_file(
         'test/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()), 16)
 def test_duplicate_srlg(self):
     model = PerformanceModel.load_model_file(
         'test/igp_routing_topology.csv')
     SRLG('new_srlg', model)
     err_msg = 'SRLG with name new_srlg already exists in Model'
     with self.assertRaises(ModelException) as context:
         SRLG('new_srlg', model)
     self.assertTrue(err_msg in context.exception.args[0])
Ejemplo n.º 26
0
 def test_duplicate_srlg_2(self):
     model = PerformanceModel.load_model_file(
         "test/igp_routing_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])
Ejemplo n.º 27
0
    def test_get_bad_srlg(self):
        model = PerformanceModel.load_model_file(
            "test/igp_routing_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])
 def test_all_paths_needed_bw(self):
     model = PerformanceModel.load_model_file("test/model_test_topology.csv")
     model.update_simulation()
     all_paths = model.get_all_paths_reservable_bw("A", "D", False, 10)
     self.assertEqual(len(all_paths["path"]), 4)
     path_lengths = [len(path) for path in all_paths["path"]]
     path_lengths.sort()
     self.assertEqual(path_lengths, [1, 2, 2, 3])
Ejemplo n.º 29
0
    def test_get_bad_dmd(self):
        model = PerformanceModel.load_model_file(
            'test/igp_routing_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_unrouted_dmds(self):
        model = PerformanceModel.load_model_file("test/igp_routing_topology.csv")
        model.update_simulation()
        model.fail_node("D")
        model.update_simulation()
        dmd_a_f = model.get_demand_object("A", "F", "dmd_a_f_1")

        self.assertTrue(dmd_a_f, model.get_unrouted_demand_objects())