    @Test
    public void testTopOrder() {

        Source src1 = new StreamlineSource(Collections.singleton(new Stream("f1", "f2")));
        Source src2 = new StreamlineSource(Collections.singleton(new Stream("f1", "f2")));
        Sink sink = new StreamlineSink();
        Processor processor = new StreamlineProcessor(Collections.singleton(new Stream("r1")));

        topology.add(src1).add(src2).add(processor).add(sink);
        topology.addEdge(src1, processor);
        topology.addEdge(src2, processor);
        topology.addEdge(processor, sink);

        List<Component> topOrder = topology.topOrder();
        assertArrayEquals(new Component[] {src2, src1, processor, sink}, topOrder.toArray());
    }