test_opendal.py 2.7 KB

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