def testDomainIsolation(self): #Create two connected domains myNet = SimBGP.CIGPNetwork() myNet.addRouter("1", 1) myNet.addRouter("2", 1) myNet.addRouter("3", 2) myNet.addRouter("4", 2) myNet.addIGPLink("1", "2", 1500) myNet.addIGPLink("3", "4") myNet.addIGPLink("2", "3") myNet.compute() self.assertFalse(myNet.isReachableFrom("1", "4")) self.assertFalse(myNet.isReachableFrom("4", "1")) #1 can join 3 because 3 is ASBR self.assertTrue(myNet.isReachableFrom("1", "3")) #3 cannot join 1 because 1 is not ASBR of AS1 self.assertFalse(myNet.isReachableFrom("3", "1")) #2 ASBR => must be reachable self.assertTrue(myNet.isReachableFrom("2", "3")) #4 is not ASBR => not joignable from outside self.assertFalse(myNet.isReachableFrom("2", "4")) #2 is an ASBR self.assertTrue(myNet.isReachableFrom("4", "2")) #Reg link self.assertTrue(myNet.isReachableFrom("3", "2")) self.assertTrue(myNet.isReachableFrom("2", "3")) #Inside domains self.assertTrue(myNet.isReachableFrom("1", "2")) self.assertTrue(myNet.isReachableFrom("3", "4")) self.assertTrue(myNet.isReachableFrom("2", "1")) self.assertTrue(myNet.isReachableFrom("4", "3"))
def testGetLink(self): myNet = SimBGP.CIGPNetwork() myNet.addRouter("1", 1) myNet.addRouter("2", 1) myNet.addRouter("3", 1) myNet.addIGPLink("1", "2", 1500) myNet.addIGPLink("2", "3") myNet.addIGPLink("1", "3") myNet.compute() self.assertEqual(myNet.getIGPLink("3", "1").cost, 500) self.assertEqual(myNet.getIGPLink("3", "2").cost, 500) self.assertEqual(myNet.getIGPLink("1", "2").cost, 1500)
def testUnreachability(self): #Create unconnected network myNet = SimBGP.CIGPNetwork() myNet.addRouter("1", 1) myNet.addRouter("2", 1) myNet.addRouter("4", 1) myNet.addRouter("5", 1) myNet.addIGPLink("1", "2", 1500) myNet.addIGPLink("4", "5") myNet.compute() self.assertFalse(myNet.isReachableFrom("1", "5")) self.assertFalse(myNet.isReachableFrom("5", "1")) self.assertEquals(myNet.getShortestPathLength("1", "5"), None)
def testDelayBetweenRouters(self): myNet = SimBGP.CIGPNetwork() myNet.addRouter("1", 1) myNet.addRouter("2", 1) myNet.addRouter("3", 1) myNet.addIGPLink("1", "2", 1500) myNet.addIGPLink("2", "3") myNet.addIGPLink("3", "1") myNet.compute() #Link delay must be twice the default delay with a cost of 1 # See class IGP Link test self.assertEqual(myNet.getPathTransmissionDelay("1", "2", 100000000), 2 * 1000000 * (5.0 / 3000.0 + 1.0))
def testIGPShortestPath(self): myNet = SimBGP.CIGPNetwork() myNet.addRouter("1", 1) myNet.addRouter("2", 1) myNet.addRouter("3", 1) myNet.addIGPLink("1", "2", 1500) myNet.addIGPLink("2", "3", 500) myNet.addIGPLink("3", "1", 500) myNet.compute() self.assertEqual(myNet.getShortestPathLength("1", "2"), myNet.getShortestPathLength("2", "1")) self.assertEqual(myNet.getShortestPathLength("1", "2"), myNet.getShortestPathLength("2", "1")) self.assertEqual(myNet.getShortestPathLength("1", "2"), 1000) self.assertEqual(myNet.getShortestPathLength("1", "3"), 500) self.assertEqual(myNet.getShortestPathLength("3", "1"), 500) self.assertEqual(myNet.getShortestPathLength("3", "2"), 500)