Skip to content

Commit 969cd70

Browse files
authored
Restore source matching in randomized logsdb tests (elastic#120773)
Applies the fix in `SourceMatcher` from elastic#120756, along with disabling `SCALED_FLOAT` and `HALF_FLOAT` that have accuracy issues leading to false positives.
1 parent 0551355 commit 969cd70

File tree

5 files changed

+4
-22
lines changed

5 files changed

+4
-22
lines changed

server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -729,28 +729,20 @@ private static void parseNonDynamicArray(
729729

730730
XContentParser parser = context.parser();
731731
XContentParser.Token token;
732-
int elements = 0;
733732
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
734733
if (token == XContentParser.Token.START_OBJECT) {
735-
elements = Integer.MAX_VALUE;
736734
parseObject(context, lastFieldName);
737735
} else if (token == XContentParser.Token.START_ARRAY) {
738-
elements = Integer.MAX_VALUE;
739736
parseArray(context, lastFieldName);
740737
} else if (token == XContentParser.Token.VALUE_NULL) {
741-
elements++;
742738
parseNullValue(context, lastFieldName);
743739
} else if (token == null) {
744740
throwEOFOnParseArray(arrayFieldName, context);
745741
} else {
746742
assert token.isValue();
747-
elements++;
748743
parseValue(context, lastFieldName);
749744
}
750745
}
751-
if (elements <= 1 && canRemoveSingleLeafElement) {
752-
context.removeLastIgnoredField(fullPath);
753-
}
754746
postProcessDynamicArrayMapping(context, lastFieldName);
755747
}
756748

server/src/test/java/org/elasticsearch/index/mapper/IgnoredSourceFieldMapperTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -743,9 +743,7 @@ public void testIndexStoredArraySourceSingleLeafElement() throws IOException {
743743
b.startObject("int_value").field("type", "integer").endObject();
744744
})).documentMapper();
745745
var syntheticSource = syntheticSource(documentMapper, b -> b.array("int_value", new int[] { 10 }));
746-
assertEquals("{\"int_value\":10}", syntheticSource);
747-
ParsedDocument doc = documentMapper.parse(source(syntheticSource));
748-
assertNull(doc.rootDoc().getField("_ignored_source"));
746+
assertEquals("{\"int_value\":[10]}", syntheticSource);
749747
}
750748

751749
public void testIndexStoredArraySourceSingleLeafElementAndNull() throws IOException {

test/framework/src/main/java/org/elasticsearch/logsdb/datageneration/FieldType.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313
import org.elasticsearch.logsdb.datageneration.fields.leaf.ByteFieldDataGenerator;
1414
import org.elasticsearch.logsdb.datageneration.fields.leaf.DoubleFieldDataGenerator;
1515
import org.elasticsearch.logsdb.datageneration.fields.leaf.FloatFieldDataGenerator;
16-
import org.elasticsearch.logsdb.datageneration.fields.leaf.HalfFloatFieldDataGenerator;
1716
import org.elasticsearch.logsdb.datageneration.fields.leaf.IntegerFieldDataGenerator;
1817
import org.elasticsearch.logsdb.datageneration.fields.leaf.KeywordFieldDataGenerator;
1918
import org.elasticsearch.logsdb.datageneration.fields.leaf.LongFieldDataGenerator;
20-
import org.elasticsearch.logsdb.datageneration.fields.leaf.ScaledFloatFieldDataGenerator;
2119
import org.elasticsearch.logsdb.datageneration.fields.leaf.ShortFieldDataGenerator;
2220
import org.elasticsearch.logsdb.datageneration.fields.leaf.UnsignedLongFieldDataGenerator;
2321

@@ -32,9 +30,7 @@ public enum FieldType {
3230
SHORT("short"),
3331
BYTE("byte"),
3432
DOUBLE("double"),
35-
FLOAT("float"),
36-
HALF_FLOAT("half_float"),
37-
SCALED_FLOAT("scaled_float");
33+
FLOAT("float");
3834

3935
private final String name;
4036

@@ -52,8 +48,6 @@ public FieldDataGenerator generator(String fieldName, DataSource dataSource) {
5248
case BYTE -> new ByteFieldDataGenerator(fieldName, dataSource);
5349
case DOUBLE -> new DoubleFieldDataGenerator(fieldName, dataSource);
5450
case FLOAT -> new FloatFieldDataGenerator(fieldName, dataSource);
55-
case HALF_FLOAT -> new HalfFloatFieldDataGenerator(fieldName, dataSource);
56-
case SCALED_FLOAT -> new ScaledFloatFieldDataGenerator(fieldName, dataSource);
5751
};
5852
}
5953

test/framework/src/main/java/org/elasticsearch/logsdb/datageneration/datasource/DefaultMappingParametersHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public DataSourceResponse.LeafMappingParametersGenerator handle(DataSourceReques
3232

3333
return new DataSourceResponse.LeafMappingParametersGenerator(switch (request.fieldType()) {
3434
case KEYWORD -> keywordMapping(request, map);
35-
case LONG, INTEGER, SHORT, BYTE, DOUBLE, FLOAT, HALF_FLOAT, UNSIGNED_LONG -> plain(map);
36-
case SCALED_FLOAT -> scaledFloatMapping(map);
35+
case LONG, INTEGER, SHORT, BYTE, DOUBLE, FLOAT, UNSIGNED_LONG -> plain(map);
3736
});
3837
}
3938

x-pack/plugin/logsdb/src/javaRestTest/java/org/elasticsearch/xpack/logsdb/qa/matchers/source/SourceMatcher.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private MatchResult compareSource(Map<String, List<Object>> actual, Map<String,
104104
// See #111916.
105105
var genericMatchResult = matchWithGenericMatcher(actualValues, expectedValues);
106106
if (genericMatchResult.isMatch()) {
107-
return genericMatchResult;
107+
continue;
108108
}
109109

110110
var matchIncludingFieldSpecificMatchers = matchWithFieldSpecificMatcher(name, actualValues, expectedValues).orElse(
@@ -115,7 +115,6 @@ private MatchResult compareSource(Map<String, List<Object>> actual, Map<String,
115115
return MatchResult.noMatch(message);
116116
}
117117
}
118-
119118
return MatchResult.match();
120119
}
121120

0 commit comments

Comments
 (0)