fix: superstep not take effect (#237)
diff --git a/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendBuffers.java b/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendBuffers.java
index 8a702cd..9a777af 100644
--- a/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendBuffers.java
+++ b/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendBuffers.java
@@ -23,6 +23,7 @@
import org.apache.hugegraph.computer.core.common.exception.ComputerException;
import org.apache.hugegraph.computer.core.config.ComputerOptions;
import org.apache.hugegraph.computer.core.config.Config;
+import org.apache.hugegraph.computer.core.receiver.MessageStat;
import org.apache.hugegraph.util.InsertionOrderUtil;
public class MessageSendBuffers {
@@ -67,6 +68,13 @@
return all;
}
+ public MessageStat messageStat(int partitionId) {
+ if (partitionId < 0 || partitionId >= this.buffers.length) {
+ throw new ComputerException("Invalid partition id %s", partitionId);
+ }
+ return this.buffers[partitionId].messageWritten();
+ }
+
public void clear() {
for (MessageSendPartition partition : this.buffers) {
partition.clear();
diff --git a/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendManager.java b/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendManager.java
index 48fa687..bda242a 100644
--- a/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendManager.java
+++ b/computer-core/src/main/java/org/apache/hugegraph/computer/core/sender/MessageSendManager.java
@@ -171,7 +171,7 @@
}
public MessageStat messageStat(int partitionId) {
- return this.buffers.get(partitionId).messageWritten();
+ return this.buffers.messageStat(partitionId);
}
public void clearBuffer() {
diff --git a/computer-test/src/main/java/org/apache/hugegraph/computer/algorithm/community/lpa/LpaTest.java b/computer-test/src/main/java/org/apache/hugegraph/computer/algorithm/community/lpa/LpaTest.java
index d4ba4d2..50e1298 100644
--- a/computer-test/src/main/java/org/apache/hugegraph/computer/algorithm/community/lpa/LpaTest.java
+++ b/computer-test/src/main/java/org/apache/hugegraph/computer/algorithm/community/lpa/LpaTest.java
@@ -18,12 +18,128 @@
package org.apache.hugegraph.computer.algorithm.community.lpa;
import org.apache.hugegraph.computer.algorithm.AlgorithmTestBase;
+import org.apache.hugegraph.computer.core.config.ComputerOptions;
+import org.apache.hugegraph.computer.core.output.hg.HugeGraphStringOutput;
+import org.apache.hugegraph.driver.GraphManager;
+import org.apache.hugegraph.driver.SchemaManager;
+import org.apache.hugegraph.structure.constant.T;
+import org.apache.hugegraph.structure.graph.Vertex;
+import org.apache.hugegraph.testutil.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
+import java.util.HashSet;
+
public class LpaTest extends AlgorithmTestBase {
+ private static final String VERTX_LABEL = "tc_user";
+ private static final String EDGE_LABEL = "tc_know";
+ private static final String PROPERTY_KEY = "tc_weight";
+ protected static HashSet<String> communitySet = new HashSet<>();
+
+ @BeforeClass
+ public static void setup() {
+ clearAll();
+
+ SchemaManager schema = client().schema();
+
+ schema.propertyKey(PROPERTY_KEY).asText().ifNotExist().create();
+
+ schema.vertexLabel(VERTX_LABEL)
+ .properties(PROPERTY_KEY)
+ .enableLabelIndex(false)
+ .useCustomizeStringId()
+ .ifNotExist()
+ .create();
+
+
+ schema.edgeLabel(EDGE_LABEL)
+ .sourceLabel(VERTX_LABEL)
+ .targetLabel(VERTX_LABEL)
+ .properties(PROPERTY_KEY)
+ .enableLabelIndex(false)
+ .ifNotExist()
+ .create();
+
+ GraphManager graph = client().graph();
+ Vertex v0 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "0",
+ PROPERTY_KEY, "0");
+ Vertex v1 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "1",
+ PROPERTY_KEY, "1");
+ Vertex v2 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "2",
+ PROPERTY_KEY, "2");
+ Vertex v3 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "3",
+ PROPERTY_KEY, "3");
+ Vertex v4 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "4",
+ PROPERTY_KEY, "4");
+ Vertex v5 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "5",
+ PROPERTY_KEY, "5");
+ Vertex v6 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "6",
+ PROPERTY_KEY, "6");
+ Vertex v7 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "7",
+ PROPERTY_KEY, "7");
+ Vertex v8 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "8",
+ PROPERTY_KEY, "8");
+ Vertex v9 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "9",
+ PROPERTY_KEY, "9");
+ Vertex v10 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "10",
+ PROPERTY_KEY, "10");
+ Vertex v11 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "11",
+ PROPERTY_KEY, "11");
+ Vertex v12 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "12",
+ PROPERTY_KEY, "12");
+ Vertex v13 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "13",
+ PROPERTY_KEY, "13");
+ Vertex v14 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "14",
+ PROPERTY_KEY, "14");
+ Vertex v15 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "15",
+ PROPERTY_KEY, "15");
+ Vertex v16 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "16",
+ PROPERTY_KEY, "16");
+ Vertex v17 = graph.addVertex(T.LABEL, VERTX_LABEL, T.ID, "17",
+ PROPERTY_KEY, "17");
+
+ v0.addEdge(EDGE_LABEL, v4, PROPERTY_KEY, "1");
+ v0.addEdge(EDGE_LABEL, v7, PROPERTY_KEY, "1");
+ v0.addEdge(EDGE_LABEL, v10, PROPERTY_KEY, "1");
+ v0.addEdge(EDGE_LABEL, v11, PROPERTY_KEY, "1");
+ v0.addEdge(EDGE_LABEL, v14, PROPERTY_KEY, "1");
+ v0.addEdge(EDGE_LABEL, v16, PROPERTY_KEY, "1");
+ v1.addEdge(EDGE_LABEL, v17, PROPERTY_KEY, "1");
+ v2.addEdge(EDGE_LABEL, v5, PROPERTY_KEY, "1");
+ v2.addEdge(EDGE_LABEL, v6, PROPERTY_KEY, "1");
+ v2.addEdge(EDGE_LABEL, v8, PROPERTY_KEY, "1");
+ v2.addEdge(EDGE_LABEL, v12, PROPERTY_KEY, "1");
+ v3.addEdge(EDGE_LABEL, v9, PROPERTY_KEY, "1");
+ v3.addEdge(EDGE_LABEL, v13, PROPERTY_KEY, "1");
+ v9.addEdge(EDGE_LABEL, v15, PROPERTY_KEY, "1");
+ v16.addEdge(EDGE_LABEL, v5, PROPERTY_KEY, "1");
+ }
+
+ @AfterClass
+ public static void teardown() {
+ clearAll();
+ }
+
@Test
public void testRunAlgorithm() throws InterruptedException {
- runAlgorithm(LpaParams.class.getName());
+ runAlgorithm(LpaParams.class.getName(),
+ ComputerOptions.OUTPUT_CLASS.name(),
+ LpaTest.LpaIntOutputTest.class.getName());
+
+ // check lpa result
+ Assert.assertEquals(4, communitySet.size());
+ }
+
+
+ public static class LpaIntOutputTest extends HugeGraphStringOutput {
+
+ @Override
+ public String value(org.apache.hugegraph.computer.core.graph.vertex.Vertex vertex) {
+ String value = super.value(vertex);
+ communitySet.add(value);
+ return value;
+ }
}
}