TopologyDag implements Serializable { public void addEdge(OutputComponent from, InputComponent to) { addEdge(UUID.randomUUID().toString(), from, to, getDefaultStreamId(from)); }  TopologyDag add(OutputComponent component); Set<OutputComponent> getOutputComponents(); TopologyDag add(InputComponent component); Set<InputComponent> getInputComponents(); TopologyDag add(Processor processor); Set<Component> getComponents(); void addEdge(OutputComponent from, InputComponent to); void addEdge(String id, OutputComponent from, InputComponent to, String streamId); void addEdge(String id, OutputComponent from, InputComponent to, String streamId, Stream.Grouping grouping); void addEdge(Edge edge); void addEdge(String id, OutputComponent from, InputComponent to, StreamGrouping streamGrouping); void removeEdge(OutputComponent from, InputComponent to); void removeEdge(OutputComponent from, InputComponent to, String streamId, Stream.Grouping grouping); List<Edge> getEdgesFrom(Component component); List<Edge> getEdgesTo(Component component); List<Edge> getEdges(Component component); List<Edge> getAllEdges(); List<Component> adjacent(Component component); void traverse(TopologyDagVisitor visitor); @Override String toString();  }
@Test public void testAddEdge() throws Exception { Source src = new StreamlineSource(Collections.singleton(new Stream("f1", "f2"))); Sink sink = new StreamlineSink(); Processor processor = new StreamlineProcessor(Collections.singleton(new Stream("r1"))); topology.add(src).add(processor).add(sink); topology.addEdge(src, processor); topology.addEdge(processor, sink); assertEquals(1, topology.getEdgesFrom(src).size()); assertEquals(src, topology.getEdgesFrom(src).get(0).getFrom()); assertEquals(processor, topology.getEdgesFrom(src).get(0).getTo()); assertEquals(1, topology.getEdgesFrom(processor).size()); assertEquals(processor, topology.getEdgesFrom(processor).get(0).getFrom()); assertEquals(sink, topology.getEdgesFrom(processor).get(0).getTo()); assertEquals(2, topology.getEdges(processor).size()); assertEquals(0, topology.getEdgesTo(src).size()); assertEquals(0, topology.getEdgesFrom(sink).size()); }
@Test(expected = IllegalArgumentException.class) public void testInvalidSource() throws Exception { Source src = new StreamlineSource(Collections.singleton(new Stream("f1", "f2"))); Sink sink = new StreamlineSink(); Processor processor = new StreamlineProcessor(Collections.singleton(new Stream("r1"))); topology.addEdge(src, processor); }