Skip to content

Commit 1b60a47

Browse files
committed
add enum for version groups
1 parent 7136e09 commit 1b60a47

File tree

1 file changed

+48
-12
lines changed

1 file changed

+48
-12
lines changed

server/src/test/java/org/elasticsearch/index/mapper/vectors/SparseVectorFieldMapperTests.java

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,16 @@
5656
import java.util.LinkedHashMap;
5757
import java.util.List;
5858
import java.util.Map;
59+
import java.util.NavigableSet;
5960
import java.util.Set;
6061
import java.util.TreeMap;
6162
import java.util.stream.Collectors;
6263
import java.util.stream.Stream;
6364

65+
import static org.elasticsearch.index.IndexVersions.NEW_SPARSE_VECTOR;
6466
import static org.elasticsearch.index.IndexVersions.SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT;
6567
import static org.elasticsearch.index.IndexVersions.SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X;
6668
import static org.elasticsearch.index.IndexVersions.UPGRADE_TO_LUCENE_10_0_0;
67-
import static org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper.NEW_SPARSE_VECTOR_INDEX_VERSION;
68-
import static org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper.PREVIOUS_SPARSE_VECTOR_INDEX_VERSION;
69-
import static org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper.SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_VERSION;
7069
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertToXContentEquivalent;
7170
import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder;
7271
import static org.hamcrest.Matchers.containsString;
@@ -288,7 +287,7 @@ public void testDefaultsWithAndWithoutIncludeDefaultsOlderIndexVersion() throws
288287
IndexVersion indexVersion = IndexVersionUtils.randomVersionBetween(
289288
random(),
290289
UPGRADE_TO_LUCENE_10_0_0,
291-
IndexVersionUtils.getPreviousVersion(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_VERSION)
290+
IndexVersionUtils.getPreviousVersion(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT)
292291
);
293292

294293
XContentBuilder orig = JsonXContent.contentBuilder().startObject();
@@ -510,21 +509,21 @@ protected IngestScriptSupport ingestScriptSupport() {
510509
@Override
511510
protected String[] getParseMinimalWarnings(IndexVersion indexVersion) {
512511
String[] additionalWarnings = null;
513-
if (indexVersion.before(PREVIOUS_SPARSE_VECTOR_INDEX_VERSION)) {
512+
if (indexVersion.before(IndexVersions.V_8_0_0)) {
514513
additionalWarnings = new String[] { SparseVectorFieldMapper.ERROR_MESSAGE_7X };
515514
}
516515
return Strings.concatStringArrays(super.getParseMinimalWarnings(indexVersion), additionalWarnings);
517516
}
518517

519518
@Override
520519
protected IndexVersion boostNotAllowedIndexVersion() {
521-
return NEW_SPARSE_VECTOR_INDEX_VERSION;
520+
return NEW_SPARSE_VECTOR;
522521
}
523522

524523
public void testSparseVectorUnsupportedIndex() {
525524
IndexVersion version = IndexVersionUtils.randomVersionBetween(
526525
random(),
527-
PREVIOUS_SPARSE_VECTOR_INDEX_VERSION,
526+
IndexVersions.V_8_0_0,
528527
IndexVersions.FIRST_DETACHED_INDEX_VERSION
529528
);
530529
Exception e = expectThrows(MapperParsingException.class, () -> createMapperService(version, fieldMapping(b -> {
@@ -802,7 +801,7 @@ private PruningScenario getEffectivePruningScenario(
802801
}
803802

804803
if (shouldPrune == null) {
805-
shouldPrune = indexVersion.between(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X, IndexVersions.UPGRADE_TO_LUCENE_10_0_0) || indexVersion.onOrAfter(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT);
804+
shouldPrune = indexVersion.between(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X, UPGRADE_TO_LUCENE_10_0_0) || indexVersion.onOrAfter(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT);
806805
}
807806

808807
PruningScenario pruningScenario = PruningScenario.NO_PRUNING;
@@ -840,10 +839,7 @@ private List<Query> getExpectedQueryClauses(
840839
}
841840

842841
private void assertPruningScenario(PruningOptions indexPruningOptions, PruningOptions queryPruningOptions) throws IOException {
843-
IndexVersion indexVersion = ESTestCase.randomFrom(IndexVersionUtils.allReleasedVersions().subSet(
844-
SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X,
845-
IndexVersion.current()
846-
));
842+
IndexVersion indexVersion = getIndexVersion();
847843
MapperService mapperService = createMapperService(indexVersion, getIndexMapping(indexPruningOptions));
848844
PruningScenario effectivePruningScenario = getEffectivePruningScenario(indexPruningOptions, queryPruningOptions, indexVersion);
849845
withSearchExecutionContext(mapperService, (context) -> {
@@ -862,6 +858,46 @@ private void assertPruningScenario(PruningOptions indexPruningOptions, PruningOp
862858
});
863859
}
864860

861+
private static IndexVersion getIndexVersion() {
862+
VersionRange versionRange = randomFrom(VersionRange.values());
863+
return versionRange.getRandomVersion();
864+
}
865+
866+
private enum VersionRange {
867+
ES_V8X_WITHOUT_SUPPORT(
868+
NEW_SPARSE_VECTOR,
869+
IndexVersionUtils.getPreviousVersion(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X)
870+
),
871+
ES_V8X_WITH_SUPPORT(
872+
SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT_BACKPORT_8_X,
873+
IndexVersionUtils.getPreviousVersion(UPGRADE_TO_LUCENE_10_0_0)
874+
),
875+
ES_V9X_WITHOUT_SUPPORT(
876+
UPGRADE_TO_LUCENE_10_0_0,
877+
IndexVersionUtils.getPreviousVersion(SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT)
878+
),
879+
ES_V9X_WITH_SUPPORT(
880+
SPARSE_VECTOR_PRUNING_INDEX_OPTIONS_SUPPORT,
881+
IndexVersion.current()
882+
);
883+
884+
private final IndexVersion fromVersion;
885+
private final IndexVersion toVersion;
886+
887+
VersionRange(IndexVersion fromVersion, IndexVersion toVersion) {
888+
this.fromVersion = fromVersion;
889+
this.toVersion = toVersion;
890+
}
891+
892+
IndexVersion getRandomVersion() {
893+
// TODO: replace implementation with `IndexVersionUtils::randomVersionBetween` once support is added
894+
// for handling unbalanced version distributions.
895+
NavigableSet<IndexVersion> allReleaseVersions = IndexVersionUtils.allReleasedVersions();
896+
Set<IndexVersion> candidateVersions = allReleaseVersions.subSet(fromVersion, toVersion);
897+
return ESTestCase.randomFrom(candidateVersions);
898+
}
899+
}
900+
865901
private static final List<WeightedToken> QUERY_VECTORS = Stream.of(RARE_TOKENS, MEDIUM_TOKENS, COMMON_TOKENS)
866902
.flatMap(map -> map.entrySet().stream())
867903
.map(entry -> new WeightedToken(entry.getKey(), entry.getValue()))

0 commit comments

Comments
 (0)