Exemplo n.º 1
0
    def testWriteNewSlot(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", 'a')
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslots)]

        slotsize = f.fstruct.ft_slsize
        writtendata = "".join(
            [chr(random.randint(0, 255)) for i in xrange(slotsize)])

        f.writeSlot(writtendata)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1
        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        slotdataexpected = slotdatabefore + [writtendata]

        self.assertEqual(len(slotdataexpected), len(slotdata))
        if slotdataexpected != slotdata:
            print "Equal elements", [
                a == b for a, b in zip(slotdataexpected, slotdata)
            ]
        self.assertEqual(slotdataexpected, slotdata)
Exemplo n.º 2
0
    def testWritePage(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", 'a')
        f = db.getFileByIndex(4)
        npages = f.npages
        pagesize = f.fstruct.ft_pgsize

        writtendata = "".join(
            [chr(random.randint(0, 255)) for i in xrange(pagesize)])
        #        import pdb
        #        pdb.set_trace()
        ## Override incomplete page
        f.writePage(writtendata, 1)

        ## Update pz.next so that the incomplete_page buffer won't overwrite the written page
        f.pz.next = f.fstruct.ft_slots * f.page + 1
        assert (f.page == 2)
        assert (f.relslotnum == 0)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        self.assertEqual(f.readPage(1), writtendata)
Exemplo n.º 3
0
    def testWriteSlot(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", 'a')
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslots)]

        slotsize = f.fstruct.ft_slsize
        writtendata = "".join(
            [chr(random.randint(0, 255)) for i in xrange(slotsize)])
        slot = 2
        f.writeSlot(writtendata, slot)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        slotdataexpected = slotdatabefore
        slotdataexpected[slot - 1] = writtendata

        self.assertEqual(slotdataexpected, slotdata)
Exemplo n.º 4
0
    def testOpenAppend(self):
        db = Database(MapDirectory(self.testdatadir), "db00", 'a')
        f = db.getFileByIndex(4)
        nslotsbefore = f.pz.next - 1

        self.assertEqual(nslotsbefore, 3)

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslotsbefore)]

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        self.assertEqual(nslots, nslotsbefore)

        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        self.assertEqual(len(slotdata), len(slotdatabefore))
        if slotdata != slotdatabefore:
            print "Equal elements", [
                a == b for a, b in zip(slotdatabefore, slotdata)
            ]
        self.assertEqual(slotdata, slotdatabefore)
Exemplo n.º 5
0
    def testWriteNewSlot(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", "a")
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslots)]

        slotsize = f.fstruct.ft_slsize
        writtendata = "".join([chr(random.randint(0, 255)) for i in xrange(slotsize)])

        f.writeSlot(writtendata)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1
        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        slotdataexpected = slotdatabefore + [writtendata]

        self.assertEqual(len(slotdataexpected), len(slotdata))
        if slotdataexpected != slotdata:
            print "Equal elements", [a == b for a, b in zip(slotdataexpected, slotdata)]
        self.assertEqual(slotdataexpected, slotdata)
Exemplo n.º 6
0
    def testOpenWrite(self):
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        f.close()
        f.open('w')
        nslotsbefore = f.pz.next - 1

        self.assertEqual(nslotsbefore, 0)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", 'r')
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        self.assertEqual(nslots, 0)
Exemplo n.º 7
0
    def testOpenWrite(self):
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        f.close()
        f.open("w")
        nslotsbefore = f.pz.next - 1

        self.assertEqual(nslotsbefore, 0)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        self.assertEqual(nslots, 0)
Exemplo n.º 8
0
    def testWriteSlot(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", "a")
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslots)]

        slotsize = f.fstruct.ft_slsize
        writtendata = "".join([chr(random.randint(0, 255)) for i in xrange(slotsize)])
        slot = 2
        f.writeSlot(writtendata, slot)

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        slotdataexpected = slotdatabefore
        slotdataexpected[slot - 1] = writtendata

        self.assertEqual(slotdataexpected, slotdata)
Exemplo n.º 9
0
    def testWritePage(self):
        random.seed(0)
        db = Database(MapDirectory(self.testdatadir), "db00", "a")
        f = db.getFileByIndex(4)
        npages = f.npages
        pagesize = f.fstruct.ft_pgsize

        writtendata = "".join([chr(random.randint(0, 255)) for i in xrange(pagesize)])
        #        import pdb
        #        pdb.set_trace()
        ## Override incomplete page
        f.writePage(writtendata, 1)

        ## Update pz.next so that the incomplete_page buffer won't overwrite the written page
        f.pz.next = f.fstruct.ft_slots * f.page + 1
        assert f.page == 2
        assert f.relslotnum == 0

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        self.assertEqual(f.readPage(1), writtendata)
Exemplo n.º 10
0
    def testOpenAppend(self):
        db = Database(MapDirectory(self.testdatadir), "db00", "a")
        f = db.getFileByIndex(4)
        nslotsbefore = f.pz.next - 1

        self.assertEqual(nslotsbefore, 3)

        slotdatabefore = [f.readSlot(i + 1) for i in range(nslotsbefore)]

        db.close()

        ## Read back
        db = Database(MapDirectory(self.testdatadir), "db00", "r")
        f = db.getFileByIndex(4)
        nslots = f.pz.next - 1

        self.assertEqual(nslots, nslotsbefore)

        slotdata = [f.readSlot(i + 1) for i in range(nslots)]

        self.assertEqual(len(slotdata), len(slotdatabefore))
        if slotdata != slotdatabefore:
            print "Equal elements", [a == b for a, b in zip(slotdatabefore, slotdata)]
        self.assertEqual(slotdata, slotdatabefore)