Skip to content

Fix matching of half_float and scaled_float values in LogsDB tests #121098

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
import org.elasticsearch.logsdb.datageneration.fields.leaf.ByteFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.DoubleFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.FloatFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.HalfFloatFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.IntegerFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.KeywordFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.LongFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.ScaledFloatFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.ShortFieldDataGenerator;
import org.elasticsearch.logsdb.datageneration.fields.leaf.UnsignedLongFieldDataGenerator;

Expand All @@ -30,7 +32,9 @@ public enum FieldType {
SHORT("short"),
BYTE("byte"),
DOUBLE("double"),
FLOAT("float");
FLOAT("float"),
HALF_FLOAT("half_float"),
SCALED_FLOAT("scaled_float");

private final String name;

Expand All @@ -48,6 +52,8 @@ public FieldDataGenerator generator(String fieldName, DataSource dataSource) {
case BYTE -> new ByteFieldDataGenerator(fieldName, dataSource);
case DOUBLE -> new DoubleFieldDataGenerator(fieldName, dataSource);
case FLOAT -> new FloatFieldDataGenerator(fieldName, dataSource);
case HALF_FLOAT -> new HalfFloatFieldDataGenerator(fieldName, dataSource);
case SCALED_FLOAT -> new ScaledFloatFieldDataGenerator(fieldName, dataSource);
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public DataSourceResponse.LeafMappingParametersGenerator handle(DataSourceReques

return new DataSourceResponse.LeafMappingParametersGenerator(switch (request.fieldType()) {
case KEYWORD -> keywordMapping(request, map);
case LONG, INTEGER, SHORT, BYTE, DOUBLE, FLOAT, UNSIGNED_LONG -> plain(map);
case LONG, INTEGER, SHORT, BYTE, DOUBLE, FLOAT, HALF_FLOAT, UNSIGNED_LONG -> plain(map);
case SCALED_FLOAT -> scaledFloatMapping(map);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,6 @@ private Optional<MatchResult> matchWithFieldSpecificMatcher(String fieldName, Li
}
}

if (sourceMatchesExactly(expectedFieldMapping, expectedValues)) {
return Optional.empty();
}

var fieldSpecificMatcher = fieldSpecificMatchers.get(actualFieldType);
if (fieldSpecificMatcher == null) {
return Optional.empty();
Expand All @@ -177,13 +173,6 @@ private Optional<MatchResult> matchWithFieldSpecificMatcher(String fieldName, Li
return Optional.of(matched);
}

// Checks for scenarios when source is stored exactly and therefore can be compared without special logic.
private boolean sourceMatchesExactly(MappingTransforms.FieldMapping mapping, List<Object> expectedValues) {
return mapping.parentMappingParameters().stream().anyMatch(m -> m.getOrDefault("enabled", "true").equals("false"))
|| mapping.mappingParameters().getOrDefault("synthetic_source_keep", "none").equals("all")
|| expectedValues.size() > 1 && mapping.mappingParameters().getOrDefault("synthetic_source_keep", "none").equals("arrays");
}

private MatchResult matchWithGenericMatcher(List<Object> actualValues, List<Object> expectedValues) {
var genericListMatcher = new ListEqualMatcher(
actualMappings,
Expand Down