WIP
parent
d240a78af3
commit
00ae0b6e89
@ -0,0 +1,65 @@
|
|||||||
|
'''
|
||||||
|
Write lines of deterministic ASCII test data
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ python generate_ascii_test_data.py 192
|
||||||
|
000000000000000000 mitogen-test-file ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
|
000000000000000064 mitogen-test-file BCDEFGHIJKLMNOPQRSTUVWXYZA
|
||||||
|
000000000000000128 mitogen-test-file CDEFGHIJKLMNOPQRSTUVWXYZAB
|
||||||
|
```
|
||||||
|
'''
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info < (3, 0):
|
||||||
|
range = xrange # noqa: F821
|
||||||
|
|
||||||
|
# Padding added to make each line LINE_SIZE bytes long, including a newline.
|
||||||
|
# PADDING_POOL is repeated to eliminate repeated concatenations in the loop.
|
||||||
|
PADDING_TEXT = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.encode('ascii')
|
||||||
|
PADDING_SIZE = 26
|
||||||
|
PADDING_POOL = PADDING_TEXT * 2
|
||||||
|
|
||||||
|
LINE_TMPL = '%%018d mitogen-test-file %%.%ds\n'.encode('ascii') % PADDING_SIZE
|
||||||
|
LINE_SIZE = 64
|
||||||
|
|
||||||
|
def format_line(lineno):
|
||||||
|
# type: (int) -> bytes
|
||||||
|
line_offset = lineno * LINE_SIZE
|
||||||
|
padding_shift = lineno % PADDING_SIZE
|
||||||
|
return LINE_TMPL % (line_offset, PADDING_POOL[padding_shift:])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
assert len(PADDING_POOL) >= 2 * PADDING_SIZE
|
||||||
|
assert len(format_line(0)) == LINE_SIZE
|
||||||
|
|
||||||
|
try:
|
||||||
|
output_size = int(sys.argv[1])
|
||||||
|
if output_size < 0 or output_size % LINE_SIZE != 0:
|
||||||
|
raise ValueError
|
||||||
|
except IndexError:
|
||||||
|
prog = os.path.basename(sys.argv[0])
|
||||||
|
raise SystemExit('Usage: %s output_size [output_file]' % prog)
|
||||||
|
except ValueError:
|
||||||
|
raise SystemExit(
|
||||||
|
'Error: output_size must be >= 0 and a multiple of line size (%d), '
|
||||||
|
'got: %s' % (LINE_SIZE, sys.argv[1])
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(sys.argv) >= 3 and sys.argv[2] != '-':
|
||||||
|
output_file = open(sys.argv[2], 'wb')
|
||||||
|
else:
|
||||||
|
output_file = os.fdopen(sys.stdout.fileno(), 'wb')
|
||||||
|
|
||||||
|
with output_file as f:
|
||||||
|
for lineno in range(0, output_size // LINE_SIZE):
|
||||||
|
line = format_line(lineno)
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
raise SystemExit
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue