Skip to content

Commit 77bf974

Browse files
authored
Add test for dense transport versions (#113213)
Now that 8.x is branched from main, all transport version changes must be backported until 9.0 is ready to diverge. This commit adds a test which ensures transport versions are densely packed, ie there are no gaps at the granularity the version id is bumped (multiples of 1000).
1 parent 9227905 commit 77bf974

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

server/src/test/java/org/elasticsearch/TransportVersionTests.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.Collections;
1717
import java.util.Map;
1818
import java.util.Set;
19+
import java.util.TreeSet;
1920
import java.util.regex.Matcher;
2021
import java.util.regex.Pattern;
2122

@@ -199,4 +200,40 @@ public void testToString() {
199200
assertEquals("2000099", TransportVersion.fromId(2_00_00_99).toString());
200201
assertEquals("5000099", TransportVersion.fromId(5_00_00_99).toString());
201202
}
203+
204+
/**
205+
* Until 9.0 bumps its transport version to 9_000_00_0, all transport changes must be backported to 8.x.
206+
* This test ensures transport versions are dense, so that we have confidence backports have not been missed.
207+
* Note that it does not ensure patches are not missed, but it should catch the majority of misordered
208+
* or missing transport versions.
209+
*/
210+
public void testDenseTransportVersions() {
211+
Set<Integer> missingVersions = new TreeSet<>();
212+
TransportVersion previous = null;
213+
for (var tv : TransportVersions.getAllVersions()) {
214+
if (tv.before(TransportVersions.V_8_14_0)) {
215+
continue;
216+
}
217+
if (previous == null) {
218+
previous = tv;
219+
continue;
220+
}
221+
222+
if (previous.id() + 1000 < tv.id()) {
223+
int nextId = previous.id();
224+
do {
225+
nextId = (nextId + 1000) / 1000 * 1000;
226+
missingVersions.add(nextId);
227+
} while (nextId + 1000 < tv.id());
228+
}
229+
previous = tv;
230+
}
231+
if (missingVersions.isEmpty() == false) {
232+
StringBuilder msg = new StringBuilder("Missing transport versions:\n");
233+
for (Integer id : missingVersions) {
234+
msg.append(" " + id + "\n");
235+
}
236+
fail(msg.toString());
237+
}
238+
}
202239
}

0 commit comments

Comments
 (0)