Coverage for /Users/buh/.pyenv/versions/3.12.2/envs/es-testbed/lib/python3.12/site-packages/es_testbed/presets/searchable_test/scenarios.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-08-21 12:05 -0600

1""" 

2Searchable Snapshot Test Scenarios 

3 

4We use deepcopy to ensure that other scenarios changes don't propagate. We can't use 

5constants as the values need to be changed, so deepcopy has us covered. 

6 

7The repository should be configurable at runtime, so we make it use the TEST_ES_REPO 

8env var. 

9""" 

10 

11from os import environ 

12from copy import deepcopy 

13 

14REPOSITORY = environ.get('TEST_ES_REPO', 'found-snapshots') 

15 

16# default values = { 

17# 'type': 'indices', 

18# 'rollover_alias': False, 

19# 'repository': REPOSITORY, 

20# 'ilm': { 

21# 'enabled': False, 

22# 'phases': ['hot', 'delete'], 

23# 'readonly': None, 

24# 'max_num_segments': 1, 

25# 'forcemerge': False, 

26# }, 

27# } 

28 

29bl = [ 

30 { 

31 'options': { 

32 'count': 10, 

33 'start_at': 0, 

34 'match': True, 

35 }, 

36 'target_tier': 'frozen', 

37 }, 

38 { 

39 'options': { 

40 'count': 10, 

41 'start_at': 10, 

42 'match': True, 

43 }, 

44 'target_tier': 'frozen', 

45 }, 

46 { 

47 'options': { 

48 'count': 10, 

49 'start_at': 20, 

50 'match': True, 

51 }, 

52 'target_tier': 'hot', 

53 }, 

54] 

55 

56# ##################### 

57# ### Hot Scenarios ### 

58# ##################### 

59 

60hot = {} # The default 

61hot_rollover = {'rollover_alias': True} 

62hot_ds = {'type': 'data_stream'} 

63 

64# ###################### 

65# ### Cold Scenarios ### 

66# ###################### 

67 

68# Define the basic cold scenario 

69cold = {'repository': REPOSITORY, 'index_buildlist': deepcopy(bl)} 

70cold['index_buildlist'][0]['target_tier'] = 'cold' 

71cold['index_buildlist'][1]['target_tier'] = 'cold' 

72cold['index_buildlist'][2]['target_tier'] = 'cold' 

73 

74# Define the rollover_alias cold scenario 

75cold_rollover = deepcopy(cold) 

76cold_rollover['index_buildlist'][2]['target_tier'] = 'hot' 

77cold_rollover['rollover_alias'] = True 

78 

79# Define the cold ILM scenario 

80cold_ilm = { 

81 'repository': REPOSITORY, 

82 'rollover_alias': True, 

83 'ilm': {'enabled': True, 'phases': ['hot', 'cold', 'delete']}, 

84} 

85 

86# Define the cold data_stream scenario 

87cold_ds = deepcopy(cold_ilm) 

88cold_ds['type'] = 'data_stream' 

89 

90# ######################## 

91# ### Frozen Scenarios ### 

92# ######################## 

93 

94# Define the basic frozen scenario 

95frozen = {'repository': REPOSITORY, 'index_buildlist': deepcopy(bl)} 

96frozen['index_buildlist'][0]['target_tier'] = 'frozen' 

97frozen['index_buildlist'][1]['target_tier'] = 'frozen' 

98frozen['index_buildlist'][2]['target_tier'] = 'frozen' 

99 

100# Define the rollover_alias frozen scenario 

101frozen_rollover = deepcopy(frozen) 

102frozen_rollover['index_buildlist'][2]['target_tier'] = 'hot' 

103frozen_rollover['rollover_alias'] = True 

104 

105# Define the frozen ILM scenario 

106frozen_ilm = { 

107 'repository': REPOSITORY, 

108 'rollover_alias': True, 

109 'ilm': {'enabled': True, 'phases': ['hot', 'frozen', 'delete']}, 

110} 

111 

112# Define the frozen data_stream scenario 

113frozen_ds = deepcopy(frozen_ilm) 

114frozen_ds['type'] = 'data_stream'