Skip to content

Commit a1ea26d

Browse files
Test index deprecations when closed (#120528) (#121182)
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 backported in #121182
1 parent e227dd0 commit a1ea26d

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;
@@ -39,6 +43,17 @@
3943

4044
public class IndexDeprecationCheckerTests extends ESTestCase {
4145

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

4459
private final IndexNameExpressionResolver indexNameExpressionResolver = TestIndexNameExpressionResolver.newInstance();
@@ -49,10 +64,11 @@ public void testOldIndicesCheck() {
4964
.settings(settings(OLD_VERSION))
5065
.numberOfShards(1)
5166
.numberOfReplicas(0)
52-
.state(randomBoolean() ? IndexMetadata.State.OPEN : IndexMetadata.State.CLOSE) // does not matter if its open or closed
67+
.state(indexMetdataState)
5368
.build();
5469
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
5570
.metadata(Metadata.builder().put(indexMetadata, true))
71+
.blocks(clusterBlocksForIndices(indexMetadata))
5672
.build();
5773
DeprecationIssue expected = new DeprecationIssue(
5874
DeprecationIssue.Level.CRITICAL,
@@ -73,7 +89,10 @@ public void testOldIndicesCheck() {
7389
public void testOldTransformIndicesCheck() {
7490
var checker = new IndexDeprecationChecker(indexNameExpressionResolver, Map.of("test", List.of("test-transform")));
7591
var indexMetadata = indexMetadata("test", OLD_VERSION);
76-
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
92+
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
93+
.metadata(Metadata.builder().put(indexMetadata, true))
94+
.blocks(clusterBlocksForIndices(indexMetadata))
95+
.build();
7796
var expected = new DeprecationIssue(
7897
DeprecationIssue.Level.CRITICAL,
7998
"Old index with a compatibility version < 8.0",
@@ -92,7 +111,10 @@ public void testOldIndicesCheckWithMultipleTransforms() {
92111
Map.of("test", List.of("test-transform1", "test-transform2"))
93112
);
94113
var indexMetadata = indexMetadata("test", OLD_VERSION);
95-
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
114+
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
115+
.metadata(Metadata.builder().put(indexMetadata, true))
116+
.blocks(clusterBlocksForIndices(indexMetadata))
117+
.build();
96118
var expected = new DeprecationIssue(
97119
DeprecationIssue.Level.CRITICAL,
98120
"Old index with a compatibility version < 8.0",
@@ -114,6 +136,7 @@ public void testMultipleOldIndicesCheckWithTransforms() {
114136
var indexMetadata2 = indexMetadata("test2", OLD_VERSION);
115137
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
116138
.metadata(Metadata.builder().put(indexMetadata1, true).put(indexMetadata2, true))
139+
.blocks(clusterBlocksForIndices(indexMetadata1, indexMetadata2))
117140
.build();
118141
var expected = Map.of(
119142
"test1",
@@ -144,14 +167,20 @@ public void testMultipleOldIndicesCheckWithTransforms() {
144167
}
145168

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

150178
public void testOldIndicesCheckDataStreamIndex() {
151179
IndexMetadata indexMetadata = IndexMetadata.builder(".ds-test")
152180
.settings(settings(OLD_VERSION).put("index.hidden", true))
153181
.numberOfShards(1)
154182
.numberOfReplicas(0)
183+
.state(indexMetdataState)
155184
.build();
156185
DataStream dataStream = new DataStream(
157186
randomAlphaOfLength(10),
@@ -183,6 +212,7 @@ public void testOldIndicesCheckDataStreamIndex() {
183212
)
184213
)
185214
)
215+
.blocks(clusterBlocksForIndices(indexMetadata))
186216
.build();
187217
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
188218
clusterState,
@@ -194,9 +224,15 @@ public void testOldIndicesCheckDataStreamIndex() {
194224
public void testOldIndicesCheckSnapshotIgnored() {
195225
Settings.Builder settings = settings(OLD_VERSION);
196226
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOT_STORE_TYPE);
197-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
227+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
228+
.settings(settings)
229+
.numberOfShards(1)
230+
.numberOfReplicas(0)
231+
.state(indexMetdataState)
232+
.build();
198233
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
199234
.metadata(Metadata.builder().put(indexMetadata, true))
235+
.blocks(clusterBlocksForIndices(indexMetadata))
200236
.build();
201237

202238
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
@@ -208,9 +244,15 @@ public void testOldIndicesCheckSnapshotIgnored() {
208244

209245
public void testOldIndicesIgnoredWarningCheck() {
210246
Settings.Builder settings = settings(OLD_VERSION).put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
211-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
247+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
248+
.settings(settings)
249+
.numberOfShards(1)
250+
.numberOfReplicas(0)
251+
.state(indexMetdataState)
252+
.build();
212253
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
213254
.metadata(Metadata.builder().put(indexMetadata, true))
255+
.blocks(clusterBlocksForIndices(indexMetadata))
214256
.build();
215257
DeprecationIssue expected = new DeprecationIssue(
216258
DeprecationIssue.Level.WARNING,
@@ -232,8 +274,16 @@ public void testTranslogRetentionSettings() {
232274
Settings.Builder settings = settings(IndexVersion.current());
233275
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_AGE_SETTING.getKey(), randomPositiveTimeValue());
234276
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
235-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
236-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
277+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
278+
.settings(settings)
279+
.numberOfShards(1)
280+
.numberOfReplicas(0)
281+
.state(indexMetdataState)
282+
.build();
283+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
284+
.metadata(Metadata.builder().put(indexMetadata, true))
285+
.blocks(clusterBlocksForIndices(indexMetadata))
286+
.build();
237287
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
238288
state,
239289
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -267,8 +317,16 @@ public void testDefaultTranslogRetentionSettings() {
267317
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
268318
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), false);
269319
}
270-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
271-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
320+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
321+
.settings(settings)
322+
.numberOfShards(1)
323+
.numberOfReplicas(0)
324+
.state(indexMetdataState)
325+
.build();
326+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
327+
.metadata(Metadata.builder().put(indexMetadata, true))
328+
.blocks(clusterBlocksForIndices(indexMetadata))
329+
.build();
272330
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
273331
state,
274332
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -279,8 +337,16 @@ public void testDefaultTranslogRetentionSettings() {
279337
public void testIndexDataPathSetting() {
280338
Settings.Builder settings = settings(IndexVersion.current());
281339
settings.put(IndexMetadata.INDEX_DATA_PATH_SETTING.getKey(), createTempDir());
282-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
283-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
340+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
341+
.settings(settings)
342+
.numberOfShards(1)
343+
.numberOfReplicas(0)
344+
.state(indexMetdataState)
345+
.build();
346+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
347+
.metadata(Metadata.builder().put(indexMetadata, true))
348+
.blocks(clusterBlocksForIndices(indexMetadata))
349+
.build();
284350
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
285351
state,
286352
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -305,8 +371,16 @@ public void testIndexDataPathSetting() {
305371
public void testSimpleFSSetting() {
306372
Settings.Builder settings = settings(IndexVersion.current());
307373
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), "simplefs");
308-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
309-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
374+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
375+
.settings(settings)
376+
.numberOfShards(1)
377+
.numberOfReplicas(0)
378+
.state(indexMetdataState)
379+
.build();
380+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
381+
.metadata(Metadata.builder().put(indexMetadata, true))
382+
.blocks(clusterBlocksForIndices(indexMetadata))
383+
.build();
310384
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
311385
state,
312386
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -370,8 +444,12 @@ public void testCamelCaseDeprecation() {
370444
.numberOfShards(1)
371445
.numberOfReplicas(1)
372446
.putMapping(simpleMapping)
447+
.state(indexMetdataState)
448+
.build();
449+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
450+
.metadata(Metadata.builder().put(simpleIndex, true))
451+
.blocks(clusterBlocksForIndices(simpleIndex))
373452
.build();
374-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(simpleIndex, true)).build();
375453
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
376454
state,
377455
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -393,8 +471,16 @@ public void testLegacyTierIndex() {
393471
String filter = randomFrom("include", "exclude", "require");
394472
String tier = randomFrom("hot", "warm", "cold", "frozen");
395473
settings.put("index.routing.allocation." + filter + ".data", tier);
396-
IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
397-
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
474+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
475+
.settings(settings)
476+
.numberOfShards(1)
477+
.numberOfReplicas(0)
478+
.state(indexMetdataState)
479+
.build();
480+
ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
481+
.metadata(Metadata.builder().put(indexMetadata, true))
482+
.blocks(clusterBlocksForIndices(indexMetadata))
483+
.build();
398484
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
399485
state,
400486
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
@@ -415,4 +501,14 @@ public void testLegacyTierIndex() {
415501
)
416502
);
417503
}
504+
505+
private ClusterBlocks clusterBlocksForIndices(IndexMetadata... indicesMetadatas) {
506+
ClusterBlocks.Builder builder = ClusterBlocks.builder();
507+
for (IndexMetadata indexMetadata : indicesMetadatas) {
508+
if (indexMetadata.getState() == IndexMetadata.State.CLOSE) {
509+
builder.addIndexBlock(indexMetadata.getIndex().getName(), MetadataIndexStateService.INDEX_CLOSED_BLOCK);
510+
}
511+
}
512+
return builder.build();
513+
}
418514
}

0 commit comments

Comments
 (0)