← Back to benchmarkbenchmark_fixtures.py
"""Shared deterministic cumulative histories for the store and delta benchmarks."""
import random
def versions(seed, size, workload, count):
rng = random.Random(seed + size)
if workload == 'binary':
data = bytearray(rng.randbytes(size))
else:
raw = rng.randbytes(size).hex()
data = bytearray('\n'.join(raw[i:i + 64] for i in range(0, len(raw), 64))[:size], 'ascii')
for version in range(count):
if version:
for _ in range(3):
at = rng.randrange(len(data) - 16)
if workload == 'text':
while b'\n' in data[at:at + 16]:
at = rng.randrange(len(data) - 16)
data[at:at + 16] = rng.randbytes(8).hex().encode('ascii')
else:
data[at:at + 16] = rng.randbytes(16)
data += (rng.randbytes(1).hex()[:1].encode('ascii') if workload == 'text'
else rng.randbytes(1))
yield data