def testLinkDown(self): #SimBGP.runConfigFile("../../config/igp_config.cfg") SimBGP.runConfigFile("igp_config.cfg") SimBGP._event_Scheduler.add( SimBGP.CEvent(SimBGP.toSystemTime(100.0), ["3", "2"], SimBGP.EVENT_LINK_DOWN)) SimBGP.run() self.assertEqual(SimBGP._igp_graph.getShortestPathLength("3", "2"), 2000)
def testLinkDown(self): """Checking behaviour when an IGP link is down""" for mode in self.bgp_modes: SimBGP.init() #SimBGP.readConfigFile("../../config/plain_hot_potato.cfg") SimBGP.readConfigFile("plain_hot_potato.cfg") SimBGP.BGPModeAllRouters(mode) SimBGP.computeIGP() SimBGP.run() self.assertEqual( SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach, SimBGP.PEER_REACH) #Check that each router prefers path via itself self.assertEqual( SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid, "0.0.0.0") self.assertEqual( SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid, "0.0.0.0") #Check that each receiving router prefers eBGP path self.assertEqual( SimBGP._router_list["0.0.0.3"].loc_rib["1.0/8"][0].src_pid, "1.0.0.0") self.assertEqual( SimBGP._router_list["0.0.0.0"].loc_rib["1.0/8"][0].src_pid, "2.0.0.0") #Link down SimBGP._event_Scheduler.add( SimBGP.CEvent(SimBGP.toSystemTime(10.0), ["0.0.0.1", "0.0.0.2"], SimBGP.EVENT_LINK_DOWN)) SimBGP.run() self.assertEqual( SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach, SimBGP.PEER_UNREACH) self.assertEqual( SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid, "0.0.0.3") self.assertEqual( SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid, "0.0.0.0") #Check that each receiving router prefers eBGP path self.assertEqual( SimBGP._router_list["0.0.0.3"].loc_rib["1.0/8"][0].src_pid, "1.0.0.0") self.assertEqual( SimBGP._router_list["0.0.0.0"].loc_rib["1.0/8"][0].src_pid, "2.0.0.0") #Check Link Up SimBGP._event_Scheduler.add( SimBGP.CEvent(SimBGP.toSystemTime(11.0), ["0.0.0.1", "0.0.0.2"], SimBGP.EVENT_LINK_UP)) SimBGP.run() self.assertTrue( SimBGP._igp_graph.isReachableFrom("0.0.0.1", "0.0.0.2")) self.assertEqual( SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach, SimBGP.PEER_REACH) self.assertEqual( SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid, "0.0.0.0") self.assertEqual( SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid, "0.0.0.0")