Skip to content

Commit 891a12c

Browse files
authored
Provide list of supported Kafka versions to users (#180)
Signed-off-by: see-quick <[email protected]>
1 parent 129e46e commit 891a12c

File tree

4 files changed

+85
-0
lines changed

4 files changed

+85
-0
lines changed

src/main/java/io/strimzi/test/container/KafkaVersionService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,18 @@ public String toString() {
188188
}
189189
}
190190

191+
/**
192+
* Get list of all supported Kafka versions.
193+
*
194+
* @return list of supported Kafka version strings, sorted from oldest to newest
195+
*/
196+
public List<String> getSupportedKafkaVersions() {
197+
return this.logicalKafkaVersionEntities.stream()
198+
.sorted()
199+
.map(KafkaVersion::getVersion)
200+
.collect(Collectors.toList());
201+
}
202+
191203
/**
192204
* Get the latest release where the result is intentionally not deterministic.
193205
* It's the released test-container-images image with the highest Kafka version number.

src/main/java/io/strimzi/test/container/StrimziKafkaCluster.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.ArrayList;
1919
import java.util.Collection;
2020
import java.util.HashMap;
21+
import java.util.List;
2122
import java.util.Map;
2223
import java.util.UUID;
2324
import java.util.concurrent.ExecutionException;
@@ -905,6 +906,15 @@ public boolean isUsingDedicatedRoles() {
905906
return this.useDedicatedRoles;
906907
}
907908

909+
/**
910+
* Get list of all supported Kafka versions.
911+
*
912+
* @return list of supported Kafka version strings, sorted from oldest to newest
913+
*/
914+
public static List<String> getSupportedKafkaVersions() {
915+
return KafkaVersionService.getInstance().getSupportedKafkaVersions();
916+
}
917+
908918
/**
909919
* Retrieves the Proxy instance for a specific node by its node ID.
910920
* Works for both brokers and controllers.

src/test/java/io/strimzi/test/container/KafkaVersionServiceTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.hamcrest.CoreMatchers;
88
import org.junit.jupiter.api.Test;
99

10+
import java.util.List;
11+
1012
import static org.hamcrest.MatcherAssert.assertThat;
1113
import static org.junit.jupiter.api.Assertions.assertThrows;
1214

@@ -79,4 +81,34 @@ void testExtractVersionFromImageNameAdditionalSuffix() {
7981
Exception exception = assertThrows(IllegalArgumentException.class, () -> KafkaVersionService.KafkaVersion.extractVersionFromImageName(imageName));
8082
assertThat(exception.getMessage(), CoreMatchers.containsString("Cannot extract Kafka version from image name"));
8183
}
84+
85+
@Test
86+
void testGetSupportedKafkaVersionsReturnsNonEmptyList() {
87+
List<String> versions = KafkaVersionService.getInstance().getSupportedKafkaVersions();
88+
89+
assertThat(versions, CoreMatchers.notNullValue());
90+
assertThat(versions.isEmpty(), CoreMatchers.is(false));
91+
}
92+
93+
@Test
94+
void testGetSupportedKafkaVersionsAreSorted() {
95+
List<String> versions = KafkaVersionService.getInstance().getSupportedKafkaVersions();
96+
97+
for (int i = 0; i < versions.size() - 1; i++) {
98+
String current = versions.get(i);
99+
String next = versions.get(i + 1);
100+
int comparison = KafkaVersionService.KafkaVersion.compareVersions(current, next);
101+
assertThat("Versions should be sorted: " + current + " should be <= " + next,
102+
comparison <= 0, CoreMatchers.is(true));
103+
}
104+
}
105+
106+
@Test
107+
void testGetSupportedKafkaVersionsContainsLatestRelease() {
108+
List<String> versions = KafkaVersionService.getInstance().getSupportedKafkaVersions();
109+
String latestVersion = KafkaVersionService.getInstance().latestRelease().getVersion();
110+
111+
assertThat("Supported versions should contain the latest release",
112+
versions.contains(latestVersion), CoreMatchers.is(true));
113+
}
82114
}

src/test/java/io/strimzi/test/container/StrimziKafkaClusterTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,4 +1035,35 @@ void testDedicatedRolesClusterWithLogFilePathAppliesToControllers() {
10351035
container.getLogFilePath(), is("target/controller-logs/"));
10361036
}
10371037
}
1038+
1039+
@Test
1040+
void testGetSupportedKafkaVersionsReturnsNonEmptyList() {
1041+
List<String> versions = StrimziKafkaCluster.getSupportedKafkaVersions();
1042+
1043+
assertThat(versions, is(CoreMatchers.notNullValue()));
1044+
assertThat(versions.isEmpty(), is(false));
1045+
}
1046+
1047+
@Test
1048+
void testGetSupportedKafkaVersionsAreSorted() {
1049+
List<String> versions = StrimziKafkaCluster.getSupportedKafkaVersions();
1050+
1051+
for (int i = 0; i < versions.size() - 1; i++) {
1052+
String current = versions.get(i);
1053+
String next = versions.get(i + 1);
1054+
int comparison = KafkaVersionService.KafkaVersion.compareVersions(current, next);
1055+
assertThat("Versions should be sorted: " + current + " should be <= " + next,
1056+
comparison <= 0, is(true));
1057+
}
1058+
}
1059+
1060+
@Test
1061+
void testGetSupportedKafkaVersionsContainsValidVersionFormat() {
1062+
List<String> versions = StrimziKafkaCluster.getSupportedKafkaVersions();
1063+
1064+
for (String version : versions) {
1065+
assertThat("Version should match X.Y.Z format: " + version,
1066+
version.matches("\\d+\\.\\d+\\.\\d+"), is(true));
1067+
}
1068+
}
10381069
}

0 commit comments

Comments
 (0)