Skip to content

Commit 7bee0c1

Browse files
Remove legacy node selector from tests (ES-9378) (#119095)
Part of addressing and removing all occurrences of the Java annotation @UpdateForV9
1 parent c239b62 commit 7bee0c1

File tree

5 files changed

+9
-132
lines changed

5 files changed

+9
-132
lines changed

rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite;
1515

1616
import org.apache.lucene.tests.util.TimeUnits;
17-
import org.elasticsearch.core.UpdateForV9;
1817
import org.elasticsearch.test.cluster.ElasticsearchCluster;
1918
import org.elasticsearch.test.cluster.FeatureFlag;
2019
import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate;
@@ -43,15 +42,9 @@ public ClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate
4342
super(testCandidate);
4443
}
4544

46-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // remove restCompat check
4745
@ParametersFactory
4846
public static Iterable<Object[]> parameters() throws Exception {
49-
String restCompatProperty = System.getProperty("tests.restCompat");
50-
if ("true".equals(restCompatProperty)) {
51-
return createParametersWithLegacyNodeSelectorSupport();
52-
} else {
53-
return createParameters();
54-
}
47+
return createParameters();
5548
}
5649

5750
@Override

test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/ESClientYamlSuiteTestCase.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,15 @@
2525
import org.elasticsearch.common.Strings;
2626
import org.elasticsearch.common.xcontent.support.XContentMapValues;
2727
import org.elasticsearch.core.IOUtils;
28-
import org.elasticsearch.core.UpdateForV9;
2928
import org.elasticsearch.test.ClasspathUtils;
3029
import org.elasticsearch.test.rest.ESRestTestCase;
3130
import org.elasticsearch.test.rest.TestFeatureService;
3231
import org.elasticsearch.test.rest.yaml.restspec.ClientYamlSuiteRestApi;
3332
import org.elasticsearch.test.rest.yaml.restspec.ClientYamlSuiteRestSpec;
3433
import org.elasticsearch.test.rest.yaml.section.ClientYamlTestSection;
3534
import org.elasticsearch.test.rest.yaml.section.ClientYamlTestSuite;
36-
import org.elasticsearch.test.rest.yaml.section.DoSection;
3735
import org.elasticsearch.test.rest.yaml.section.ExecutableSection;
3836
import org.elasticsearch.xcontent.NamedXContentRegistry;
39-
import org.elasticsearch.xcontent.ParseField;
4037
import org.junit.AfterClass;
4138
import org.junit.Before;
4239

@@ -58,7 +55,6 @@
5855
import java.util.SortedSet;
5956
import java.util.TreeSet;
6057
import java.util.stream.Collectors;
61-
import java.util.stream.Stream;
6258

6359
/**
6460
* Runs a suite of yaml tests shared with all the official Elasticsearch
@@ -217,28 +213,6 @@ public static void closeClient() throws IOException {
217213
}
218214
}
219215

220-
/**
221-
* Create parameters for this parameterized test.
222-
* Enables support for parsing the legacy version-based node_selector format.
223-
*/
224-
@Deprecated
225-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA)
226-
public static Iterable<Object[]> createParametersWithLegacyNodeSelectorSupport() throws Exception {
227-
var executableSectionRegistry = new NamedXContentRegistry(
228-
Stream.concat(
229-
ExecutableSection.DEFAULT_EXECUTABLE_CONTEXTS.stream().filter(entry -> entry.name.getPreferredName().equals("do") == false),
230-
Stream.of(
231-
new NamedXContentRegistry.Entry(
232-
ExecutableSection.class,
233-
new ParseField("do"),
234-
DoSection::parseWithLegacyNodeSelectorSupport
235-
)
236-
)
237-
).toList()
238-
);
239-
return createParameters(executableSectionRegistry, null);
240-
}
241-
242216
/**
243217
* Create parameters for this parameterized test. Uses the
244218
* {@link ExecutableSection#XCONTENT_REGISTRY list} of executable sections

test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/DoSection.java

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.elasticsearch.common.Strings;
2020
import org.elasticsearch.common.logging.HeaderWarning;
2121
import org.elasticsearch.core.Tuple;
22-
import org.elasticsearch.core.UpdateForV9;
2322
import org.elasticsearch.index.mapper.SourceFieldMapper;
2423
import org.elasticsearch.rest.action.admin.indices.RestPutIndexTemplateAction;
2524
import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext;
@@ -84,16 +83,6 @@
8483
*/
8584
public class DoSection implements ExecutableSection {
8685
public static DoSection parse(XContentParser parser) throws IOException {
87-
return parse(parser, false);
88-
}
89-
90-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA)
91-
@Deprecated
92-
public static DoSection parseWithLegacyNodeSelectorSupport(XContentParser parser) throws IOException {
93-
return parse(parser, true);
94-
}
95-
96-
private static DoSection parse(XContentParser parser, boolean enableLegacyNodeSelectorSupport) throws IOException {
9786
String currentFieldName = null;
9887
XContentParser.Token token;
9988

@@ -183,7 +172,7 @@ private static DoSection parse(XContentParser parser, boolean enableLegacyNodeSe
183172
if (token == XContentParser.Token.FIELD_NAME) {
184173
selectorName = parser.currentName();
185174
} else {
186-
NodeSelector newSelector = buildNodeSelector(selectorName, parser, enableLegacyNodeSelectorSupport);
175+
NodeSelector newSelector = buildNodeSelector(selectorName, parser);
187176
nodeSelector = nodeSelector == NodeSelector.ANY
188177
? newSelector
189178
: new ComposeNodeSelector(nodeSelector, newSelector);
@@ -604,11 +593,10 @@ private String formatStatusCodeMessage(ClientYamlTestResponse restTestResponse,
604593
)
605594
);
606595

607-
private static NodeSelector buildNodeSelector(String name, XContentParser parser, boolean enableLegacyVersionSupport)
608-
throws IOException {
596+
private static NodeSelector buildNodeSelector(String name, XContentParser parser) throws IOException {
609597
return switch (name) {
610598
case "attribute" -> parseAttributeValuesSelector(parser);
611-
case "version" -> parseVersionSelector(parser, enableLegacyVersionSupport);
599+
case "version" -> parseVersionSelector(parser);
612600
default -> throw new XContentParseException(parser.getTokenLocation(), "unknown node_selector [" + name + "]");
613601
};
614602
}
@@ -673,7 +661,7 @@ private static boolean matchWithRange(
673661
}
674662
}
675663

676-
private static NodeSelector parseVersionSelector(XContentParser parser, boolean enableLegacyVersionSupport) throws IOException {
664+
private static NodeSelector parseVersionSelector(XContentParser parser) throws IOException {
677665
if (false == parser.currentToken().isValue()) {
678666
throw new XContentParseException(parser.getTokenLocation(), "expected [version] to be a value");
679667
}
@@ -687,16 +675,10 @@ private static NodeSelector parseVersionSelector(XContentParser parser, boolean
687675
nodeMatcher = nodeVersion -> Build.current().version().equals(nodeVersion) == false;
688676
versionSelectorString = "version is not current (original)";
689677
} else {
690-
if (enableLegacyVersionSupport) {
691-
var acceptedVersionRange = VersionRange.parseVersionRanges(parser.text());
692-
nodeMatcher = nodeVersion -> matchWithRange(nodeVersion, acceptedVersionRange, parser.getTokenLocation());
693-
versionSelectorString = "version ranges " + acceptedVersionRange;
694-
} else {
695-
throw new XContentParseException(
696-
parser.getTokenLocation(),
697-
"unknown version selector [" + parser.text() + "]. Only [current] and [original] are allowed."
698-
);
699-
}
678+
throw new XContentParseException(
679+
parser.getTokenLocation(),
680+
"unknown version selector [" + parser.text() + "]. Only [current] and [original] are allowed."
681+
);
700682
}
701683

702684
return new NodeSelector() {

test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/PrerequisiteSection.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.elasticsearch.common.Strings;
1313
import org.elasticsearch.common.util.set.Sets;
1414
import org.elasticsearch.core.CheckedFunction;
15-
import org.elasticsearch.core.UpdateForV9;
1615
import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext;
1716
import org.elasticsearch.test.rest.yaml.Features;
1817
import org.elasticsearch.xcontent.XContentLocation;
@@ -305,7 +304,6 @@ static void parseSkipSection(XContentParser parser, PrerequisiteSectionBuilder b
305304
boolean valid = false;
306305
if (parser.currentToken().isValue()) {
307306
valid = switch (parser.currentName()) {
308-
case "version" -> parseRestCompatVersion(parser, builder);
309307
case "reason" -> parseString(parser, builder::setSkipReason);
310308
case "features" -> parseString(parser, f -> parseFeatureField(f, builder));
311309
case "os" -> parseString(parser, builder::skipIfOs);
@@ -328,17 +326,6 @@ static void parseSkipSection(XContentParser parser, PrerequisiteSectionBuilder b
328326
parser.nextToken();
329327
}
330328

331-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA)
332-
private static boolean parseRestCompatVersion(XContentParser parser, PrerequisiteSectionBuilder builder) throws IOException {
333-
// allow skip version only for v7 REST compatibility tests, to be removed for V9
334-
if ("true".equals(System.getProperty("tests.restCompat"))) return parseString(parser, builder::skipIfVersion);
335-
throw new IllegalArgumentException(
336-
"Skipping by version is no longer supported, please skip based on cluster features. Please check the docs: \n"
337-
+ "https://github.com/elastic/elasticsearch/tree/main"
338-
+ "/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test#skipping-tests"
339-
);
340-
}
341-
342329
private static void throwUnexpectedField(String section, XContentParser parser) throws IOException {
343330
throw new ParsingException(
344331
parser.getTokenLocation(),

test/yaml-rest-runner/src/test/java/org/elasticsearch/test/rest/yaml/section/DoSectionTests.java

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616
import org.elasticsearch.common.ParsingException;
1717
import org.elasticsearch.common.logging.HeaderWarning;
1818
import org.elasticsearch.core.Strings;
19-
import org.elasticsearch.core.UpdateForV9;
20-
import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext;
21-
import org.elasticsearch.test.rest.yaml.ClientYamlTestResponse;
2219
import org.elasticsearch.xcontent.XContentLocation;
2320
import org.elasticsearch.xcontent.XContentParseException;
2421
import org.elasticsearch.xcontent.XContentParser;
@@ -31,21 +28,16 @@
3128
import java.util.HashMap;
3229
import java.util.List;
3330
import java.util.Map;
34-
import java.util.Set;
3531
import java.util.regex.Pattern;
3632

3733
import static java.util.Collections.emptyList;
38-
import static java.util.Collections.emptyMap;
3934
import static java.util.Collections.singletonList;
4035
import static java.util.Collections.singletonMap;
4136
import static org.hamcrest.CoreMatchers.equalTo;
4237
import static org.hamcrest.Matchers.endsWith;
4338
import static org.hamcrest.Matchers.is;
4439
import static org.hamcrest.Matchers.notNullValue;
4540
import static org.hamcrest.Matchers.nullValue;
46-
import static org.mockito.Mockito.mock;
47-
import static org.mockito.Mockito.verify;
48-
import static org.mockito.Mockito.when;
4941

5042
public class DoSectionTests extends AbstractClientYamlTestFragmentParserTestCase {
5143

@@ -580,57 +572,6 @@ public void testParseDoSectionAllowedWarnings() throws Exception {
580572
assertThat(e.getMessage(), equalTo("the warning [foo] was both allowed and expected"));
581573
}
582574

583-
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // remove
584-
public void testLegacyNodeSelectorByVersionRange() throws IOException {
585-
parser = createParser(YamlXContent.yamlXContent, """
586-
node_selector:
587-
version: 5.2.0-6.0.0
588-
indices.get_field_mapping:
589-
index: test_index""");
590-
591-
DoSection doSection = DoSection.parseWithLegacyNodeSelectorSupport(parser);
592-
assertNotSame(NodeSelector.ANY, doSection.getApiCallSection().getNodeSelector());
593-
Node v170 = nodeWithVersion("1.7.0");
594-
Node v521 = nodeWithVersion("5.2.1");
595-
Node v550 = nodeWithVersion("5.5.0");
596-
Node v612 = nodeWithVersion("6.1.2");
597-
List<Node> nodes = new ArrayList<>();
598-
nodes.add(v170);
599-
nodes.add(v521);
600-
nodes.add(v550);
601-
nodes.add(v612);
602-
doSection.getApiCallSection().getNodeSelector().select(nodes);
603-
assertEquals(Arrays.asList(v521, v550), nodes);
604-
ClientYamlTestExecutionContext context = mock(ClientYamlTestExecutionContext.class);
605-
ClientYamlTestResponse mockResponse = mock(ClientYamlTestResponse.class);
606-
when(
607-
context.callApi(
608-
"indices.get_field_mapping",
609-
singletonMap("index", "test_index"),
610-
emptyList(),
611-
emptyMap(),
612-
doSection.getApiCallSection().getNodeSelector()
613-
)
614-
).thenReturn(mockResponse);
615-
when(context.nodesVersions()).thenReturn(Set.of(randomAlphaOfLength(10)));
616-
when(mockResponse.getHeaders("X-elastic-product")).thenReturn(List.of("Elasticsearch"));
617-
doSection.execute(context);
618-
verify(context).callApi(
619-
"indices.get_field_mapping",
620-
singletonMap("index", "test_index"),
621-
emptyList(),
622-
emptyMap(),
623-
doSection.getApiCallSection().getNodeSelector()
624-
);
625-
626-
{
627-
List<Node> badNodes = new ArrayList<>();
628-
badNodes.add(new Node(new HttpHost("dummy")));
629-
Exception e = expectThrows(IllegalStateException.class, () -> doSection.getApiCallSection().getNodeSelector().select(badNodes));
630-
assertEquals("expected [version] metadata to be set but got [host=http://dummy]", e.getMessage());
631-
}
632-
}
633-
634575
public void testNodeSelectorByVersionRangeFails() throws IOException {
635576
parser = createParser(YamlXContent.yamlXContent, """
636577
node_selector:

0 commit comments

Comments
 (0)