@SuppressWarnings("unchecked") public static boolean isValidConf(Map<String, Object> topoConfIn) { Map<String, Object> origTopoConf = normalizeConf(topoConfIn); try { Map<String, Object> deserTopoConf = normalizeConf( (Map<String, Object>) JSONValue.parseWithException(JSONValue.toJSONString(topoConfIn))); return isValidConf(origTopoConf, deserTopoConf); } catch (ParseException e) { LOG.error("Json serialized config could not be deserialized", e); } return false; }
@Override public LocalTopology submitTopologyWithOpts(String topologyName, Map<String, Object> conf, StormTopology topology, SubmitOptions submitOpts) throws TException { if (!Utils.isValidConf(conf)) { throw new IllegalArgumentException("Topology conf is not json-serializable"); } getNimbus().submitTopologyWithOpts(topologyName, null, JSONValue.toJSONString(conf), Utils.addVersions(topology), submitOpts); return new LocalTopology(topologyName, topology); }
@Test public void testValidity() { Map<String, Object> conf = new HashMap<String, Object>(); conf.put(Config.TOPOLOGY_DEBUG, true); conf.put("q", "asasdasd"); conf.put("aaa", new Integer("123")); conf.put("bbb", new Long("456")); List<Object> testList = new ArrayList<Object>(); testList.add(1); testList.add(2); testList.add(new Integer("3")); testList.add(new Long("4")); testList.add(new Float("3")); testList.add(new Double("4")); testList.add(ImmutableList.of("asdf", 3)); conf.put("eee", testList); Assert.assertTrue(Utils.isValidConf(conf)); }
@Test public void testNonValidConfigChar() { Map<String, Object> conf = new HashMap<String, Object>(); conf.put("q", ImmutableList.of("asdf", 'c')); Assert.assertFalse(Utils.isValidConf(conf)); }
@Override public LocalTopology submitTopology(String topologyName, Map<String, Object> conf, StormTopology topology) throws TException { if (!Utils.isValidConf(conf)) { throw new IllegalArgumentException("Topology conf is not json-serializable"); } getNimbus().submitTopology(topologyName, null, JSONValue.toJSONString(conf), Utils.addVersions(topology)); ISubmitterHook hook = (ISubmitterHook) Utils.getConfiguredClass(conf, Config.STORM_TOPOLOGY_SUBMISSION_NOTIFIER_PLUGIN); if (hook != null) { TopologyInfo topologyInfo = Utils.getTopologyInfo(topologyName, null, conf); try { hook.notify(topologyInfo, conf, topology); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } return new LocalTopology(topologyName, topology); }
@Test public void testNonValidConfigRandomObject() { Map<String, Object> conf = new HashMap<String, Object>(); conf.put("q", ImmutableList.of("asdf", new TestConfigValidate())); Assert.assertFalse(Utils.isValidConf(conf)); }
@Test public void testIsValidConfEmpty() { Map<String, Object> map0 = ImmutableMap.of(); Assert.assertTrue(Utils.isValidConf(map0, map0)); }
@Test public void testIsValidConfPrimitiveNotEqual() { Map<String, Object> map4 = ImmutableMap.of("k0", 2L); Map<String, Object> map5 = ImmutableMap.of("k0", 3L); Assert.assertFalse(Utils.isValidConf(map4, map5)); }
@Test public void testIsValidConfEmptyNotEqual() { Map<String, Object> map0 = ImmutableMap.of(); Map<String, Object> map5 = ImmutableMap.of("k0", 3L); Assert.assertFalse(Utils.isValidConf(map0, map5)); }
ProgressListener progressListener, String asUser) throws AlreadyAliveException, InvalidTopologyException, AuthorizationException, IllegalArgumentException { if (!Utils.isValidConf(topoConf)) { throw new IllegalArgumentException("Storm conf is not valid. Must be json-serializable");
@Test public void testIsValidConfIdentical() { Map<String, Object> map1 = ImmutableMap.of("k0", ImmutableList.of(1L, 2L), "k1", ImmutableSet.of('s', 'f'), "k2", "as"); Assert.assertTrue(Utils.isValidConf(map1, map1)); }
@Test public void testIsValidConfEqual() { Map<String, Object> map1 = ImmutableMap.of("k0", ImmutableList.of(1L, 2L), "k1", ImmutableSet.of('s', 'f'), "k2", "as"); Map<String, Object> map2 = ImmutableMap.of("k0", ImmutableList.of(1L, 2L), "k1", ImmutableSet.of('s', 'f'), "k2", "as"); Assert.assertTrue(Utils.isValidConf(map1, map2)); // test deep equal }
@Test public void testIsValidConfNotEqual() { Map<String, Object> map1 = ImmutableMap.of("k0", ImmutableList.of(1L, 2L), "k1", ImmutableSet.of('s', 'f'), "k2", "as"); Map<String, Object> map3 = ImmutableMap.of("k0", ImmutableList.of(1L, 2L), "k1", ImmutableSet.of('s', 't'), "k2", "as"); Assert.assertFalse(Utils.isValidConf(map1, map3)); }
public static void submitTopology(final String name, final Map stormConf, final FlinkTopology topology) throws AlreadyAliveException, InvalidTopologyException { if (!Utils.isValidConf(stormConf)) { throw new IllegalArgumentException("Storm conf is not valid. Must be json-serializable");
if(!Utils.isValidConf(stormConf)) { throw new IllegalArgumentException("Storm conf is not valid. Must be json-serializable");