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])
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])
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])
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')]")
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])