use of org.apache.storm.generated.StormTopology in project storm by apache.
the class StormCommon method validateIds.
@SuppressWarnings("unchecked")
private static void validateIds(StormTopology topology) throws InvalidTopologyException {
List<String> componentIds = new ArrayList<>();
for (StormTopology._Fields field : Thrift.getTopologyFields()) {
if (!ThriftTopologyUtils.isWorkerHook(field) && !ThriftTopologyUtils.isDependencies(field)) {
Object value = topology.getFieldValue(field);
Map<String, Object> componentMap = (Map<String, Object>) value;
componentIds.addAll(componentMap.keySet());
for (String id : componentMap.keySet()) {
if (Utils.isSystemId(id)) {
throw new InvalidTopologyException(id + " is not a valid component id.");
}
}
for (Object componentObj : componentMap.values()) {
ComponentCommon common = getComponentCommon(componentObj);
Set<String> streamIds = common.get_streams().keySet();
for (String id : streamIds) {
if (Utils.isSystemId(id)) {
throw new InvalidTopologyException(id + " is not a valid stream id.");
}
}
}
}
}
List<String> offending = Utils.getRepeat(componentIds);
if (!offending.isEmpty()) {
throw new InvalidTopologyException("Duplicate component ids: " + offending);
}
}
use of org.apache.storm.generated.StormTopology in project metron by apache.
the class FluxTopologyComponent method startTopology.
private void startTopology(String topologyName, File topologyLoc, File templateFile, Properties properties) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, TException, NoSuchFieldException {
TopologyDef topologyDef = loadYaml(topologyName, topologyLoc, templateFile, properties);
Config conf = FluxBuilder.buildConfig(topologyDef);
ExecutionContext context = new ExecutionContext(topologyDef, conf);
StormTopology topology = FluxBuilder.buildTopology(context);
Assert.assertNotNull(topology);
topology.validate();
try {
stormCluster.submitTopology(topologyName, conf, topology);
} catch (Exception nne) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
stormCluster.submitTopology(topologyName, conf, topology);
}
}
use of org.apache.storm.generated.StormTopology in project storm by apache.
the class TridentMinMaxOfVehiclesTopology method main.
public static void main(String[] args) throws Exception {
StormTopology topology = buildVehiclesTopology();
Config conf = new Config();
conf.setMaxSpoutPending(20);
if (args.length == 0) {
try (LocalCluster cluster = new LocalCluster();
LocalTopology topo = cluster.submitTopology("vehicles-topology", conf, topology)) {
Utils.sleep(60 * 1000);
}
System.exit(0);
} else {
conf.setNumWorkers(3);
StormSubmitter.submitTopologyWithProgressBar("vehicles-topology", conf, topology);
}
}
use of org.apache.storm.generated.StormTopology in project storm by apache.
the class TCKTest method testBadShellComponents.
@Test(expected = IllegalArgumentException.class)
public void testBadShellComponents() throws Exception {
TopologyDef topologyDef = FluxParser.parseResource("/configs/bad_shell_test.yaml", false, true, null, false);
Config conf = FluxBuilder.buildConfig(topologyDef);
ExecutionContext context = new ExecutionContext(topologyDef, conf);
StormTopology topology = FluxBuilder.buildTopology(context);
assertNotNull(topology);
topology.validate();
}
use of org.apache.storm.generated.StormTopology in project storm by apache.
the class TCKTest method testTopologySource.
@Test
public void testTopologySource() throws Exception {
TopologyDef topologyDef = FluxParser.parseResource("/configs/existing-topology.yaml", false, true, null, false);
assertTrue(topologyDef.validate());
Config conf = FluxBuilder.buildConfig(topologyDef);
ExecutionContext context = new ExecutionContext(topologyDef, conf);
StormTopology topology = FluxBuilder.buildTopology(context);
assertNotNull(topology);
topology.validate();
}
Aggregations