/** * Validate topology conf. * @param topoConf The topology conf. */ public static void validateTopoConf(Map<String, Object> topoConf) { validateFields(topoConf, Arrays.asList(Config.class)); }
.getMethod(ConfigValidationAnnotations.ValidatorParams.VALIDATOR_CLASS).invoke(v); Validator o = null; Map<String, Object> params = getParamsFromAnnotation(validatorClass, v); if (hasConstructor(clazz, Map.class)) { o = clazz.getConstructor(Map.class).newInstance(params); } else { //If not call default constructor
/** * Validates a field given field name as string uses Config.java as the default config class * * @param fieldName provided as a string * @param conf map of confs */ public static void validateField(String fieldName, Map<String, Object> conf) { validateField(fieldName, conf, getConfigClasses()); }
/** * Validate all confs in map. * * @param conf map of configs */ public static void validateFields(Map<String, Object> conf) { validateFields(conf, getConfigClasses()); }
/** * Validate all confs in map. * * @param conf map of configs * @param classes config class */ public static void validateFields(Map<String, Object> conf, List<Class<?>> classes) { for (Class<?> clazz : classes) { for (Field field : clazz.getDeclaredFields()) { if (!isFieldAllowed(field)) { continue; } Object keyObj = null; try { keyObj = field.get(null); } catch (IllegalAccessException e) { //This should not happen because we checked for PUBLIC in isFieldAllowed throw new RuntimeException(e); } //make sure that defined key is string in case wrong stuff got put into Config.java if (keyObj instanceof String) { String confKey = (String) keyObj; if (conf.containsKey(confKey)) { validateField(field, conf); } } } } }
/** * Validates a field given field name as string. * * @param fieldName provided as a string * @param conf map of confs * @param configs config class */ public static void validateField(String fieldName, Map<String, Object> conf, List<Class<?>> configs) { Field field = null; for (Class<?> clazz : configs) { try { field = clazz.getField(fieldName); } catch (NoSuchFieldException e) { //Ignored } } if (field == null) { throw new RuntimeException("Could not find " + fieldName + " in any of " + configs); } validateField(field, conf); }
private static void validateConfs(Map<String, Object> topoConf, StormTopology topology) throws IllegalArgumentException, InvalidTopologyException, AuthorizationException { ConfigValidation.validateTopoConf(topoConf); Utils.validateTopologyBlobStoreMap(topoConf); }
/** * Validates a field given field name as string uses Config.java as the default config class * * @param fieldName provided as a string * @param conf map of confs */ public static void validateField(String fieldName, Map conf) { validateField(fieldName, conf, CONFIG_CLASS); }
Map<String, Object> topoConf = (Map<String, Object>) JSONValue.parse(jsonConf); try { ConfigValidation.validateTopoConf(topoConf); } catch (IllegalArgumentException ex) { throw new WrappedInvalidTopologyException(ex.getMessage());
public Map<String, Object> readStormConfigImpl() { Map<String, Object> conf = Utils.readStormConfig(); ConfigValidation.validateFields(conf); return conf; }
.getMethod(ConfigValidationAnnotations.ValidatorParams.VALIDATOR_CLASS).invoke(v); Validator o = null; Map<String, Object> params = getParamsFromAnnotation(validatorClass, v); if (hasConstructor(clazz, Map.class)) { o = (Validator) clazz.getConstructor(Map.class).newInstance(params);
/** * Validates a field given field name as string * * @param fieldName provided as a string * @param conf map of confs * @param configClass config class */ public static void validateField(String fieldName, Map conf, Class configClass) { Field field = null; try { field = configClass.getField(fieldName); } catch (NoSuchFieldException e) { throw new RuntimeException(e); } validateField(field, conf); }
public static Map<String, Object> readYamlConfig(String name, boolean mustExist) { Map<String, Object> conf = Utils.findAndReadConfigFile(name, mustExist); ConfigValidation.validateFields(conf); return conf; }
/** * Validate all confs in map * * @param conf map of configs * @param configClass config class */ public static void validateFields(Map conf, Class configClass) { for (Field field : configClass.getFields()) { Object keyObj = null; try { keyObj = field.get(null); } catch (IllegalAccessException e) { throw new RuntimeException(e); } //make sure that defined key is string in case wrong stuff got put into Config.java if (keyObj instanceof String) { String confKey = (String) keyObj; if (conf.containsKey(confKey)) { validateField(field, conf); } } } }
@Test public void validPacemakerAuthTest() throws InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.PACEMAKER_AUTH_METHOD, "NONE"); ConfigValidation.validateFields(conf); conf.put(Config.PACEMAKER_AUTH_METHOD, "DIGEST"); ConfigValidation.validateFields(conf); conf.put(Config.PACEMAKER_AUTH_METHOD, "KERBEROS"); ConfigValidation.validateFields(conf); }
@Test public void testTopologyStatsSampleRateIsFloat() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.TOPOLOGY_STATS_SAMPLE_RATE, 0.5); ConfigValidation.validateFields(conf); conf.put(Config.TOPOLOGY_STATS_SAMPLE_RATE, 10); ConfigValidation.validateFields(conf); conf.put(Config.TOPOLOGY_STATS_SAMPLE_RATE, Double.MAX_VALUE); ConfigValidation.validateFields(conf); }
@Test public void validConfigTest() throws InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.STORM_MESSAGING_NETTY_SOCKET_BACKLOG, 5); conf.put(Config.STORM_MESSAGING_NETTY_MIN_SLEEP_MS, 500); conf.put(Config.STORM_MESSAGING_NETTY_AUTHENTICATION, true); ConfigValidation.validateFields(conf); }
@Test(expected = IllegalArgumentException.class) public void invalidConfigTest() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.STORM_MESSAGING_NETTY_SOCKET_BACKLOG, 5); conf.put(Config.STORM_MESSAGING_NETTY_MIN_SLEEP_MS, 500); conf.put(Config.STORM_MESSAGING_NETTY_AUTHENTICATION, "invalid"); ConfigValidation.validateFields(conf); }
@Test(expected = IllegalArgumentException.class) public void invalidPacemakerAuthTest() throws InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.PACEMAKER_AUTH_METHOD, "invalid"); ConfigValidation.validateFields(conf); }
public static void verifyBad(String key, Object value) { Map<String, Object> conf = new HashMap<>(); conf.put(key, value); try { ConfigValidation.validateFields(conf); fail("Expected " + key + " = " + value + " to throw Exception, but it didn't"); } catch (IllegalArgumentException e) { //good } }