Skip to content

Commit 87cf81e

Browse files
authored
Migrate some more mapper test cases (elastic#61507) (elastic#61552)
Migrate some more mapper test cases from `ESSingleNodeTestCase` to `MapperTestCase`.
1 parent 8b56441 commit 87cf81e

File tree

9 files changed

+479
-1022
lines changed

9 files changed

+479
-1022
lines changed

modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RankFeatureFieldMapperTests.java

+43-86
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,9 @@
2626
import org.elasticsearch.Version;
2727
import org.elasticsearch.cluster.metadata.IndexMetadata;
2828
import org.elasticsearch.common.Strings;
29-
import org.elasticsearch.common.bytes.BytesReference;
3029
import org.elasticsearch.common.collect.List;
31-
import org.elasticsearch.common.compress.CompressedXContent;
3230
import org.elasticsearch.common.settings.Settings;
33-
import org.elasticsearch.common.xcontent.XContentFactory;
34-
import org.elasticsearch.common.xcontent.XContentType;
35-
import org.elasticsearch.index.IndexService;
31+
import org.elasticsearch.common.xcontent.XContentBuilder;
3632
import org.elasticsearch.plugins.Plugin;
3733
import org.hamcrest.Matchers;
3834
import org.junit.Before;
@@ -42,29 +38,23 @@
4238
import java.util.Collection;
4339
import java.util.Set;
4440

45-
public class RankFeatureFieldMapperTests extends FieldMapperTestCase<RankFeatureFieldMapper.Builder> {
46-
47-
IndexService indexService;
48-
DocumentMapperParser parser;
49-
41+
public class RankFeatureFieldMapperTests extends FieldMapperTestCase2<RankFeatureFieldMapper.Builder> {
5042
@Override
5143
protected Set<String> unsupportedProperties() {
5244
return org.elasticsearch.common.collect.Set.of("analyzer", "similarity", "store", "doc_values", "index");
5345
}
5446

5547
@Before
5648
public void setup() {
57-
indexService = createIndex("test");
58-
parser = indexService.mapperService().documentMapperParser();
5949
addModifier("positive_score_impact", false, (a, b) -> {
6050
a.positiveScoreImpact(true);
6151
b.positiveScoreImpact(false);
6252
});
6353
}
6454

6555
@Override
66-
protected Collection<Class<? extends Plugin>> getPlugins() {
67-
return pluginList(MapperExtrasPlugin.class);
56+
protected Collection<? extends Plugin> getPlugins() {
57+
return List.of(new MapperExtrasPlugin());
6858
}
6959

7060
static int getFrequency(TokenStream tk) throws IOException {
@@ -81,34 +71,27 @@ protected RankFeatureFieldMapper.Builder newBuilder() {
8171
return new RankFeatureFieldMapper.Builder("rank-feature");
8272
}
8373

84-
public void testDefaults() throws Exception {
85-
String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
86-
.startObject("properties").startObject("field").field("type", "rank_feature").endObject().endObject()
87-
.endObject().endObject());
88-
89-
DocumentMapper mapper = parser.parse("type", new CompressedXContent(mapping));
74+
@Override
75+
protected void minimalMapping(XContentBuilder b) throws IOException {
76+
b.field("type", "rank_feature");
77+
}
9078

91-
assertEquals(mapping, mapper.mappingSource().toString());
79+
@Override
80+
protected boolean supportsMeta() {
81+
return false;
82+
}
9283

93-
ParsedDocument doc1 = mapper.parse(new SourceToParse("test", "type", "1", BytesReference
94-
.bytes(XContentFactory.jsonBuilder()
95-
.startObject()
96-
.field("field", 10)
97-
.endObject()),
98-
XContentType.JSON));
84+
public void testDefaults() throws Exception {
85+
DocumentMapper mapper = createDocumentMapper(fieldMapping(this::minimalMapping));
86+
assertEquals(Strings.toString(fieldMapping(this::minimalMapping)), mapper.mappingSource().toString());
9987

88+
ParsedDocument doc1 = mapper.parse(source(b -> b.field("field", 10)));
10089
IndexableField[] fields = doc1.rootDoc().getFields("_feature");
10190
assertEquals(1, fields.length);
10291
assertThat(fields[0], Matchers.instanceOf(FeatureField.class));
10392
FeatureField featureField1 = (FeatureField) fields[0];
10493

105-
ParsedDocument doc2 = mapper.parse(new SourceToParse("test", "type", "1", BytesReference
106-
.bytes(XContentFactory.jsonBuilder()
107-
.startObject()
108-
.field("field", 12)
109-
.endObject()),
110-
XContentType.JSON));
111-
94+
ParsedDocument doc2 = mapper.parse(source(b -> b.field("field", 12)));
11295
FeatureField featureField2 = (FeatureField) doc2.rootDoc().getFields("_feature")[0];
11396

11497
int freq1 = getFrequency(featureField1.tokenStream(null, null));
@@ -117,34 +100,17 @@ public void testDefaults() throws Exception {
117100
}
118101

119102
public void testNegativeScoreImpact() throws Exception {
120-
String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
121-
.startObject("properties").startObject("field").field("type", "rank_feature")
122-
.field("positive_score_impact", false).endObject().endObject()
123-
.endObject().endObject());
124-
125-
DocumentMapper mapper = parser.parse("type", new CompressedXContent(mapping));
126-
127-
assertEquals(mapping, mapper.mappingSource().toString());
128-
129-
ParsedDocument doc1 = mapper.parse(new SourceToParse("test", "type", "1", BytesReference
130-
.bytes(XContentFactory.jsonBuilder()
131-
.startObject()
132-
.field("field", 10)
133-
.endObject()),
134-
XContentType.JSON));
103+
DocumentMapper mapper = createDocumentMapper(
104+
fieldMapping(b -> b.field("type", "rank_feature").field("positive_score_impact", false))
105+
);
135106

107+
ParsedDocument doc1 = mapper.parse(source(b -> b.field("field", 10)));
136108
IndexableField[] fields = doc1.rootDoc().getFields("_feature");
137109
assertEquals(1, fields.length);
138110
assertThat(fields[0], Matchers.instanceOf(FeatureField.class));
139111
FeatureField featureField1 = (FeatureField) fields[0];
140112

141-
ParsedDocument doc2 = mapper.parse(new SourceToParse("test", "type", "1", BytesReference
142-
.bytes(XContentFactory.jsonBuilder()
143-
.startObject()
144-
.field("field", 12)
145-
.endObject()),
146-
XContentType.JSON));
147-
113+
ParsedDocument doc2 = mapper.parse(source(b -> b.field("field", 12)));
148114
FeatureField featureField2 = (FeatureField) doc2.rootDoc().getFields("_feature")[0];
149115

150116
int freq1 = getFrequency(featureField1.tokenStream(null, null));
@@ -153,39 +119,30 @@ public void testNegativeScoreImpact() throws Exception {
153119
}
154120

155121
public void testRejectMultiValuedFields() throws MapperParsingException, IOException {
156-
String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
157-
.startObject("properties").startObject("field").field("type", "rank_feature").endObject().startObject("foo")
158-
.startObject("properties").startObject("field").field("type", "rank_feature").endObject().endObject()
159-
.endObject().endObject().endObject().endObject());
160-
161-
DocumentMapper mapper = parser.parse("type", new CompressedXContent(mapping));
162-
163-
assertEquals(mapping, mapper.mappingSource().toString());
164-
165-
MapperParsingException e = expectThrows(MapperParsingException.class,
166-
() -> mapper.parse(new SourceToParse("test", "type", "1", BytesReference
167-
.bytes(XContentFactory.jsonBuilder()
168-
.startObject()
169-
.field("field", Arrays.asList(10, 20))
170-
.endObject()),
171-
XContentType.JSON)));
122+
DocumentMapper mapper = createDocumentMapper(mapping(b -> {
123+
b.startObject("field").field("type", "rank_feature").endObject();
124+
b.startObject("foo").startObject("properties");
125+
{
126+
b.startObject("field").field("type", "rank_feature").endObject();
127+
}
128+
b.endObject().endObject();
129+
}));
130+
131+
MapperParsingException e = expectThrows(
132+
MapperParsingException.class,
133+
() -> mapper.parse(source(b -> b.field("field", Arrays.asList(10, 20))))
134+
);
172135
assertEquals("[rank_feature] fields do not support indexing multiple values for the same field [field] in the same document",
173136
e.getCause().getMessage());
174137

175-
e = expectThrows(MapperParsingException.class,
176-
() -> mapper.parse(new SourceToParse("test", "type", "1", BytesReference
177-
.bytes(XContentFactory.jsonBuilder()
178-
.startObject()
179-
.startArray("foo")
180-
.startObject()
181-
.field("field", 10)
182-
.endObject()
183-
.startObject()
184-
.field("field", 20)
185-
.endObject()
186-
.endArray()
187-
.endObject()),
188-
XContentType.JSON)));
138+
e = expectThrows(MapperParsingException.class, () -> mapper.parse(source(b -> {
139+
b.startArray("foo");
140+
{
141+
b.startObject().field("field", 10).endObject();
142+
b.startObject().field("field", 20).endObject();
143+
}
144+
b.endArray();
145+
})));
189146
assertEquals("[rank_feature] fields do not support indexing multiple values for the same field [foo.field] in the same document",
190147
e.getCause().getMessage());
191148
}

modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RankFeaturesFieldMapperTests.java

+35-67
Original file line numberDiff line numberDiff line change
@@ -22,59 +22,42 @@
2222
import org.apache.lucene.document.FeatureField;
2323
import org.apache.lucene.index.IndexableField;
2424
import org.elasticsearch.common.Strings;
25-
import org.elasticsearch.common.bytes.BytesReference;
26-
import org.elasticsearch.common.compress.CompressedXContent;
27-
import org.elasticsearch.common.xcontent.XContentFactory;
28-
import org.elasticsearch.common.xcontent.XContentType;
29-
import org.elasticsearch.index.IndexService;
25+
import org.elasticsearch.common.xcontent.XContentBuilder;
3026
import org.elasticsearch.plugins.Plugin;
3127
import org.hamcrest.Matchers;
32-
import org.junit.Before;
3328

3429
import java.io.IOException;
3530
import java.util.Arrays;
3631
import java.util.Collection;
3732
import java.util.Set;
3833

39-
public class RankFeaturesFieldMapperTests extends FieldMapperTestCase<RankFeaturesFieldMapper.Builder> {
34+
public class RankFeaturesFieldMapperTests extends FieldMapperTestCase2<RankFeaturesFieldMapper.Builder> {
4035

4136
@Override
4237
protected Set<String> unsupportedProperties() {
4338
return org.elasticsearch.common.collect.Set.of("analyzer", "similarity", "store", "doc_values", "index");
4439
}
4540

46-
IndexService indexService;
47-
DocumentMapperParser parser;
41+
@Override
42+
protected Collection<? extends Plugin> getPlugins() {
43+
return org.elasticsearch.common.collect.List.of(new MapperExtrasPlugin());
44+
}
4845

49-
@Before
50-
public void setup() {
51-
indexService = createIndex("test");
52-
parser = indexService.mapperService().documentMapperParser();
46+
@Override
47+
protected void minimalMapping(XContentBuilder b) throws IOException {
48+
b.field("type", "rank_features");
5349
}
5450

5551
@Override
56-
protected Collection<Class<? extends Plugin>> getPlugins() {
57-
return pluginList(MapperExtrasPlugin.class);
52+
protected boolean supportsMeta() {
53+
return false;
5854
}
5955

6056
public void testDefaults() throws Exception {
61-
String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
62-
.startObject("properties").startObject("field").field("type", "rank_features").endObject().endObject()
63-
.endObject().endObject());
64-
65-
DocumentMapper mapper = parser.parse("type", new CompressedXContent(mapping));
66-
67-
assertEquals(mapping, mapper.mappingSource().toString());
57+
DocumentMapper mapper = createDocumentMapper(fieldMapping(this::minimalMapping));
58+
assertEquals(Strings.toString(fieldMapping(this::minimalMapping)), mapper.mappingSource().toString());
6859

69-
ParsedDocument doc1 = mapper.parse(new SourceToParse("test", "type", "1", BytesReference
70-
.bytes(XContentFactory.jsonBuilder()
71-
.startObject()
72-
.startObject("field")
73-
.field("foo", 10)
74-
.field("bar", 20)
75-
.endObject()
76-
.endObject()),
77-
XContentType.JSON));
60+
ParsedDocument doc1 = mapper.parse(source(b -> b.startObject("field").field("foo", 10).field("bar", 20).endObject()));
7861

7962
IndexableField[] fields = doc1.rootDoc().getFields("field");
8063
assertEquals(2, fields.length);
@@ -90,45 +73,30 @@ public void testDefaults() throws Exception {
9073
}
9174

9275
public void testRejectMultiValuedFields() throws MapperParsingException, IOException {
93-
String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
94-
.startObject("properties").startObject("field").field("type", "rank_features").endObject().startObject("foo")
95-
.startObject("properties").startObject("field").field("type", "rank_features").endObject().endObject()
96-
.endObject().endObject().endObject().endObject());
97-
98-
DocumentMapper mapper = parser.parse("type", new CompressedXContent(mapping));
99-
100-
assertEquals(mapping, mapper.mappingSource().toString());
101-
102-
MapperParsingException e = expectThrows(MapperParsingException.class,
103-
() -> mapper.parse(new SourceToParse("test", "type", "1", BytesReference
104-
.bytes(XContentFactory.jsonBuilder()
105-
.startObject()
106-
.startObject("field")
107-
.field("foo", Arrays.asList(10, 20))
108-
.endObject()
109-
.endObject()),
110-
XContentType.JSON)));
76+
DocumentMapper mapper = createDocumentMapper(mapping(b -> {
77+
b.startObject("field").field("type", "rank_features").endObject();
78+
b.startObject("foo").startObject("properties");
79+
{
80+
b.startObject("field").field("type", "rank_features").endObject();
81+
}
82+
b.endObject().endObject();
83+
}));
84+
85+
MapperParsingException e = expectThrows(
86+
MapperParsingException.class,
87+
() -> mapper.parse(source(b -> b.startObject("field").field("foo", Arrays.asList(10, 20)).endObject()))
88+
);
11189
assertEquals("[rank_features] fields take hashes that map a feature to a strictly positive float, but got unexpected token " +
11290
"START_ARRAY", e.getCause().getMessage());
11391

114-
e = expectThrows(MapperParsingException.class,
115-
() -> mapper.parse(new SourceToParse("test", "type", "1", BytesReference
116-
.bytes(XContentFactory.jsonBuilder()
117-
.startObject()
118-
.startArray("foo")
119-
.startObject()
120-
.startObject("field")
121-
.field("bar", 10)
122-
.endObject()
123-
.endObject()
124-
.startObject()
125-
.startObject("field")
126-
.field("bar", 20)
127-
.endObject()
128-
.endObject()
129-
.endArray()
130-
.endObject()),
131-
XContentType.JSON)));
92+
e = expectThrows(MapperParsingException.class, () -> mapper.parse(source(b -> {
93+
b.startArray("foo");
94+
{
95+
b.startObject().startObject("field").field("bar", 10).endObject().endObject();
96+
b.startObject().startObject("field").field("bar", 20).endObject().endObject();
97+
}
98+
b.endArray();
99+
})));
132100
assertEquals("[rank_features] fields do not support indexing multiple values for the same rank feature [foo.field.bar] in " +
133101
"the same document", e.getCause().getMessage());
134102
}

0 commit comments

Comments
 (0)