#!/usr/bin/env python3 """Create deterministic V25PG01 fixed-slot page artifacts for tests/benchmarks.""" import argparse import struct import zlib from pathlib import Path HEADER_BYTES = 4096 PAGE_HEADER_BYTES = 16 def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("output", type=Path) parser.add_argument("--pages", type=int, default=128) parser.add_argument("--page-bytes", type=int, default=4096) parser.add_argument("--useful-bytes", type=int, default=1000) parser.add_argument("--logical-params", type=int, default=0) args = parser.parse_args() if not 1 <= args.pages <= 1_000_000: parser.error("--pages must be between 1 and 1000000") if not 4096 <= args.page_bytes <= 16 * 1024 * 1024 or args.page_bytes % 4096: parser.error("--page-bytes must be a 4096-byte multiple up to 16 MiB") if not 0 <= args.useful_bytes <= args.page_bytes - PAGE_HEADER_BYTES: parser.error("--useful-bytes exceeds page payload") if args.logical_params < 0: parser.error("--logical-params must be nonnegative") header = bytearray(HEADER_BYTES) struct.pack_into( "<8sIIIIQQQIII", header, 0, b"V25PG01\0", 1, HEADER_BYTES, args.page_bytes, PAGE_HEADER_BYTES, args.pages, HEADER_BYTES, args.logical_params, 1, 0, args.useful_bytes, ) struct.pack_into("