def testPrefixWithdrawal(self): """Testing that prefix are unreachable by all routers after prefix withdrawal""" #Same as above. Withdraw prefix after some time, and check that no one has a path for mode in self.bgp_modes: SimBGP.init() #SimBGP.readConfigFile("../../config/plain_bgp_base_topo.cfg") SimBGP.readConfigFile("plain_bgp_base_topo.cfg") SimBGP.BGPModeAllRouters(mode) SimBGP.computeIGP() SimBGP.run() for router in SimBGP._router_list: self.assertNotEqual( len(SimBGP._router_list[router].loc_rib["2.0/8"]), 0) SimBGP._event_Scheduler.add( SimBGP.CEvent(SimBGP._systime, ["2.1", "2.0/8"], SimBGP.EVENT_WITHDRAW_PREFIX)) SimBGP.run() for router in SimBGP._router_list: try: self.assertEqual( len(SimBGP._router_list[router].loc_rib["2.0/8"]), 0) except: print("Assertion failed with router", router, "in mode", mode) raise
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 testPrefixWithdrawal(self): """Testing that prefix are unreachable by all routers after prefix withdrawal""" #Same as above. Withdraw prefix after some time, and check that no one has a path #SimBGP.runConfigFile("../../config/plain_bgp_base_topo.cfg") SimBGP.runConfigFile("plain_bgp_base_topo.cfg") SimBGP._event_Scheduler.add( SimBGP.CEvent(SimBGP._systime, ["2.1", "2.0/8"], SimBGP.EVENT_WITHDRAW_PREFIX)) SimBGP.run() for router in SimBGP._router_list: self.assertEqual(len(SimBGP._router_list[router].loc_rib["2.0/8"]), 0)
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")