Beispiel #1
0
    def __init__(self):

        self.neigh = Neighbour()
Beispiel #2
0
 def setUp(self):
     self.neighbour = Neighbour(max_neigh=MAX_NEIGHBOUR)
     self.observer = NeighbourObserver(who=self.neighbour)
Beispiel #3
0
 def setUp(self):
     self.neighbour = Neighbour(max_neigh=MAX_NEIGHBOUR)
     self.observer = NeighbourObserver(who=self.neighbour)
Beispiel #4
0
class TestNeighbour(unittest.TestCase):

    def setUp(self):
        self.neighbour = Neighbour(max_neigh=MAX_NEIGHBOUR)
        self.observer = NeighbourObserver(who=self.neighbour)

    def testEmptyNeighbourList(self):
        '''Empty neighbour list'''
        self.failUnlessEqual(self.neighbour.neigh_list(), [])
        self.failUnlessEqual(self.neighbour.ip_to_neigh(IP), None)

    def testAddNeighbour(self):
        '''Add a new neighbour'''
        ip_table = {IP: NEIGH}
        self.neighbour.netid_table[IP] = NETID
        self.neighbour.store(ip_table)

        n = self.neighbour.neigh_list()[0]
        self.failUnlessEqual(n, NEIGH)

        self.failUnlessEqual(self.neighbour.ip_to_neigh(IP).values(),
                             NEIGH.values())

        self.failUnlessEqual(NEIGH.values(),
                             self.observer.neigh_new_event.values())

    def testDeleteNeighbour(self):
        '''Delete a neighbour'''
        self.testAddNeighbour()

        self.neighbour.delete(IP)
        self.failUnlessEqual(self.neighbour.neigh_list(), [])

        deleted_neighbour = copy.copy(NEIGH)
        deleted_neighbour.devs = deleted_neighbour.bestdev = None
        deleted_neighbour.rem = DeadRem()
        self.failUnlessEqual(deleted_neighbour.values(),
                             self.observer.neigh_deleted_event.values())

    def testChangeNeighbourRem(self):
        '''Change neighbour REM'''
        self.testAddNeighbour()
        changed_neighbour = Neigh(bestdev=('eth0', 8),
                                  devs={'eth0': 8},
                                  ip=IP,
                                  idn=1)
        ip_table = {IP:changed_neighbour}
        self.neighbour.store(ip_table)

        n = self.neighbour.neigh_list()[0]
        self.failUnlessEqual(n.rem.value, 8)

        (neighbour_observed,
         rem_observed) = self.observer.neigh_rem_chged_event
        self.failUnlessEqual(NEIGH.values(),
                             neighbour_observed.values())
        self.failUnlessEqual(rem_observed.value, 8)

    def testNeighbourIPChange(self):
        '''Neighbour IP change'''
        self.testAddNeighbour()
        new_ip = 84281096
        new_neighbour = copy.copy(NEIGH)
        new_neighbour.ip = new_ip

        self.neighbour.ip_change(IP, new_ip)

        self.failUnlessEqual(self.neighbour.ip_to_neigh(IP), None)
        self.failUnlessEqual(self.neighbour.ip_to_neigh(new_ip),
                             new_neighbour)

        self.failUnlessEqual(new_neighbour.values(),
                             self.observer.neigh_new_event.values())

    def testFindHoleInTranslationTable(self):
        '''Find hole in traslation table'''
        self.failUnlessEqual(self.neighbour._find_hole_in_tt(), 1)
        self.testAddNeighbour()
        self.failUnlessEqual(self.neighbour._find_hole_in_tt(), 2)

    def testTruncate(self):
        '''Truncate ip_table'''
        neighbours = [Neigh(bestdev=('eth0', randint(1,100)),
                            devs=None,
                            ip=randint(0, 2**32 -1),
                            netid=NETID,
                            idn=1) for _ in range(10)]

        ip_table = dict([(n.ip, n) for n in neighbours])

        f = lambda neighbour: neighbour.bestdev[1] # Get Rem value from
                                                   # the neighbour to sort
                                                   # properly neighbours list
        neighbours.sort(key=f)
        neighbours = neighbours[:MAX_NEIGHBOUR]
        best_neighbours_ip_table = dict([(n.ip, n) for n in neighbours])

        trunc_ip_table, truncated = self.neighbour._truncate(ip_table)

        self.failUnlessEqual(trunc_ip_table, best_neighbours_ip_table)
Beispiel #5
0
class TestNeighbour(unittest.TestCase):
    def setUp(self):
        self.neighbour = Neighbour(max_neigh=MAX_NEIGHBOUR)
        self.observer = NeighbourObserver(who=self.neighbour)

    def testEmptyNeighbourList(self):
        '''Empty neighbour list'''
        self.failUnlessEqual(self.neighbour.neigh_list(), [])
        self.failUnlessEqual(self.neighbour.ip_to_neigh(IP), None)

    def testAddNeighbour(self):
        '''Add a new neighbour'''
        ip_table = {IP: NEIGH}
        self.neighbour.netid_table[IP] = NETID
        self.neighbour.store(ip_table)

        n = self.neighbour.neigh_list()[0]
        self.failUnlessEqual(n, NEIGH)

        self.failUnlessEqual(
            self.neighbour.ip_to_neigh(IP).values(), NEIGH.values())

        self.failUnlessEqual(NEIGH.values(),
                             self.observer.neigh_new_event.values())

    def testDeleteNeighbour(self):
        '''Delete a neighbour'''
        self.testAddNeighbour()

        self.neighbour.delete(IP)
        self.failUnlessEqual(self.neighbour.neigh_list(), [])

        deleted_neighbour = copy.copy(NEIGH)
        deleted_neighbour.devs = deleted_neighbour.bestdev = None
        deleted_neighbour.rem = DeadRem()
        self.failUnlessEqual(deleted_neighbour.values(),
                             self.observer.neigh_deleted_event.values())

    def testChangeNeighbourRem(self):
        '''Change neighbour REM'''
        self.testAddNeighbour()
        changed_neighbour = Neigh(bestdev=('eth0', 8),
                                  devs={'eth0': 8},
                                  ip=IP,
                                  idn=1)
        ip_table = {IP: changed_neighbour}
        self.neighbour.store(ip_table)

        n = self.neighbour.neigh_list()[0]
        self.failUnlessEqual(n.rem.value, 8)

        (neighbour_observed,
         rem_observed) = self.observer.neigh_rem_chged_event
        self.failUnlessEqual(NEIGH.values(), neighbour_observed.values())
        self.failUnlessEqual(rem_observed.value, 8)

    def testNeighbourIPChange(self):
        '''Neighbour IP change'''
        self.testAddNeighbour()
        new_ip = 84281096
        new_neighbour = copy.copy(NEIGH)
        new_neighbour.ip = new_ip

        self.neighbour.ip_change(IP, new_ip)

        self.failUnlessEqual(self.neighbour.ip_to_neigh(IP), None)
        self.failUnlessEqual(self.neighbour.ip_to_neigh(new_ip), new_neighbour)

        self.failUnlessEqual(new_neighbour.values(),
                             self.observer.neigh_new_event.values())

    def testFindHoleInTranslationTable(self):
        '''Find hole in traslation table'''
        self.failUnlessEqual(self.neighbour._find_hole_in_tt(), 1)
        self.testAddNeighbour()
        self.failUnlessEqual(self.neighbour._find_hole_in_tt(), 2)

    def testTruncate(self):
        '''Truncate ip_table'''
        neighbours = [
            Neigh(bestdev=('eth0', randint(1, 100)),
                  devs=None,
                  ip=randint(0, 2**32 - 1),
                  netid=NETID,
                  idn=1) for _ in range(10)
        ]

        ip_table = dict([(n.ip, n) for n in neighbours])

        f = lambda neighbour: neighbour.bestdev[1]  # Get Rem value from
        # the neighbour to sort
        # properly neighbours list
        neighbours.sort(key=f)
        neighbours = neighbours[:MAX_NEIGHBOUR]
        best_neighbours_ip_table = dict([(n.ip, n) for n in neighbours])

        trunc_ip_table, truncated = self.neighbour._truncate(ip_table)

        self.failUnlessEqual(trunc_ip_table, best_neighbours_ip_table)