IRDAG implements DAGInterface<IRVertex, IREdge> { public void delete(final IRVertex vertexToDelete) { assertExistence(vertexToDelete); deleteRecursively(vertexToDelete, new HashSet<>()); modifiedDAG = rebuildExcluding(modifiedDAG, Collections.emptySet()).build(); } IRDAG(final DAG<IRVertex, IREdge> originalUserApplicationDAG); IRDAGChecker.CheckerResult checkIntegrity(); boolean advanceDAGSnapshot(final BiFunction<IRDAG, IRDAG, Boolean> checker); String irDAGSummary(); Long getInputSize(); void recordExecutorInfo(final List<Pair<Integer, ResourceSpecification>> parsedExecutorInfo); List<Pair<Integer, ResourceSpecification>> getExecutorInfo(); void delete(final IRVertex vertexToDelete); void insert(final RelayVertex relayVertex, final IREdge edgeToStreamize); void insert(final MessageGeneratorVertex messageGeneratorVertex,
                     final MessageAggregatorVertex messageAggregatorVertex,
                     final EncoderProperty triggerOutputEncoder,
                     final DecoderProperty triggerOutputDecoder,
                     final Set<IREdge> edgesToGetStatisticsOf,
                     final Set<IREdge> edgesToOptimize); void insert(final SignalVertex toInsert,
                     final IREdge edgeToOptimize); void insert(final Set<SamplingVertex> toInsert,
                     final Set<IRVertex> executeAfter); void insert(final TaskSizeSplitterVertex toInsert); void reshapeUnsafely(final Function<DAG<IRVertex, IREdge>, DAG<IRVertex, IREdge>> unsafeReshapingFunction); @Override void topologicalDo(final Consumer<IRVertex> function); @Override void dfsTraverse(final Consumer<IRVertex> function, final TraversalOrder traversalOrder); @Override void dfsDo(final IRVertex vertex,
                    final Consumer<IRVertex> vertexConsumer,
                    final TraversalOrder traversalOrder,
                    final Set<IRVertex> visited); @Override Boolean pathExistsBetween(final IRVertex v1, final IRVertex v2); @Override Boolean isCompositeVertex(final IRVertex irVertex); @Override Integer getLoopStackDepthOf(final IRVertex irVertex); @Override LoopVertex getAssignedLoopVertexOf(final IRVertex irVertex); @Override ObjectNode asJsonNode(); @Override void storeJSON(final String directory, final String name, final String description); @Override IRVertex getVertexById(final String id); @Override IREdge getEdgeById(final String id); @Override List<IRVertex> getVertices(); @Override List<IREdge> getEdges(); @Override List<IRVertex> getRootVertices(); @Override List<IREdge> getIncomingEdgesOf(final IRVertex v); @Override List<IREdge> getIncomingEdgesOf(final String vertexId); @Override List<IREdge> getOutgoingEdgesOf(final IRVertex v); @Override List<IREdge> getOutgoingEdgesOf(final String vertexId); @Override List<IRVertex> getParents(final String vertexId); @Override List<IRVertex> getChildren(final String vertexId); @Override IREdge getEdgeBetween(final String srcVertexId,
                               final String dstVertexId); @Override List<IRVertex> getTopologicalSort(); @Override List<IRVertex> getAncestors(final String vertexId); @Override List<IRVertex> getDescendants(final String vertexId); @Override List<IRVertex> filterVertices(final Predicate<IRVertex> condition); @Override String toString();  }
@Test public void testTriggerVertex() { final MessageAggregatorVertex maOne = insertNewTriggerVertex(irdag, oneToOneEdge); mustPass(); final MessageAggregatorVertex maTwo = insertNewTriggerVertex(irdag, shuffleEdge); mustPass(); irdag.delete(maTwo); mustPass(); irdag.delete(maOne); mustPass(); }
@Test public void testSignalVertex() { final SignalVertex sg1 = insertNewSignalVertex(irdag, oneToOneEdge); mustPass(); final SignalVertex sg2 = insertNewSignalVertex(irdag, shuffleEdge); mustPass(); irdag.delete(sg1); mustPass(); irdag.delete(sg2); mustPass(); }