13
from mindsdb.utilities.cache import get_cache, RedisCache, FileCache, dataframe_checksum
16
class TestCashe(unittest.TestCase):
22
# TODO run on own database
23
fdi, cfg_file = tempfile.mkstemp(prefix='mindsdb_conf_')
25
with os.fdopen(fdi, 'w') as fd:
28
os.environ['MINDSDB_CONFIG_PATH'] = cfg_file
31
cache = RedisCache('predict', max_size=2)
33
self.cache_test(cache)
34
except redis.ConnectionError as e:
35
# Skip test for redis if no redis installed
36
warnings.warn(f'redis is not available: {e}')
37
print(traceback.format_exc())
40
cache = FileCache('predict', max_size=2)
42
self.cache_test(cache)
44
def cache_test(self, cache):
48
[1, 1.2,'string', dt.datetime.now(), [1,2,3], {1:3}],
49
[2, 3.2,'other', dt.datetime(2011, 12, 30), [3], {11:23, 2:3}],
50
], columns=['a', 'b', 'c', 'd', 'e', 'f'])
53
df = pd.concat([df]*100).reset_index()
55
name = dataframe_checksum(df)
62
assert dataframe_checksum(df) == dataframe_checksum(df2)
63
assert list(df.columns) == list(df2.columns)
67
cache.set_df(name, df)
69
df2 = cache.get_df(name)
71
assert dataframe_checksum(df) == dataframe_checksum(df2)
72
assert list(df.columns) == list(df2.columns)
81
# load cache with size 2(max_size) + 5 (buffer)
82
cache.set('first', df)
87
# get first, must be deleted
88
df2 = cache.get('first')