Exemplo n.º 1
0
 def c(self):
     f = File()
     s = Shelf(f)
     f.seek(0)
     p = Shelf(f)
     f.seek(0)
     q = Shelf(f)
Exemplo n.º 2
0
 def packer():
     yield "started %s" % datetime.now()
     items = self.gen_oid_record(start_oid=int8_to_str(0))
     for step in Shelf.generate_shelf(file, items):
         yield step
     file.flush()
     file.fsync()
     shelf = Shelf(file)
     yield "base written %s" % datetime.now()
     # Invalidate oids that have been removed.
     for hole in shelf.get_offset_map().gen_holes():
         yield hole
         oid = int8_to_str(hole)
         if self.shelf.get_position(oid) is not None:
             assert shelf.get_position(oid) is None
             self.invalid.add(oid)
     yield "invalidations identified %s" % datetime.now()
     shelf.store(
         (name, self.shelf.get_value(name)) for name in self.pack_extra)
     file.flush()
     file.fsync()
     if not self.shelf.get_file().is_temporary():
         self.shelf.get_file().rename(file_path + '.prepack')
         self.shelf.get_file().close()
     shelf.get_file().rename(file_path)
     self.shelf = shelf
     self.pack_extra = None
     yield "finished %s" % datetime.now()
Exemplo n.º 3
0
 def a(self):
     f = File()
     s = Shelf(f)
     name1 = s.next_name()
     name2 = s.next_name()
     assert name1 != name2
     r = s.store([(name1, name1 + name1), (name2, name2 + name2)])
     assert s.get_value(name1) == name1 + name1, (name1, s.get_value(name1))
     assert s.get_value(name2) == name2 + name2
     f.seek(0)
     other = Shelf(f)
     names = sorted(other.__iter__())
     index = sorted(other.iterindex())
     items = sorted(other.items())
     assert names == [name1, name2], (name1, name2, names)
     assert items == [(n, n+n) for n in names]
     assert index == [(n, other.get_position(n)) for n in names]
Exemplo n.º 4
0
 def __init__(self, filename=None, readonly=False, repair=False):
     self.shelf = Shelf(filename, readonly=readonly, repair=repair)
     self.pending_records = {}
     self.allocated_unused_oids = set()
     self.pack_extra = None
     self.invalid = set()
Exemplo n.º 5
0
 def e(self):
     f = File()
     n1 = int8_to_str(0)
     n2 = int8_to_str(1)
     s = Shelf(f, items=[(n1, 'record1'), (n2, 'record2')])
Exemplo n.º 6
0
 def b(self):
     s = Shelf()
     assert s.get_value(as_bytes('okokokok')) is None
     assert raises(ValueError, s.get_value, as_bytes('okok'))