test_backports.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import mmap
  2. from joblib.backports import make_memmap, concurrency_safe_rename
  3. from joblib.test.common import with_numpy
  4. from joblib.testing import parametrize
  5. from joblib import Parallel, delayed
  6. @with_numpy
  7. def test_memmap(tmpdir):
  8. fname = tmpdir.join('test.mmap').strpath
  9. size = 5 * mmap.ALLOCATIONGRANULARITY
  10. offset = mmap.ALLOCATIONGRANULARITY + 1
  11. memmap_obj = make_memmap(fname, shape=size, mode='w+', offset=offset)
  12. assert memmap_obj.offset == offset
  13. @parametrize('dst_content', [None, 'dst content'])
  14. @parametrize('backend', [None, 'threading'])
  15. def test_concurrency_safe_rename(tmpdir, dst_content, backend):
  16. src_paths = [tmpdir.join('src_%d' % i) for i in range(4)]
  17. for src_path in src_paths:
  18. src_path.write('src content')
  19. dst_path = tmpdir.join('dst')
  20. if dst_content is not None:
  21. dst_path.write(dst_content)
  22. Parallel(n_jobs=4, backend=backend)(
  23. delayed(concurrency_safe_rename)(src_path.strpath, dst_path.strpath)
  24. for src_path in src_paths
  25. )
  26. assert dst_path.exists()
  27. assert dst_path.read() == 'src content'
  28. for src_path in src_paths:
  29. assert not src_path.exists()