Skip to content

Commit fa1159a

Browse files
committed
Tighten version compatibility test
This commit tightens the version compatibility test, generalizing it beyond a hard-coded 7.0.0.
1 parent a5e8a22 commit fa1159a

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

core/src/test/java/org/elasticsearch/VersionTests.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.Locale;
3737
import java.util.Map;
3838
import java.util.Set;
39+
import java.util.stream.Collectors;
3940

4041
import static org.elasticsearch.Version.V_5_3_0;
4142
import static org.elasticsearch.Version.V_6_0_0_beta1;
@@ -340,11 +341,38 @@ public void testIsCompatible() {
340341
assertFalse(isCompatible(Version.fromId(2000099), Version.V_5_0_0));
341342
assertFalse(isCompatible(Version.fromString("6.0.0"), Version.fromString("7.0.0")));
342343
assertFalse(isCompatible(Version.fromString("6.0.0-alpha1"), Version.fromString("7.0.0")));
343-
final boolean buildSnapshot = Booleans.parseBoolean(System.getProperty("build.snapshot", "true"));
344+
345+
final Version currentMajorVersion = Version.fromId(Version.CURRENT.major * 1000000 + 99);
346+
final Version currentOrNextMajorVersion;
347+
if (Version.CURRENT.after(currentMajorVersion)) {
348+
currentOrNextMajorVersion = Version.fromId((Version.CURRENT.major + 1) * 1000000 + 99);
349+
} else {
350+
assert Version.CURRENT.minor == 0;
351+
currentOrNextMajorVersion = Version.CURRENT;
352+
}
353+
final List<Version> previousMajorVersions =
354+
VersionUtils
355+
.allVersions()
356+
.stream()
357+
.filter(v -> v.before(currentOrNextMajorVersion))
358+
.collect(Collectors.toList());
359+
final Version lastReleasedVersionFromPreviousMajor = previousMajorVersions.get(previousMajorVersions.size() - 1);
360+
final Version previousMinorVersion = VersionUtils.getPreviousMinorVersion();
361+
assert lastReleasedVersionFromPreviousMajor.major == previousMinorVersion.major;
362+
363+
boolean isCompatible = previousMinorVersion.minor == lastReleasedVersionFromPreviousMajor.minor;
364+
365+
final String message = String.format(
366+
Locale.ROOT,
367+
"[%s] should %s be compatible with [%s]",
368+
previousMinorVersion,
369+
isCompatible ? "" : " not",
370+
currentOrNextMajorVersion);
344371
assertThat(
345-
"[" + VersionUtils.getPreviousMinorVersion() + "] should" + (!buildSnapshot ? " not" : "") + " be compatible with 7.0.0",
346-
isCompatible(VersionUtils.getPreviousMinorVersion(), Version.fromString("7.0.0")),
347-
equalTo(!buildSnapshot));
372+
message,
373+
isCompatible(VersionUtils.getPreviousMinorVersion(), currentOrNextMajorVersion),
374+
equalTo(isCompatible));
375+
348376
assertFalse(isCompatible(Version.V_5_0_0, Version.fromString("6.0.0")));
349377
assertFalse(isCompatible(Version.V_5_0_0, Version.fromString("7.0.0")));
350378

0 commit comments

Comments
 (0)