|
|
|
@@ -1,15 +1,20 @@ |
|
|
|
import os |
|
|
|
from collections.abc import Generator |
|
|
|
from pathlib import Path |
|
|
|
|
|
|
|
import pytest |
|
|
|
|
|
|
|
from configs.middleware.storage.opendal_storage_config import OpenDALScheme |
|
|
|
from extensions.storage.opendal_storage import OpenDALStorage |
|
|
|
from tests.unit_tests.oss.__mock.base import ( |
|
|
|
BaseStorageTest, |
|
|
|
get_example_data, |
|
|
|
get_example_filename, |
|
|
|
get_example_filepath, |
|
|
|
get_example_folder, |
|
|
|
) |
|
|
|
from tests.unit_tests.oss.__mock.local import setup_local_fs_mock |
|
|
|
|
|
|
|
|
|
|
|
class TestOpenDAL(BaseStorageTest): |
|
|
|
class TestOpenDAL: |
|
|
|
@pytest.fixture(autouse=True) |
|
|
|
def setup_method(self, *args, **kwargs): |
|
|
|
"""Executed before each test method.""" |
|
|
|
@@ -17,3 +22,68 @@ class TestOpenDAL(BaseStorageTest): |
|
|
|
scheme=OpenDALScheme.FS, |
|
|
|
root=get_example_folder(), |
|
|
|
) |
|
|
|
|
|
|
|
def teardown_method(self, method): |
|
|
|
"""Clean up after each test method.""" |
|
|
|
try: |
|
|
|
if self.storage.exists(get_example_filename()): |
|
|
|
self.storage.delete(get_example_filename()) |
|
|
|
|
|
|
|
filepath = Path(get_example_filepath()) |
|
|
|
if filepath.exists(): |
|
|
|
filepath.unlink() |
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
def test_save_and_exists(self): |
|
|
|
"""Test saving data and checking existence.""" |
|
|
|
filename = get_example_filename() |
|
|
|
data = get_example_data() |
|
|
|
|
|
|
|
assert not self.storage.exists(filename) |
|
|
|
self.storage.save(filename, data) |
|
|
|
assert self.storage.exists(filename) |
|
|
|
|
|
|
|
def test_load_once(self): |
|
|
|
"""Test loading data once.""" |
|
|
|
filename = get_example_filename() |
|
|
|
data = get_example_data() |
|
|
|
|
|
|
|
self.storage.save(filename, data) |
|
|
|
loaded_data = self.storage.load_once(filename) |
|
|
|
assert loaded_data == data |
|
|
|
|
|
|
|
def test_load_stream(self): |
|
|
|
"""Test loading data as a stream.""" |
|
|
|
filename = get_example_filename() |
|
|
|
data = get_example_data() |
|
|
|
|
|
|
|
self.storage.save(filename, data) |
|
|
|
generator = self.storage.load_stream(filename) |
|
|
|
assert isinstance(generator, Generator) |
|
|
|
assert next(generator) == data |
|
|
|
|
|
|
|
def test_download(self): |
|
|
|
"""Test downloading data to a file.""" |
|
|
|
filename = get_example_filename() |
|
|
|
filepath = get_example_filepath() |
|
|
|
data = get_example_data() |
|
|
|
|
|
|
|
self.storage.save(filename, data) |
|
|
|
self.storage.download(filename, filepath) |
|
|
|
|
|
|
|
downloaded_path = Path(filepath) |
|
|
|
assert downloaded_path.exists() |
|
|
|
downloaded_data = downloaded_path.read_bytes() |
|
|
|
assert downloaded_data == data |
|
|
|
|
|
|
|
def test_delete(self): |
|
|
|
"""Test deleting a file.""" |
|
|
|
filename = get_example_filename() |
|
|
|
data = get_example_data() |
|
|
|
|
|
|
|
self.storage.save(filename, data) |
|
|
|
assert self.storage.exists(filename) |
|
|
|
|
|
|
|
self.storage.delete(filename) |
|
|
|
assert not self.storage.exists(filename) |