test_opendal.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from collections.abc import Generator
  2. from pathlib import Path
  3. import pytest
  4. from extensions.storage.opendal_storage import OpenDALStorage
  5. from tests.unit_tests.oss.__mock.base import (
  6. get_example_data,
  7. get_example_filename,
  8. get_opendal_bucket,
  9. )
  10. class TestOpenDAL:
  11. @pytest.fixture(autouse=True)
  12. def setup_method(self, *args, **kwargs):
  13. """Executed before each test method."""
  14. self.storage = OpenDALStorage(
  15. scheme="fs",
  16. root=get_opendal_bucket(),
  17. )
  18. @pytest.fixture(scope="class", autouse=True)
  19. def teardown_class(self, request):
  20. """Clean up after all tests in the class."""
  21. def cleanup():
  22. folder = Path(get_opendal_bucket())
  23. if folder.exists() and folder.is_dir():
  24. for item in folder.iterdir():
  25. if item.is_file():
  26. item.unlink()
  27. elif item.is_dir():
  28. item.rmdir()
  29. folder.rmdir()
  30. return cleanup()
  31. def test_save_and_exists(self):
  32. """Test saving data and checking existence."""
  33. filename = get_example_filename()
  34. data = get_example_data()
  35. assert not self.storage.exists(filename)
  36. self.storage.save(filename, data)
  37. assert self.storage.exists(filename)
  38. def test_load_once(self):
  39. """Test loading data once."""
  40. filename = get_example_filename()
  41. data = get_example_data()
  42. self.storage.save(filename, data)
  43. loaded_data = self.storage.load_once(filename)
  44. assert loaded_data == data
  45. def test_load_stream(self):
  46. """Test loading data as a stream."""
  47. filename = get_example_filename()
  48. data = get_example_data()
  49. self.storage.save(filename, data)
  50. generator = self.storage.load_stream(filename)
  51. assert isinstance(generator, Generator)
  52. assert next(generator) == data
  53. def test_download(self):
  54. """Test downloading data to a file."""
  55. filename = get_example_filename()
  56. filepath = str(Path(get_opendal_bucket()) / filename)
  57. data = get_example_data()
  58. self.storage.save(filename, data)
  59. self.storage.download(filename, filepath)
  60. def test_delete(self):
  61. """Test deleting a file."""
  62. filename = get_example_filename()
  63. data = get_example_data()
  64. self.storage.save(filename, data)
  65. assert self.storage.exists(filename)
  66. self.storage.delete(filename)
  67. assert not self.storage.exists(filename)