Mercurial > public > mercurial-scm > hg
diff contrib/python-zstandard/tests/common.py @ 31796:e0dc40530c5a
zstd: vendor python-zstandard 0.8.0
Commit 81e1f5bbf1fc54808649562d3ed829730765c540 from
https://github.com/indygreg/python-zstandard is imported without
modifications (other than removing unwanted files).
Updates relevant to Mercurial include:
* Support for multi-threaded compression (we can use this for
bundle and wire protocol compression).
* APIs for batch compression and decompression operations using
multiple threads and optimal memory allocation mechanism. (Can
be useful for revlog perf improvements.)
* A ``BufferWithSegments`` type that models a single memory buffer
containing N discrete items of known lengths. This type can be
used for very efficient 0-copy data operations.
# no-check-commit
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 01 Apr 2017 15:24:03 -0700 |
parents | c32454d69b85 |
children | b1fb341d8a61 |
line wrap: on
line diff
--- a/contrib/python-zstandard/tests/common.py Sat Apr 01 13:43:52 2017 -0700 +++ b/contrib/python-zstandard/tests/common.py Sat Apr 01 15:24:03 2017 -0700 @@ -1,5 +1,6 @@ import inspect import io +import os import types @@ -59,3 +60,29 @@ def write(self, data): self._write_count += 1 return super(OpCountingBytesIO, self).write(data) + + +_source_files = [] + + +def random_input_data(): + """Obtain the raw content of source files. + + This is used for generating "random" data to feed into fuzzing, since it is + faster than random content generation. + """ + if _source_files: + return _source_files + + for root, dirs, files in os.walk(os.path.dirname(__file__)): + dirs[:] = list(sorted(dirs)) + for f in sorted(files): + try: + with open(os.path.join(root, f), 'rb') as fh: + data = fh.read() + if data: + _source_files.append(data) + except OSError: + pass + + return _source_files