jolshan commented on code in PR #15685:
URL: https://github.com/apache/kafka/pull/15685#discussion_r1619248609


##########
server-common/src/test/java/org/apache/kafka/server/common/FeaturesTest.java:
##########
@@ -14,37 +14,101 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.kafka.server.common;
 
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
 
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
-import static org.apache.kafka.server.common.MetadataVersion.FEATURE_NAME;
-import static 
org.apache.kafka.server.common.MetadataVersion.MINIMUM_KRAFT_VERSION;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
-class FeaturesTest {
-    @Test
-    public void testKRaftModeFeatures() {
-        Features features = new Features(MINIMUM_KRAFT_VERSION,
-                Collections.singletonMap("foo", (short) 2), 123, true);
-        assertEquals(MINIMUM_KRAFT_VERSION.featureLevel(),
-                features.finalizedFeatures().get(FEATURE_NAME));
-        assertEquals((short) 2,
-                features.finalizedFeatures().get("foo"));
-        assertEquals(2, features.finalizedFeatures().size());
+public class FeaturesTest {
+
+    @ParameterizedTest
+    @EnumSource(Features.class)
+    public void testFromFeatureLevelAllFeatures(Features feature) {
+        FeatureVersion[] featureImplementations = feature.featureVersions();
+        int numFeatures = featureImplementations.length;
+        for (short i = 1; i < numFeatures; i++) {
+            assertEquals(featureImplementations[i - 1], 
feature.fromFeatureLevel(i));
+        }
+    }
+
+    @ParameterizedTest
+    @EnumSource(Features.class)
+    public void testValidateVersionAllFeatures(Features feature) {
+        for (FeatureVersion featureImpl : feature.featureVersions()) {
+            // Ensure the minimum bootstrap metadata version is included if no 
metadata version dependency.
+            Map<String, Short> deps = new HashMap<>();
+            deps.putAll(featureImpl.dependencies());
+            if (!deps.containsKey(MetadataVersion.FEATURE_NAME)) {

Review Comment:
   No. Features should not require a dependency on MV. I don't think we need to 
add this logic to all places validation is called.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to