Repository: kafka
Updated Branches:
refs/heads/trunk 2d322a7bd -> 4b095760c
kafka-1698; Validator.ensureValid() only validates default config value; patched by Ewen Cheslack-Postava;
reviewed by Jun Rao
Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/4b095760
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/4b095760
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/4b095760
Branch: refs/heads/trunk
Commit: 4b095760cb38c726c49e6f245ffd7dc8ccf49863
Parents: 2d322a7
Author: Ewen Cheslack-Postava <me@ewencp.org>
Authored: Mon Oct 20 18:02:00 2014 -0700
Committer: Jun Rao <junrao@gmail.com>
Committed: Mon Oct 20 18:02:00 2014 -0700
----------------------------------------------------------------------
.../apache/kafka/common/config/ConfigDef.java | 2 +
.../kafka/common/config/ConfigDefTest.java | 41 ++++++++++++++++++++
2 files changed, 43 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kafka/blob/4b095760/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
----------------------------------------------------------------------
diff --git a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
index 227309e..c4cea2c 100644
--- a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
+++ b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
@@ -124,6 +124,8 @@ public class ConfigDef {
throw new ConfigException("Missing required configuration \"" + key.name
+ "\" which has no default value.");
else
value = key.defaultValue;
+ if (key.validator != null)
+ key.validator.ensureValid(key.name, value);
values.put(key.name, value);
}
return values;
http://git-wip-us.apache.org/repos/asf/kafka/blob/4b095760/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
----------------------------------------------------------------------
diff --git a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
index 09a82fe..7869e46 100644
--- a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
+++ b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
@@ -16,12 +16,15 @@ import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.kafka.common.config.ConfigDef.Importance;
+import org.apache.kafka.common.config.ConfigDef.Validator;
import org.apache.kafka.common.config.ConfigDef.Range;
+import org.apache.kafka.common.config.ConfigDef.ValidString;
import org.apache.kafka.common.config.ConfigDef.Type;
import org.junit.Test;
@@ -97,4 +100,42 @@ public class ConfigDefTest {
}
}
}
+
+ @Test(expected = ConfigException.class)
+ public void testInvalidDefaultRange() {
+ ConfigDef def = new ConfigDef().define("name", Type.INT, -1, Range.between(0,10),
Importance.HIGH, "docs");
+ }
+
+ @Test(expected = ConfigException.class)
+ public void testInvalidDefaultString() {
+ ConfigDef def = new ConfigDef().define("name", Type.STRING, "bad", ValidString.in(Arrays.asList("valid",
"values")), Importance.HIGH, "docs");
+ }
+
+ @Test
+ public void testValidators() {
+ testValidators(Type.INT, Range.between(0,10), 5, new Object[]{1, 5, 9}, new Object[]{-1,
11});
+ testValidators(Type.STRING, ValidString.in(Arrays.asList("good", "values", "default")),
"default",
+ new Object[]{"good", "values", "default"}, new Object[]{"bad", "inputs"});
+ }
+
+ private void testValidators(Type type, Validator validator, Object defaultVal, Object[]
okValues, Object[] badValues) {
+ ConfigDef def = new ConfigDef().define("name", type, defaultVal, validator, Importance.HIGH,
"docs");
+
+ for (Object value : okValues) {
+ Map<String, Object> m = new HashMap<String, Object>();
+ m.put("name", value);
+ def.parse(m);
+ }
+
+ for (Object value : badValues) {
+ Map<String, Object> m = new HashMap<String, Object>();
+ m.put("name", value);
+ try {
+ def.parse(m);
+ fail("Expected a config exception due to invalid value " + value);
+ } catch (ConfigException e) {
+ // this is good
+ }
+ }
+ }
}
|