diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java index 32a790f3e..9e825ab19 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java @@ -25,7 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; */ public final class Graph { private int id; - private Node startNode; + private WayToNode entryWay; private ConcurrentHashMap nodeIndex = new ConcurrentHashMap<>(); Graph(int id) { @@ -33,13 +33,18 @@ public final class Graph { } public void start(INPUT INPUT) { - startNode.execute(INPUT); + entryWay.in(INPUT); } public Node addNode(NodeProcessor nodeProcessor) { + return addNode(new DirectWay(nodeProcessor)); + } + + public Node addNode(WayToNode entryWay) { synchronized (this) { - startNode = new Node(this, nodeProcessor); - return startNode; + this.entryWay = entryWay; + this.entryWay.buildDestination(this); + return entryWay.getDestination(); } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java index 42f8b334f..09d8c3713 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java @@ -130,6 +130,20 @@ public class GraphManagerTest { Assert.assertEquals(expected, output); } + @Test + public void testEntryWay() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(8, String.class); + graph.addNode(new WayToNode(new Node1Processor()) { + @Override protected void in(String INPUT) { + //don't call `out(intput)`; + } + }).addNext(new Node2Processor()); + + graph.start("Input String"); + + Assert.assertEquals("", outputStream.toString()); + } + @After public void tearDown() { GraphManager.INSTANCE.reset();