Coverage for tests/unit/test_cls_ilm.py: 100%

45 statements  

« prev     ^ index     » next       coverage.py v7.5.0, created at 2024-04-23 13:14 -0600

1"""Test functions in es_testbed.defaults""" 

2# pylint: disable=missing-function-docstring,redefined-outer-name 

3import pytest 

4from es_testbed.defaults import TESTPLAN 

5from es_testbed.classes.ilm import IlmBuilder 

6 

7@pytest.fixture 

8def ilm(): 

9 yield IlmBuilder() 

10 

11@pytest.fixture 

12def hot(): 

13 return {'actions': { 

14 'rollover': {'max_age': '1d', 'max_primary_shard_size': '1gb'}}} 

15 

16@pytest.fixture 

17def cold(): 

18 return {'actions': { 

19 'searchable_snapshot': {'snapshot_repository': 'repo'}}, 'min_age': '3d'} 

20 

21@pytest.fixture 

22def delete(): 

23 return {'actions': {'delete': {}}, 'min_age': '5d'} 

24 

25@pytest.fixture 

26def phases(): 

27 def _phases(**kwargs): 

28 retval = {'phases':{}} 

29 for key in ['hot', 'warm', 'cold', 'frozen', 'delete']: 

30 if key in kwargs and kwargs[key] is not None: 

31 retval['phases'][key] = kwargs[key] 

32 if 'fm' in kwargs and kwargs['fm'] is True: 

33 mns = kwargs['mns'] if 'mns' in kwargs else 1 

34 retval['phases']['hot']['actions']['forcemerge'] = {'max_num_segments': mns} 

35 return retval 

36 return _phases 

37 

38def test_cls_ilm_defaults(ilm): 

39 for key in ['tiers', 'forcemerge', 'max_num_segments', 'repository']: 

40 assert getattr(ilm, key) == TESTPLAN['ilm'][key] 

41 

42def test_cls_ilm_defaults_policy(ilm, hot, delete, phases): 

43 # assert ilm.policy == {'phases': {'hot': hot, 'delete': delete}} 

44 assert ilm.policy == phases(hot=hot, delete=delete) 

45 

46def test_cls_ilm_forcemerge(ilm, hot, delete, phases): 

47 ilm.forcemerge = True 

48 # assert ilm.policy == {'phases': {'hot': forcemerge(mns=1), 'delete': delete}} 

49 assert ilm.policy == phases(hot=hot, delete=delete, fm=True) 

50 

51def test_cls_ilm_mns(ilm, hot, delete, phases): 

52 val = 2 

53 ilm.forcemerge = True 

54 ilm.max_num_segments = val 

55 assert ilm.policy == phases(hot=hot, delete=delete, fm=True, mns=2) 

56 

57def test_cls_ilm_cold(ilm, hot, cold): 

58 expected = {'phases': {'hot': hot, 'cold': cold}} 

59 ilm.tiers = ['hot', 'cold'] 

60 ilm.repository = 'repo' 

61 assert ilm.policy['phases'].keys() == expected['phases'].keys()