Skip to content

Commit f333a79

Browse files
authored
Consolidate FailingFieldPlugin to a single class (#119302)
1 parent bd27933 commit f333a79

File tree

4 files changed

+72
-156
lines changed

4 files changed

+72
-156
lines changed

server/src/internalClusterTest/java/org/elasticsearch/monitor/metrics/IndicesMetricsIT.java

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,14 @@
1616
import org.elasticsearch.common.settings.Settings;
1717
import org.elasticsearch.core.TimeValue;
1818
import org.elasticsearch.index.IndexMode;
19-
import org.elasticsearch.index.mapper.OnScriptError;
2019
import org.elasticsearch.index.query.RangeQueryBuilder;
2120
import org.elasticsearch.indices.IndicesService;
2221
import org.elasticsearch.plugins.Plugin;
2322
import org.elasticsearch.plugins.PluginsService;
24-
import org.elasticsearch.plugins.ScriptPlugin;
25-
import org.elasticsearch.script.LongFieldScript;
26-
import org.elasticsearch.script.ScriptContext;
27-
import org.elasticsearch.script.ScriptEngine;
28-
import org.elasticsearch.search.lookup.SearchLookup;
2923
import org.elasticsearch.telemetry.Measurement;
3024
import org.elasticsearch.telemetry.TestTelemetryPlugin;
3125
import org.elasticsearch.test.ESIntegTestCase;
26+
import org.elasticsearch.test.FailingFieldPlugin;
3227
import org.elasticsearch.xcontent.XContentParser;
3328
import org.elasticsearch.xcontent.json.JsonXContent;
3429
import org.hamcrest.Matcher;
@@ -37,7 +32,6 @@
3732
import java.util.Collection;
3833
import java.util.List;
3934
import java.util.Map;
40-
import java.util.Set;
4135

4236
import static org.elasticsearch.index.mapper.DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER;
4337
import static org.hamcrest.Matchers.equalTo;
@@ -455,48 +449,4 @@ private Map<String, Object> parseMapping(String mapping) throws IOException {
455449
return parser.map();
456450
}
457451
}
458-
459-
public static class FailingFieldPlugin extends Plugin implements ScriptPlugin {
460-
461-
@Override
462-
public ScriptEngine getScriptEngine(Settings settings, Collection<ScriptContext<?>> contexts) {
463-
return new ScriptEngine() {
464-
@Override
465-
public String getType() {
466-
return "failing_field";
467-
}
468-
469-
@Override
470-
@SuppressWarnings("unchecked")
471-
public <FactoryType> FactoryType compile(
472-
String name,
473-
String code,
474-
ScriptContext<FactoryType> context,
475-
Map<String, String> params
476-
) {
477-
return (FactoryType) new LongFieldScript.Factory() {
478-
@Override
479-
public LongFieldScript.LeafFactory newFactory(
480-
String fieldName,
481-
Map<String, Object> params,
482-
SearchLookup searchLookup,
483-
OnScriptError onScriptError
484-
) {
485-
return ctx -> new LongFieldScript(fieldName, params, searchLookup, onScriptError, ctx) {
486-
@Override
487-
public void execute() {
488-
throw new IllegalStateException("Accessing failing field");
489-
}
490-
};
491-
}
492-
};
493-
}
494-
495-
@Override
496-
public Set<ScriptContext<?>> getSupportedContexts() {
497-
return Set.of(LongFieldScript.CONTEXT);
498-
}
499-
};
500-
}
501-
}
502452
}

server/src/internalClusterTest/java/org/elasticsearch/search/stats/SearchStatsIT.java

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,17 @@
1919
import org.elasticsearch.cluster.routing.ShardRouting;
2020
import org.elasticsearch.common.settings.Settings;
2121
import org.elasticsearch.core.TimeValue;
22-
import org.elasticsearch.index.mapper.OnScriptError;
2322
import org.elasticsearch.index.query.QueryBuilders;
2423
import org.elasticsearch.index.query.RangeQueryBuilder;
2524
import org.elasticsearch.index.search.stats.SearchStats.Stats;
2625
import org.elasticsearch.plugins.Plugin;
27-
import org.elasticsearch.plugins.ScriptPlugin;
28-
import org.elasticsearch.script.LongFieldScript;
2926
import org.elasticsearch.script.MockScriptPlugin;
3027
import org.elasticsearch.script.Script;
31-
import org.elasticsearch.script.ScriptContext;
32-
import org.elasticsearch.script.ScriptEngine;
3328
import org.elasticsearch.script.ScriptType;
3429
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
35-
import org.elasticsearch.search.lookup.SearchLookup;
3630
import org.elasticsearch.search.lookup.Source;
3731
import org.elasticsearch.test.ESIntegTestCase;
32+
import org.elasticsearch.test.FailingFieldPlugin;
3833
import org.elasticsearch.xcontent.XContentBuilder;
3934
import org.elasticsearch.xcontent.json.JsonXContent;
4035

@@ -80,50 +75,6 @@ protected Map<String, Function<Map<String, Object>, Object>> pluginScripts() {
8075
}
8176
}
8277

83-
public static class FailingFieldPlugin extends Plugin implements ScriptPlugin {
84-
85-
@Override
86-
public ScriptEngine getScriptEngine(Settings settings, Collection<ScriptContext<?>> contexts) {
87-
return new ScriptEngine() {
88-
@Override
89-
public String getType() {
90-
return "failing_field";
91-
}
92-
93-
@Override
94-
@SuppressWarnings("unchecked")
95-
public <FactoryType> FactoryType compile(
96-
String name,
97-
String code,
98-
ScriptContext<FactoryType> context,
99-
Map<String, String> params
100-
) {
101-
return (FactoryType) new LongFieldScript.Factory() {
102-
@Override
103-
public LongFieldScript.LeafFactory newFactory(
104-
String fieldName,
105-
Map<String, Object> params,
106-
SearchLookup searchLookup,
107-
OnScriptError onScriptError
108-
) {
109-
return ctx -> new LongFieldScript(fieldName, params, searchLookup, onScriptError, ctx) {
110-
@Override
111-
public void execute() {
112-
throw new IllegalArgumentException("Accessing failing field");
113-
}
114-
};
115-
}
116-
};
117-
}
118-
119-
@Override
120-
public Set<ScriptContext<?>> getSupportedContexts() {
121-
return Set.of(LongFieldScript.CONTEXT);
122-
}
123-
};
124-
}
125-
}
126-
12778
@Override
12879
protected int numberOfReplicas() {
12980
return 0;
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.test;
11+
12+
import org.elasticsearch.common.settings.Settings;
13+
import org.elasticsearch.index.mapper.OnScriptError;
14+
import org.elasticsearch.plugins.Plugin;
15+
import org.elasticsearch.plugins.ScriptPlugin;
16+
import org.elasticsearch.script.LongFieldScript;
17+
import org.elasticsearch.script.ScriptContext;
18+
import org.elasticsearch.script.ScriptEngine;
19+
import org.elasticsearch.search.lookup.SearchLookup;
20+
21+
import java.util.Collection;
22+
import java.util.Map;
23+
import java.util.Set;
24+
25+
public class FailingFieldPlugin extends Plugin implements ScriptPlugin {
26+
27+
@Override
28+
public ScriptEngine getScriptEngine(Settings settings, Collection<ScriptContext<?>> contexts) {
29+
return new ScriptEngine() {
30+
@Override
31+
public String getType() {
32+
return "failing_field";
33+
}
34+
35+
@Override
36+
@SuppressWarnings("unchecked")
37+
public <FactoryType> FactoryType compile(
38+
String name,
39+
String code,
40+
ScriptContext<FactoryType> context,
41+
Map<String, String> params
42+
) {
43+
return (FactoryType) new LongFieldScript.Factory() {
44+
@Override
45+
public LongFieldScript.LeafFactory newFactory(
46+
String fieldName,
47+
Map<String, Object> params,
48+
SearchLookup searchLookup,
49+
OnScriptError onScriptError
50+
) {
51+
return ctx -> new LongFieldScript(fieldName, params, searchLookup, onScriptError, ctx) {
52+
@Override
53+
public void execute() {
54+
throw new IllegalStateException("Accessing failing field");
55+
}
56+
};
57+
}
58+
};
59+
}
60+
61+
@Override
62+
public Set<ScriptContext<?>> getSupportedContexts() {
63+
return Set.of(LongFieldScript.CONTEXT);
64+
}
65+
};
66+
}
67+
}

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlNodeFailureIT.java

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,17 @@
99

1010
import org.elasticsearch.ElasticsearchException;
1111
import org.elasticsearch.action.index.IndexRequestBuilder;
12-
import org.elasticsearch.common.settings.Settings;
1312
import org.elasticsearch.common.util.CollectionUtils;
14-
import org.elasticsearch.index.mapper.OnScriptError;
1513
import org.elasticsearch.plugins.Plugin;
16-
import org.elasticsearch.plugins.ScriptPlugin;
17-
import org.elasticsearch.script.LongFieldScript;
18-
import org.elasticsearch.script.ScriptContext;
19-
import org.elasticsearch.script.ScriptEngine;
20-
import org.elasticsearch.search.lookup.SearchLookup;
2114
import org.elasticsearch.test.ESIntegTestCase;
15+
import org.elasticsearch.test.FailingFieldPlugin;
2216
import org.elasticsearch.xcontent.XContentBuilder;
2317
import org.elasticsearch.xcontent.json.JsonXContent;
2418

2519
import java.io.IOException;
2620
import java.util.ArrayList;
2721
import java.util.Collection;
2822
import java.util.List;
29-
import java.util.Map;
30-
import java.util.Set;
3123

3224
import static org.hamcrest.Matchers.equalTo;
3325

@@ -51,7 +43,7 @@ public void testFailureLoadingFields() throws IOException {
5143
mapping.startObject("fail_me");
5244
{
5345
mapping.field("type", "long");
54-
mapping.startObject("script").field("source", "").field("lang", "fail").endObject();
46+
mapping.startObject("script").field("source", "").field("lang", "failing_field").endObject();
5547
}
5648
mapping.endObject();
5749
}
@@ -67,50 +59,6 @@ public void testFailureLoadingFields() throws IOException {
6759
indexRandom(true, docs);
6860

6961
ElasticsearchException e = expectThrows(ElasticsearchException.class, () -> run("FROM fail,ok | LIMIT 100").close());
70-
assertThat(e.getMessage(), equalTo("test failure"));
71-
}
72-
73-
public static class FailingFieldPlugin extends Plugin implements ScriptPlugin {
74-
75-
@Override
76-
public ScriptEngine getScriptEngine(Settings settings, Collection<ScriptContext<?>> contexts) {
77-
return new ScriptEngine() {
78-
@Override
79-
public String getType() {
80-
return "fail";
81-
}
82-
83-
@Override
84-
@SuppressWarnings("unchecked")
85-
public <FactoryType> FactoryType compile(
86-
String name,
87-
String code,
88-
ScriptContext<FactoryType> context,
89-
Map<String, String> params
90-
) {
91-
return (FactoryType) new LongFieldScript.Factory() {
92-
@Override
93-
public LongFieldScript.LeafFactory newFactory(
94-
String fieldName,
95-
Map<String, Object> params,
96-
SearchLookup searchLookup,
97-
OnScriptError onScriptError
98-
) {
99-
return ctx -> new LongFieldScript(fieldName, params, searchLookup, onScriptError, ctx) {
100-
@Override
101-
public void execute() {
102-
throw new ElasticsearchException("test failure");
103-
}
104-
};
105-
}
106-
};
107-
}
108-
109-
@Override
110-
public Set<ScriptContext<?>> getSupportedContexts() {
111-
return Set.of(LongFieldScript.CONTEXT);
112-
}
113-
};
114-
}
62+
assertThat(e.getMessage(), equalTo("Accessing failing field"));
11563
}
11664
}

0 commit comments

Comments
 (0)