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)
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)
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)
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)
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)
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)
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)
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)
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)
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)