test_opendal.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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_example_folder,
  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_example_folder(),
  20. )
  21. def teardown_method(self, method):
  22. """Clean up after each test method."""
  23. try:
  24. if self.storage.exists(get_example_filename()):
  25. self.storage.delete(get_example_filename())
  26. filepath = Path(get_example_filepath())
  27. if filepath.exists():
  28. filepath.unlink()
  29. except:
  30. pass
  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 = get_example_filepath()
  57. data = get_example_data()
  58. self.storage.save(filename, data)
  59. self.storage.download(filename, filepath)
  60. downloaded_path = Path(filepath)
  61. assert downloaded_path.exists()
  62. downloaded_data = downloaded_path.read_bytes()
  63. assert downloaded_data == data
  64. def test_delete(self):
  65. """Test deleting a file."""
  66. filename = get_example_filename()
  67. data = get_example_data()
  68. self.storage.save(filename, data)
  69. assert self.storage.exists(filename)
  70. self.storage.delete(filename)
  71. assert not self.storage.exists(filename)