yield b
-def hashsplit_iter(files):
- assert(BLOB_HWM > BLOB_MAX)
- buf = Buf()
- fi = blobiter(files)
+def drainbuf(buf, finalize):
while 1:
(blob, bits) = splitbuf(buf)
if blob:
yield (blob, bits)
else:
- if buf.used() >= BLOB_MAX:
- # limit max blob size
- yield (buf.get(buf.used()), 0)
- while buf.used() < BLOB_HWM:
- bnew = next(fi)
- if not bnew:
- # eof
- if buf.used():
- yield (buf.get(buf.used()), 0)
- return
- buf.put(bnew)
+ break
+ if buf.used() > BLOB_MAX:
+ # limit max blob size
+ yield (buf.get(buf.used()), 0)
+ elif finalize and buf.used():
+ yield (buf.get(buf.used()), 0)
+
+
+def hashsplit_iter(files):
+ assert(BLOB_HWM > BLOB_MAX)
+ buf = Buf()
+ fi = blobiter(files)
+ while 1:
+ for i in drainbuf(buf, finalize=False):
+ yield i
+ while buf.used() < BLOB_HWM:
+ bnew = next(fi)
+ if not bnew:
+ # eof
+ for i in drainbuf(buf, finalize=True):
+ yield i
+ return
+ buf.put(bnew)
total_split = 0
WVPASS bup midx -f
WVPASS bup margin
WVPASS bup split -t t/testfile2 >tags2t.tmp
+WVPASS bup split -t t/testfile2 --fanout 3 >tags2tf.tmp
WVPASS bup split -r "$BUP_DIR" -c t/testfile2 >tags2c.tmp
WVPASS ls -lR \
| WVPASS bup split -r "$BUP_DIR" -c --fanout 3 --max-pack-objects 3 -n lslr
WVPASS bup ls /lslr/1971-01-01 # all dates always exist
WVFAIL diff -u tags1.tmp tags2.tmp
+# fanout must be different from non-fanout
+WVFAIL diff -q tags2t.tmp tags2tf.tmp
wc -c t/testfile1 t/testfile2
wc -l tags1.tmp tags2.tmp