Example #1
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:
            Model.load_model_file('test/model_bad_node_in_lsp.csv')
        self.assertIn(err_msg, context.exception.args[0])
Example #2
0
    def test_get_bad_dmd(self):
        model = Model.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])
Example #3
0
    def test_get_ckt(self):
        model = Model.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)
Example #4
0
    def test_demands_non_failed_int(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')

        self.assertTrue(int_a_b.demands(model) != [])
Example #5
0
    def test_ckt_non_failure(self):
        model = Model.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))
Example #6
0
    def test_equality(self):
        model = Model.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)
Example #7
0
    def test_remove_interface_from_srlg(self):
        model = Model.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)
Example #8
0
 def test_ckt_mismatch_int_capacity_file_load(self):
     err_msg = 'circuits_with_mismatched_interface_capacity'
     model = Model.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())
Example #9
0
 def test_duplicate_srlg_2(self):
     model = Model.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])
Example #10
0
    def test_failed_int_node_srlg(self):
        model = Model.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)
Example #11
0
    def test_get_bad_srlg(self):
        model = Model.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])
Example #12
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 = 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([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')
    def test_shortest_path(self):
        model = Model.load_model_file('test/lsp_configured_setup_bw_model.csv')
        model.update_simulation()
        lsp_a_d_3 = model.get_rsvp_lsp('A', 'D', 'lsp_a_d_3')

        self.assertEqual(len(lsp_a_d_3.path['interfaces']), 1)
        self.assertEqual(lsp_a_d_3.path['interfaces'][0]._key, ('A-to-D', 'A'))
Example #14
0
    def test_get_unrouted_dmds(self):
        model = Model.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())
Example #15
0
    def test_demands_non_failed(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')
        dmd_a_f_1 = model.get_demand_object('A', 'F', 'dmd_a_f_1')

        self.assertEqual(int_a_b.demands(model), [dmd_a_f_1])
Example #16
0
    def test_bad_ckt(self):
        model = Model.load_model_file('test/igp_routing_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])
Example #17
0
 def test_all_paths_needed_bw(self):
     model = Model.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])
Example #18
0
    def test_srlg_uniqueness_in_node_srlgs(self):
        model = Model.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)
        new_srlg = model.get_srlg_object('new_srlg')

        self.assertTrue(new_srlg in node_a.srlgs)
Example #19
0
    def test_get_bad_node(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        err_msg = 'No node with name ZZ exists in the model'

        with self.assertRaises(ModelException) as context:
            model.get_node_object('ZZ')
        self.assertTrue(err_msg in context.exception.args[0])
Example #20
0
    def test_add_node_to_new_srlg_create(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        node_a = model.get_node_object('A')

        node_a.add_to_srlg('new_srlg', model, create_if_not_present=True)
        srlg = model.get_srlg_object('new_srlg')

        self.assertIn(node_a, model.get_srlg_object('new_srlg').node_objects)
        self.assertIn(srlg, node_a.srlgs)
Example #21
0
 def test_legacy_model_repr(self):
     """
     Tests the legacy Model class instantiation
     """
     model = Model.load_model_file('test/model_test_topology.csv')
     self.assertEqual(
         model.__repr__(),
         'PerformanceModel(Interfaces: 18, Nodes: 7, Demands: 4, RSVP_LSPs: 3)'
     )
Example #22
0
    def setUpClass(self):
        self.model = Model.load_model_file('test/model_test_topology_2.csv')

        self.lsp_a_d_1 = self.model.get_rsvp_lsp('A', 'D', 'lsp_a_d_1')
        self.lsp_e_a_1 = self.model.get_rsvp_lsp('E', 'A', 'lsp_e_a_1')
        self.int_a_d = self.model.get_interface_object('A-to-D', 'A')
        self.dmd_a_d_1 = self.model.get_demand_object('A', 'D', 'dmd_a_d_1')

        self.model.update_simulation()
Example #23
0
    def test_remove_node_bad_srlg(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        node_a = model.get_node_object('A')

        err_msg = 'An SRLG with name bad_srlg does not exist in the Model'

        with self.assertRaises(ModelException) as context:
            node_a.remove_from_srlg('bad_srlg', model)
        self.assertTrue(err_msg in context.exception.args[0])
Example #24
0
    def test_traffic_failed_int(self):
        model = Model.load_model_file('test/igp_routing_topology.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')
Example #25
0
 def test_get_failed_ints_2(self):
     model = Model.load_model_file('test/model_test_topology.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')
     int_b_a = model.get_interface_object('B-to-A', 'B')
     failed_int_list = model.get_failed_interface_objects()
     self.assertEqual(set(failed_int_list), set([int_a_b, int_b_a]))
Example #26
0
    def test_get_ckt(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')

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

        self.assertEqual(ckt1, ckt2)
Example #27
0
    def test_int_name_change(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

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

        model.change_interface_name('A', 'A-to-B', 'A-to-B-changed')

        self.assertEqual(interface.name, 'A-to-B-changed')
Example #28
0
    def test_get_bad_lsp(self):
        model = Model.load_model_file('test/igp_routing_topology.csv')
        model.update_simulation()

        err_msg = "LSP with source node A, dest node B, and name bad_lsp does not exist in model"

        with self.assertRaises(ModelException) as context:
            model.get_rsvp_lsp('A', 'B', 'bad_lsp')
        self.assertIn(err_msg, context.exception.args[0])
Example #29
0
    def test_add_duplicate_lsp(self):
        model = Model.load_model_file('test/model_test_topology.csv')
        model.update_simulation()

        err_msg = 'already exists in rsvp_lsp_objects'

        with self.assertRaises(ModelException) as context:
            model.add_rsvp_lsp('F', 'E', 'lsp_f_e_1')
        self.assertIn(err_msg, context.exception.args[0])
Example #30
0
def open_file():
    """Opens the file that describes the Model and allows user to save
    a diagram of the network graph"""
    if selected_model_file.get() == '':
        selected_model_file.set(
            filedialog.askopenfilename(initialdir="/",
                                       title="Select file",
                                       filetypes=(("csv files", "*.csv"),
                                                  ("all files", "*.*"))))

    global model

    selected_file_label = ttk.Label(label_frame, text="Network Model file is:")
    selected_file_label.grid(row=1, column=0, sticky='W')
    selected_file_display = ttk.Label(label_frame, text=' ' * 30)
    selected_file_display = ttk.Label(label_frame,
                                      text=selected_model_file.get())
    selected_file_display.grid(row=6, column=0)

    if selected_model_file.get() != '':
        model = Model.load_model_file(selected_model_file.get())
        model.update_simulation()

        model_status_label = ttk.Label(label_frame, text="Model is:")
        model_status_label.grid(row=8, column=0, sticky='W')
        model_file_display = ttk.Label(label_frame, text=model)
        model_file_display.grid(row=9, column=0, sticky='W')

        # Update the Node Explorer tab
        examine_selected_node()

        # Update the Demand Explorer tab
        examine_selected_demand()

        # Update the Interface Explorer tab
        examine_selected_interface()

        # Update the Path Explorer tab
        examine_paths()

        # Update the LSP Explorer tab
        examine_selected_lsp()

    # Create a button to produce a network graph
    graph_network_button = Button(label_frame)
    graph_network_button.grid(row=12, column=0, padx=5, pady=5, sticky='W')
    graph_network_button["text"] = "Push to create network graph"
    # Don't add the trailing () or this will execute immediately/automatically

    graph_network_button[
        "command"] = create_interactive_network_graph_and_refresh

    if network_graph_file.get() != '':
        graph_label_text = "Graph file saved at: " + network_graph_file.get()
        graph_file_label = Label(label_frame, text=graph_label_text)
        graph_file_label.grid(row=13, column=0, sticky='W')