示例#1
0
    def testDeletePrevEntries(self):

        log = Log(10**8, 10**8, None)
        iteratorIDs = [0, 1]
        log.initIterators(iteratorIDs, [])

        func = print
        args = [1, 2]
        params_1 = [0, 1, 2, 3, 4, 5]
        shm_name, entry_size = log.createLogEntry(func, args, params_1)
        reference_1 = {}
        reference_1['func'], reference_1['args'] = func, args
        reference_1['logIndex'], reference_1['currentTerm'], reference_1[
            'prevLogIndex'] = params_1[0], params_1[1], params_1[2]
        reference_1['prevLogTerm'], reference_1['commitIndex'], reference_1[
            'leaderID'] = params_1[3], params_1[4], params_1[5]
        reference_1['shm_name'], reference_1['shm_size'], reference_1[
            'isCommitted'] = shm_name, entry_size, False
        params_1_extended = params_1 + [entry_size, False]
        log.addEntry(shm_name, params_1_extended)

        func = print
        args = [2, 3, 4]
        params_2 = [1, 2, 3, 4, 5, 6]
        shm_name, entry_size = log.createLogEntry(func, args, params_2)
        reference_2 = {}
        reference_2['func'], reference_2['args'] = func, args
        reference_2['logIndex'], reference_2['currentTerm'], reference_2[
            'prevLogIndex'] = params_2[0], params_2[1], params_2[2]
        reference_2['prevLogTerm'], reference_2['commitIndex'], reference_2[
            'leaderID'] = params_2[3], params_2[4], params_2[5]
        reference_2['shm_name'], reference_2['shm_size'], reference_2[
            'isCommitted'] = shm_name, entry_size, False
        params_2_extended = params_2 + [entry_size, False]
        log.addEntry(shm_name, params_2_extended)

        entry_0 = log.jump(0, 2, getNode=True)
        self.assertEqualEntry(log, entry_0, reference_2)

        log.deleteAllPrevEntries(entry_0)
        self.assertEqual(len(log), 3, "len(log) should be 3")

        entry_1 = log.jump(1, 2, getNode=True)
        log.deleteAllPrevEntries(entry_0)
        self.assertEqual(len(log), 1, "len(log) should be 1")
        self.assertEqual(log.nodeSizes[0], reference_2['shm_size'],
                         'shm_size does not match for reference')

        log.deleteAllEntries()
        self.assertEqual(len(log), 0, "len(log) should be 0")