mmengine/tests/test_fileio/test_backends/test_memcached_backend.py

60 lines
1.8 KiB
Python
Raw Normal View History

# Copyright (c) OpenMMLab. All rights reserved.
import sys
from pathlib import Path
from unittest import TestCase
from unittest.mock import MagicMock, patch
import cv2
import numpy as np
from parameterized import parameterized
from mmengine.fileio.backends import MemcachedBackend
def imfrombytes(content):
img_np = np.frombuffer(content, np.uint8)
img = cv2.imdecode(img_np, cv2.IMREAD_COLOR)
return img
sys.modules['mc'] = MagicMock()
class MockMemcachedClient:
def __init__(self, server_list_cfg, client_cfg):
pass
def Get(self, filepath, buffer):
with open(filepath, 'rb') as f:
buffer.content = f.read()
class TestMemcachedBackend(TestCase):
@classmethod
def setUpClass(cls):
cls.mc_cfg = dict(server_list_cfg='', client_cfg='', sys_path=None)
cls.test_data_dir = Path(__file__).parent.parent.parent / 'data'
cls.img_path = cls.test_data_dir / 'color.jpg'
cls.img_shape = (300, 400, 3)
@parameterized.expand([[Path], [str]])
@patch('mc.MemcachedClient.GetInstance', MockMemcachedClient)
@patch('mc.pyvector', MagicMock)
@patch('mc.ConvertBuffer', lambda x: x.content)
def test_get(self, path_type):
backend = MemcachedBackend(**self.mc_cfg)
img_bytes = backend.get(path_type(self.img_path))
self.assertEqual(self.img_path.open('rb').read(), img_bytes)
img = imfrombytes(img_bytes)
self.assertEqual(img.shape, self.img_shape)
@patch('mc.MemcachedClient.GetInstance', MockMemcachedClient)
@patch('mc.pyvector', MagicMock)
@patch('mc.ConvertBuffer', lambda x: x.content)
def test_get_text(self):
backend = MemcachedBackend(**self.mc_cfg)
with self.assertRaises(NotImplementedError):
backend.get_text('filepath')