| 35 | |
| 36 | @pytest.fixture(scope="session", params=["zeros", "random"]) |
| 37 | def testdata(request, tmpdir_factory): |
| 38 | count, size = 10, 1000 * 1000 |
| 39 | assert size <= len(zeros) |
| 40 | p = tmpdir_factory.mktemp("data") |
| 41 | data_type = request.param |
| 42 | if data_type == "zeros": |
| 43 | # Do not use a binary zero (\\0) to avoid sparse detection. |
| 44 | def data(size): |
| 45 | return memoryview(zeros)[:size] |
| 46 | |
| 47 | elif data_type == "random": |
| 48 | |
| 49 | def data(size): |
| 50 | return os.urandom(size) |
| 51 | |
| 52 | else: |
| 53 | raise ValueError("data_type must be 'random' or 'zeros'.") |
| 54 | for i in range(count): |
| 55 | with open(str(p.join(str(i))), "wb") as f: |
| 56 | f.write(data(size)) |
| 57 | yield str(p) |
| 58 | p.remove(rec=1) |
| 59 | |
| 60 | |
| 61 | @pytest.fixture(params=["none", "lz4"]) |