Skip to content

Commit 9cc5f78

Browse files
Test index deprecations when closed (elastic#120528)
This extends `IndexDeprecationChecksTests` so that it tests two cases for each check: the regular one where the index is open, and one where the index is closed (i.e. the state is changed and a block added). ES-10544 #comment Unit test added in elastic#120528
1 parent a744aef commit 9cc5f78

File tree

1 file changed

+113
-17
lines changed

1 file changed

+113
-17
lines changed

x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationCheckerTests.java

Lines changed: 113 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77

88
package org.elasticsearch.xpack.deprecation;
99

10+
import com.carrotsearch.randomizedtesting.annotations.Name;
11+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
12+
1013
import org.elasticsearch.cluster.ClusterState;
14+
import org.elasticsearch.cluster.block.ClusterBlocks;
1115
import org.elasticsearch.cluster.metadata.DataStream;
1216
import org.elasticsearch.cluster.metadata.DataStreamMetadata;
1317
import org.elasticsearch.cluster.metadata.DataStreamOptions;
@@ -38,6 +42,17 @@
3842

3943
public class IndexDeprecationCheckerTests extends ESTestCase {
4044

45+
private final IndexMetadata.State indexMetdataState;
46+
47+
public IndexDeprecationCheckerTests(@Name("indexMetadataState") IndexMetadata.State indexMetdataState) {
48+
this.indexMetdataState = indexMetdataState;
49+
}
50+
51+
@ParametersFactory
52+
public static List<Object[]> createParameters() {
53+
return List.of(new Object[] { IndexMetadata.State.OPEN }, new Object[] { IndexMetadata.State.CLOSE });
54+
}
55+
4156
private static final IndexVersion OLD_VERSION = IndexVersion.fromId(7170099);
4257

4358
private final IndexNameExpressionResolver indexNameExpressionResolver = TestIndexNameExpressionResolver.newInstance();
@@ -48,10 +63,11 @@ public void testOldIndicesCheck() {
4863
.settings(settings(OLD_VERSION))
4964
.numberOfShards(1)
5065
.numberOfReplicas(0)
51-
.state(randomBoolean() ? IndexMetadata.State.OPEN : IndexMetadata.State.CLOSE) // does not matter if its open or closed
66+
.state(indexMetdataState)
5267
.build();
5368
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
5469
.metadata(Metadata.builder().put(indexMetadata, true))
70+
.blocks(clusterBlocksForIndices(indexMetadata))
5571
.build();
5672
DeprecationIssue expected = new DeprecationIssue(
5773
DeprecationIssue.Level.CRITICAL,
@@ -72,7 +88,10 @@ public void testOldIndicesCheck() {
7288
public void testOldTransformIndicesCheck() {
7389
var checker = new IndexDeprecationChecker(indexNameExpressionResolver, Map.of("test", List.of("test-transform")));
7490
var indexMetadata = indexMetadata("test", OLD_VERSION);
75-
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
91+
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
92+
.metadata(Metadata.builder().put(indexMetadata, true))
93+
.blocks(clusterBlocksForIndices(indexMetadata))
94+
.build();
7695
var expected = new DeprecationIssue(
7796
DeprecationIssue.Level.CRITICAL,
7897
"Old index with a compatibility version < 9.0",
@@ -91,7 +110,10 @@ public void testOldIndicesCheckWithMultipleTransforms() {
91110
Map.of("test", List.of("test-transform1", "test-transform2"))
92111
);
93112
var indexMetadata = indexMetadata("test", OLD_VERSION);
94-
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
113+
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
114+
.metadata(Metadata.builder().put(indexMetadata, true))
115+
.blocks(clusterBlocksForIndices(indexMetadata))
116+
.build();
95117
var expected = new DeprecationIssue(
96118
DeprecationIssue.Level.CRITICAL,
97119
"Old index with a compatibility version < 9.0",
@@ -113,6 +135,7 @@ public void testMultipleOldIndicesCheckWithTransforms() {
113135
var indexMetadata2 = indexMetadata("test2", OLD_VERSION);
114136
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
115137
.metadata(Metadata.builder().put(indexMetadata1, true).put(indexMetadata2, true))
138+
.blocks(clusterBlocksForIndices(indexMetadata1, indexMetadata2))
116139
.build();
117140
var expected = Map.of(
118141
"test1",
@@ -143,14 +166,20 @@ public void testMultipleOldIndicesCheckWithTransforms() {
143166
}
144167

145168
private IndexMetadata indexMetadata(String indexName, IndexVersion indexVersion) {
146-
return IndexMetadata.builder(indexName).settings(settings(indexVersion)).numberOfShards(1).numberOfReplicas(0).build();
169+
return IndexMetadata.builder(indexName)
170+
.settings(settings(indexVersion))
171+
.numberOfShards(1)
172+
.numberOfReplicas(0)
173+
.state(indexMetdataState)
174+
.build();
147175
}
148176

149177
public void testOldIndicesCheckDataStreamIndex() {
150178
IndexMetadata indexMetadata = IndexMetadata.builder(".ds-test")
151179
.settings(settings(OLD_VERSION).put("index.hidden", true))
152180
.numberOfShards(1)
153181
.numberOfReplicas(0)
182+
.state(indexMetdataState)
154183
.build();
155184
DataStream dataStream = new DataStream(
156185
randomAlphaOfLength(10),
@@ -182,6 +211,7 @@ public void testOldIndicesCheckDataStreamIndex() {
182211
)
183212
)
184213
)
214+
.blocks(clusterBlocksForIndices(indexMetadata))
185215
.build();
186216
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
187217
clusterState,
@@ -193,9 +223,15 @@ public void testOldIndicesCheckDataStreamIndex() {
193223
public void testOldIndicesCheckSnapshotIgnored() {
194224
Settings.Builder settings = settings(OLD_VERSION);
195225
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOT_STORE_TYPE);
196-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
226+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
227+
.settings(settings)
228+
.numberOfShards(1)
229+
.numberOfReplicas(0)
230+
.state(indexMetdataState)
231+
.build();
197232
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
198233
.metadata(Metadata.builder().put(indexMetadata, true))
234+
.blocks(clusterBlocksForIndices(indexMetadata))
199235
.build();
200236

201237
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
@@ -207,9 +243,15 @@ public void testOldIndicesCheckSnapshotIgnored() {
207243

208244
public void testOldIndicesIgnoredWarningCheck() {
209245
Settings.Builder settings = settings(OLD_VERSION).put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
210-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
246+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
247+
.settings(settings)
248+
.numberOfShards(1)
249+
.numberOfReplicas(0)
250+
.state(indexMetdataState)
251+
.build();
211252
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
212253
.metadata(Metadata.builder().put(indexMetadata, true))
254+
.blocks(clusterBlocksForIndices(indexMetadata))
213255
.build();
214256
DeprecationIssue expected = new DeprecationIssue(
215257
DeprecationIssue.Level.WARNING,
@@ -231,8 +273,16 @@ public void testTranslogRetentionSettings() {
231273
Settings.Builder settings = settings(IndexVersion.current());
232274
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_AGE_SETTING.getKey(), randomPositiveTimeValue());
233275
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
234-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
235-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
276+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
277+
.settings(settings)
278+
.numberOfShards(1)
279+
.numberOfReplicas(0)
280+
.state(indexMetdataState)
281+
.build();
282+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
283+
.metadata(Metadata.builder().put(indexMetadata, true))
284+
.blocks(clusterBlocksForIndices(indexMetadata))
285+
.build();
236286
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
237287
state,
238288
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -266,8 +316,16 @@ public void testDefaultTranslogRetentionSettings() {
266316
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
267317
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), false);
268318
}
269-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
270-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
319+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
320+
.settings(settings)
321+
.numberOfShards(1)
322+
.numberOfReplicas(0)
323+
.state(indexMetdataState)
324+
.build();
325+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
326+
.metadata(Metadata.builder().put(indexMetadata, true))
327+
.blocks(clusterBlocksForIndices(indexMetadata))
328+
.build();
271329
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
272330
state,
273331
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -278,8 +336,16 @@ public void testDefaultTranslogRetentionSettings() {
278336
public void testIndexDataPathSetting() {
279337
Settings.Builder settings = settings(IndexVersion.current());
280338
settings.put(IndexMetadata.INDEX_DATA_PATH_SETTING.getKey(), createTempDir());
281-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
282-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
339+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
340+
.settings(settings)
341+
.numberOfShards(1)
342+
.numberOfReplicas(0)
343+
.state(indexMetdataState)
344+
.build();
345+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
346+
.metadata(Metadata.builder().put(indexMetadata, true))
347+
.blocks(clusterBlocksForIndices(indexMetadata))
348+
.build();
283349
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
284350
state,
285351
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -304,8 +370,16 @@ public void testIndexDataPathSetting() {
304370
public void testSimpleFSSetting() {
305371
Settings.Builder settings = settings(IndexVersion.current());
306372
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), "simplefs");
307-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
308-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
373+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
374+
.settings(settings)
375+
.numberOfShards(1)
376+
.numberOfReplicas(0)
377+
.state(indexMetdataState)
378+
.build();
379+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
380+
.metadata(Metadata.builder().put(indexMetadata, true))
381+
.blocks(clusterBlocksForIndices(indexMetadata))
382+
.build();
309383
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
310384
state,
311385
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -343,8 +417,12 @@ public void testCamelCaseDeprecation() {
343417
.numberOfShards(1)
344418
.numberOfReplicas(1)
345419
.putMapping(simpleMapping)
420+
.state(indexMetdataState)
421+
.build();
422+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
423+
.metadata(Metadata.builder().put(simpleIndex, true))
424+
.blocks(clusterBlocksForIndices(simpleIndex))
346425
.build();
347-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(simpleIndex, true)).build();
348426
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
349427
state,
350428
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -366,8 +444,16 @@ public void testLegacyTierIndex() {
366444
String filter = randomFrom("include", "exclude", "require");
367445
String tier = randomFrom("hot", "warm", "cold", "frozen");
368446
settings.put("index.routing.allocation." + filter + ".data", tier);
369-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
370-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
447+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
448+
.settings(settings)
449+
.numberOfShards(1)
450+
.numberOfReplicas(0)
451+
.state(indexMetdataState)
452+
.build();
453+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
454+
.metadata(Metadata.builder().put(indexMetadata, true))
455+
.blocks(clusterBlocksForIndices(indexMetadata))
456+
.build();
371457
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
372458
state,
373459
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -388,4 +474,14 @@ public void testLegacyTierIndex() {
388474
)
389475
);
390476
}
477+
478+
private ClusterBlocks clusterBlocksForIndices(IndexMetadata... indicesMetadatas) {
479+
ClusterBlocks.Builder builder = ClusterBlocks.builder();
480+
for (IndexMetadata indexMetadata : indicesMetadatas) {
481+
if (indexMetadata.getState() == IndexMetadata.State.CLOSE) {
482+
builder.addIndexBlock(indexMetadata.getIndex().getName(), MetadataIndexStateService.INDEX_CLOSED_BLOCK);
483+
}
484+
}
485+
return builder.build();
486+
}
391487
}

0 commit comments

Comments
 (0)