/** * Validate topology conf. * @param topoConf The topology conf. */ public static void validateTopoConf(Map<String, Object> topoConf) { validateFields(topoConf, Arrays.asList(Config.class)); }
/** * Validate all confs in map. * * @param conf map of configs */ public static void validateFields(Map<String, Object> conf) { validateFields(conf, getConfigClasses()); }
public Map<String, Object> readStormConfigImpl() { Map<String, Object> conf = Utils.readStormConfig(); ConfigValidation.validateFields(conf); return conf; }
public static Map<String, Object> readYamlConfig(String name, boolean mustExist) { Map<String, Object> conf = Utils.findAndReadConfigFile(name, mustExist); ConfigValidation.validateFields(conf); return 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 } }
@Test public void testTopologyWorkersIsInteger() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.TOPOLOGY_WORKERS, 42); ConfigValidation.validateFields(conf); conf.put(Config.TOPOLOGY_WORKERS, 3.14159); try { ConfigValidation.validateFields(conf); Assert.fail("Expected Exception not Thrown"); } catch (IllegalArgumentException ex) { } }
@Test public void testSupervisorSchedulerMetaIsStringMap() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = new HashMap<String, Object>(); Map<String, Object> schedulerMeta = new HashMap<String, Object>(); conf.put(DaemonConfig.SUPERVISOR_SCHEDULER_META, schedulerMeta); ConfigValidation.validateFields(conf); schedulerMeta.put("foo", "bar"); conf.put(DaemonConfig.SUPERVISOR_SCHEDULER_META, schedulerMeta); ConfigValidation.validateFields(conf); schedulerMeta.put("baz", true); try { ConfigValidation.validateFields(conf); Assert.fail("Expected Exception not Thrown"); } catch (IllegalArgumentException ex) { } }
@Test public void testIsolationSchedulerMachinesIsMap() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = new HashMap<String, Object>(); Map<String, Integer> isolationMap = new HashMap<String, Integer>(); conf.put(DaemonConfig.ISOLATION_SCHEDULER_MACHINES, isolationMap); ConfigValidation.validateFields(conf); isolationMap.put("host0", 1); isolationMap.put("host1", 2); conf.put(DaemonConfig.ISOLATION_SCHEDULER_MACHINES, isolationMap); ConfigValidation.validateFields(conf); conf.put(DaemonConfig.ISOLATION_SCHEDULER_MACHINES, 42); try { ConfigValidation.validateFields(conf); Assert.fail("Expected Exception not Thrown"); } catch (IllegalArgumentException ex) { } }
private void stringOrStringListTest(String key) { Map<String, Object> conf = new HashMap<String, Object>(); Collection<Object> passCases = new LinkedList<Object>(); Collection<Object> failCases = new LinkedList<Object>(); passCases.add(null); passCases.add("some string"); String[] stuff = { "some", "string", "list" }; passCases.add(Arrays.asList(stuff)); failCases.add(42); Integer[] wrongStuff = { 1, 2, 3 }; failCases.add(Arrays.asList(wrongStuff)); //worker.childopts validates for (Object value : passCases) { conf.put(key, value); ConfigValidation.validateFields(conf); } for (Object value : failCases) { try { conf.put(key, value); ConfigValidation.validateFields(conf); Assert.fail("Expected Exception not Thrown for value: " + value); } catch (IllegalArgumentException Ex) { } } }
@Test public void testReadInResourceAwareSchedulerUserPools() { Map<String, Object> fromFile = Utils.findAndReadConfigFile("user-resource-pools.yaml", false); LOG.info("fromFile: {}", fromFile); ConfigValidation.validateFields(fromFile); }
@Test public void defaultYamlTest() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { Map<String, Object> conf = Utils.readStormConfig(); ConfigValidation.validateFields(conf); }
ConfigValidation.validateFields(conf); try { conf.put(DaemonConfig.SUPERVISOR_SLOTS_PORTS, value); ConfigValidation.validateFields(conf); Assert.fail("Expected Exception not Thrown for value: " + value); } catch (IllegalArgumentException Ex) {
@Test public void testListEntryTypeAnnotation() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { TestConfig config = new TestConfig(); Collection<Object> passCases = new LinkedList<Object>(); Collection<Object> failCases = new LinkedList<Object>(); Object[] passCase1 = { 1, 5.0, -0.01, 0, Integer.MAX_VALUE, Double.MIN_VALUE }; Object[] passCase2 = { 1 }; passCases.add(Arrays.asList(passCase1)); passCases.add(Arrays.asList(passCase2)); for (Object value : passCases) { config.put(TestConfig.TEST_MAP_CONFIG_3, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); } Object[] failCase1 = { 1, 5.0, -0.01, 0, "aaa" }; Object[] failCase2 = { "aaa" }; failCases.add(failCase1); failCases.add(failCase2); failCases.add(1); failCases.add("b"); failCases.add(null); for (Object value : failCases) { try { config.put(TestConfig.TEST_MAP_CONFIG_3, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); Assert.fail("Expected Exception not Thrown for value: " + value); } catch (IllegalArgumentException Ex) { } } }
@Test public void TestImplementsClassValidator() { TestConfig config = new TestConfig(); Collection<Object> passCases = new LinkedList<Object>(); Collection<Object> failCases = new LinkedList<Object>(); passCases.add("org.apache.storm.networktopography.DefaultRackDNSToSwitchMapping"); for (Object value : passCases) { config.put(TestConfig.TEST_MAP_CONFIG_8, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); } //will fail since org.apache.storm.nimbus.NimbusInfo doesn't implement or extend org.apache.storm.networktopography // .DNSToSwitchMapping failCases.add("org.apache.storm.nimbus.NimbusInfo"); failCases.add(null); for (Object value : failCases) { try { config.put(TestConfig.TEST_MAP_CONFIG_8, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); Assert.fail("Expected Exception not Thrown for value: " + value); } catch (IllegalArgumentException Ex) { } } }
@Test public void TestAcceptedStrings() throws InvocationTargetException, NoSuchMethodException, NoSuchFieldException, InstantiationException, IllegalAccessException { TestConfig config = new TestConfig(); String[] passCases = { "aaa", "bbb", "ccc" }; for (Object value : passCases) { config.put(TestConfig.TEST_MAP_CONFIG_5, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); } String[] failCases = { "aa", "bb", "cc", "abc", "a", "b", "c", "" }; for (Object value : failCases) { try { config.put(TestConfig.TEST_MAP_CONFIG_5, value); ConfigValidation.validateFields(config, Arrays.asList(TestConfig.class)); Assert.fail("Expected Exception not Thrown for value: " + value); } catch (IllegalArgumentException Ex) { } } }