Skip to content

Commit df95ae2

Browse files
committed
Fix CreateSnapshotRequestTests Failure (#31630)
Original test failure found here in issue (#31625). Had to rework the tests to only include options available externally for create snapshot requests.
1 parent bb1b7d0 commit df95ae2

File tree

3 files changed

+106
-15
lines changed

3 files changed

+106
-15
lines changed

server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java

+3
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,9 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
331331
builder.endArray();
332332
builder.field("ignore_unavailable", ignoreUnavailable());
333333
builder.field("allow_no_indices", allowNoIndices());
334+
builder.field("forbid_aliases_to_multiple_indices", allowAliasesToMultipleIndices() == false);
335+
builder.field("forbid_closed_indices", forbidClosedIndices());
336+
builder.field("ignore_aliases", ignoreAliases());
334337
return builder;
335338
}
336339

server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/create/CreateSnapshotRequestTests.java

+21-15
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
package org.elasticsearch.action.admin.cluster.snapshots.create;
2121

2222
import org.elasticsearch.action.support.IndicesOptions;
23+
import org.elasticsearch.action.support.IndicesOptions.Option;
24+
import org.elasticsearch.action.support.IndicesOptions.WildcardStates;
2325
import org.elasticsearch.common.bytes.BytesReference;
2426
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
27+
import org.elasticsearch.common.xcontent.ToXContent.MapParams;
2528
import org.elasticsearch.common.xcontent.XContentBuilder;
2629
import org.elasticsearch.common.xcontent.XContentFactory;
2730
import org.elasticsearch.common.xcontent.XContentParser;
@@ -30,6 +33,10 @@
3033

3134
import java.io.IOException;
3235
import java.util.ArrayList;
36+
import java.util.Arrays;
37+
import java.util.Collection;
38+
import java.util.Collections;
39+
import java.util.EnumSet;
3340
import java.util.HashMap;
3441
import java.util.List;
3542
import java.util.Map;
@@ -43,7 +50,7 @@ public void testToXContent() throws IOException {
4350

4451
CreateSnapshotRequest original = new CreateSnapshotRequest(repo, snap);
4552

46-
if (randomBoolean()) { // replace
53+
if (randomBoolean()) {
4754
List<String> indices = new ArrayList<>();
4855
int count = randomInt(3) + 1;
4956

@@ -54,44 +61,43 @@ public void testToXContent() throws IOException {
5461
original.indices(indices);
5562
}
5663

57-
if (randomBoolean()) { // replace
64+
if (randomBoolean()) {
5865
original.partial(randomBoolean());
5966
}
6067

61-
if (randomBoolean()) { // replace
68+
if (randomBoolean()) {
6269
Map<String, Object> settings = new HashMap<>();
6370
int count = randomInt(3) + 1;
6471

6572
for (int i = 0; i < count; ++i) {
6673
settings.put(randomAlphaOfLength(randomInt(3) + 2), randomAlphaOfLength(randomInt(3) + 2));
6774
}
6875

76+
original.settings(settings);
6977
}
7078

71-
if (randomBoolean()) { // replace
79+
if (randomBoolean()) {
7280
original.includeGlobalState(randomBoolean());
7381
}
7482

75-
if (randomBoolean()) { // replace
76-
IndicesOptions[] indicesOptions = new IndicesOptions[] {
77-
IndicesOptions.STRICT_EXPAND_OPEN,
78-
IndicesOptions.STRICT_EXPAND_OPEN_CLOSED,
79-
IndicesOptions.LENIENT_EXPAND_OPEN,
80-
IndicesOptions.STRICT_EXPAND_OPEN_FORBID_CLOSED,
81-
IndicesOptions.STRICT_SINGLE_INDEX_NO_EXPAND_FORBID_CLOSED};
83+
if (randomBoolean()) {
84+
Collection<WildcardStates> wildcardStates = randomSubsetOf(Arrays.asList(WildcardStates.values()));
85+
Collection<Option> options = randomSubsetOf(Arrays.asList(Option.ALLOW_NO_INDICES, Option.IGNORE_UNAVAILABLE));
8286

83-
original.indicesOptions(randomFrom(indicesOptions));
87+
original.indicesOptions(new IndicesOptions(
88+
options.isEmpty() ? Option.NONE : EnumSet.copyOf(options),
89+
wildcardStates.isEmpty() ? WildcardStates.NONE : EnumSet.copyOf(wildcardStates)));
8490
}
8591

86-
if (randomBoolean()) { // replace
92+
if (randomBoolean()) {
8793
original.waitForCompletion(randomBoolean());
8894
}
8995

90-
if (randomBoolean()) { // replace
96+
if (randomBoolean()) {
9197
original.masterNodeTimeout("60s");
9298
}
9399

94-
XContentBuilder builder = original.toXContent(XContentFactory.jsonBuilder(), null);
100+
XContentBuilder builder = original.toXContent(XContentFactory.jsonBuilder(), new MapParams(Collections.emptyMap()));
95101
XContentParser parser = XContentType.JSON.xContent().createParser(
96102
NamedXContentRegistry.EMPTY, null, BytesReference.bytes(builder).streamInput());
97103
Map<String, Object> map = parser.mapOrdered();

server/src/test/java/org/elasticsearch/action/support/IndicesOptionsTests.java

+82
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,27 @@
2020
package org.elasticsearch.action.support;
2121

2222
import org.elasticsearch.Version;
23+
import org.elasticsearch.action.support.IndicesOptions.Option;
24+
import org.elasticsearch.action.support.IndicesOptions.WildcardStates;
25+
import org.elasticsearch.common.bytes.BytesReference;
2326
import org.elasticsearch.common.io.stream.BytesStreamOutput;
2427
import org.elasticsearch.common.io.stream.StreamInput;
28+
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
29+
import org.elasticsearch.common.xcontent.ToXContent.MapParams;
30+
import org.elasticsearch.common.xcontent.XContentBuilder;
31+
import org.elasticsearch.common.xcontent.XContentFactory;
32+
import org.elasticsearch.common.xcontent.XContentParser;
33+
import org.elasticsearch.common.xcontent.XContentType;
2534
import org.elasticsearch.test.ESTestCase;
2635
import org.elasticsearch.test.EqualsHashCodeTestUtils;
2736

37+
import java.io.IOException;
38+
import java.util.Arrays;
39+
import java.util.Collection;
40+
import java.util.Collections;
41+
import java.util.EnumSet;
2842
import java.util.HashMap;
43+
import java.util.List;
2944
import java.util.Map;
3045

3146
import static org.elasticsearch.test.VersionUtils.randomVersionBetween;
@@ -246,4 +261,71 @@ public void testEqualityAndHashCode() {
246261
allowAliasesToMulti, forbidClosed, ignoreAliases);
247262
});
248263
}
264+
265+
public void testFromMap() {
266+
IndicesOptions defaults = IndicesOptions.strictExpandOpen();
267+
Collection<String> wildcardStates = randomBoolean() ?
268+
null : randomSubsetOf(Arrays.asList("open", "closed"));
269+
Boolean ignoreUnavailable = randomBoolean() ? null : randomBoolean();
270+
Boolean allowNoIndices = randomBoolean() ? null : randomBoolean();
271+
272+
Map<String, Object> settings = new HashMap<>();
273+
274+
if (wildcardStates != null) {
275+
settings.put("expand_wildcards", wildcardStates);
276+
}
277+
278+
if (ignoreUnavailable != null) {
279+
settings.put("ignore_unavailable", ignoreUnavailable);
280+
}
281+
282+
if (allowNoIndices != null) {
283+
settings.put("allow_no_indices", allowNoIndices);
284+
}
285+
286+
IndicesOptions fromMap = IndicesOptions.fromMap(settings, defaults);
287+
288+
boolean open = wildcardStates != null ? wildcardStates.contains("open") : defaults.expandWildcardsOpen();
289+
assertEquals(fromMap.expandWildcardsOpen(), open);
290+
boolean closed = wildcardStates != null ? wildcardStates.contains("closed") : defaults.expandWildcardsClosed();
291+
assertEquals(fromMap.expandWildcardsClosed(), closed);
292+
293+
assertEquals(fromMap.ignoreUnavailable(), ignoreUnavailable == null ? defaults.ignoreUnavailable() : ignoreUnavailable);
294+
assertEquals(fromMap.allowNoIndices(), allowNoIndices == null ? defaults.allowNoIndices() : allowNoIndices);
295+
}
296+
297+
public void testToXContent() throws IOException {
298+
Collection<WildcardStates> wildcardStates = randomSubsetOf(Arrays.asList(WildcardStates.values()));
299+
Collection<Option> options = randomSubsetOf(Arrays.asList(Option.values()));
300+
301+
IndicesOptions indicesOptions = new IndicesOptions(
302+
options.isEmpty() ? Option.NONE : EnumSet.copyOf(options),
303+
wildcardStates.isEmpty() ? WildcardStates.NONE : EnumSet.copyOf(wildcardStates));
304+
305+
XContentBuilder builder = XContentFactory.jsonBuilder();
306+
builder.startObject();
307+
indicesOptions.toXContent(builder, new MapParams(Collections.emptyMap()));
308+
builder.endObject();
309+
XContentParser parser = XContentType.JSON.xContent().createParser(
310+
NamedXContentRegistry.EMPTY, null, BytesReference.bytes(builder).streamInput());
311+
Map<String, Object> map = parser.mapOrdered();
312+
313+
boolean open = wildcardStates.contains(WildcardStates.OPEN);
314+
if (open) {
315+
assertTrue(((List)map.get("expand_wildcards")).contains("open"));
316+
} else {
317+
assertFalse(((List)map.get("expand_wildcards")).contains("open"));
318+
}
319+
boolean closed = wildcardStates.contains(WildcardStates.CLOSED);
320+
if (closed) {
321+
assertTrue(((List)map.get("expand_wildcards")).contains("closed"));
322+
} else {
323+
assertFalse(((List)map.get("expand_wildcards")).contains("closed"));
324+
}
325+
assertEquals(map.get("ignore_unavailable"), options.contains(Option.IGNORE_UNAVAILABLE));
326+
assertEquals(map.get("allow_no_indices"), options.contains(Option.ALLOW_NO_INDICES));
327+
assertEquals(map.get("forbid_aliases_to_multiple_indices"), options.contains(Option.FORBID_ALIASES_TO_MULTIPLE_INDICES));
328+
assertEquals(map.get("forbid_closed_indices"), options.contains(Option.FORBID_CLOSED_INDICES));
329+
assertEquals(map.get("ignore_aliases"), options.contains(Option.IGNORE_ALIASES));
330+
}
249331
}

0 commit comments

Comments
 (0)