in hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/core/RamTableTest.java [223:351]
public void testReloadAndQueryWithMultiEdges() throws Exception {
// FIXME: skip this test for hstore
Assume.assumeTrue("skip this test for hstore",
Objects.equals("hstore", System.getProperty("backend")));
HugeGraph graph = this.graph();
// insert vertices and edges
for (int i = 0; i < 100; i++) {
Vertex v1 = graph.addVertex(T.label, "vl1", T.id, i);
Vertex v2 = graph.addVertex(T.label, "vl1", T.id, i + 100);
Vertex v3 = graph.addVertex(T.label, "vl1", T.id, i + 200);
v1.addEdge("el1", v2);
v1.addEdge("el1", v3);
v3.addEdge("el1", v1);
}
graph.tx().commit();
for (int i = 1000; i < 1100; i++) {
Vertex v1 = graph.addVertex(T.label, "vl2", T.id, i);
Vertex v2 = graph.addVertex(T.label, "vl2", T.id, i + 100);
Vertex v3 = graph.addVertex(T.label, "vl2", T.id, i + 200);
v1.addEdge("el2", v2);
v1.addEdge("el2", v3);
v2.addEdge("el2", v3);
}
graph.tx().commit();
// reload ramtable
Whitebox.invoke(graph.getClass(), "reloadRamtable", graph);
// query edges by OUT
for (int i = 0; i < 100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.OUT, null);
Assert.assertTrue(edges.hasNext());
HugeEdge edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 100, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertTrue(edges.hasNext());
edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertFalse(edges.hasNext());
}
// query edges by BOTH
for (int i = 0; i < 100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.BOTH, null);
Assert.assertTrue(edges.hasNext());
HugeEdge edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 100, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertTrue(edges.hasNext());
edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertTrue(edges.hasNext());
edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.IN, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertFalse(edges.hasNext());
}
// query edges by IN
for (int i = 0; i < 100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.IN, null);
Assert.assertTrue(edges.hasNext());
HugeEdge edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.IN, edge.direction());
Assert.assertEquals("el1", edge.label());
Assert.assertFalse(edges.hasNext());
}
// query edges by OUT
for (int i = 1000; i < 1100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.OUT, null);
Assert.assertTrue(edges.hasNext());
HugeEdge edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 100, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el2", edge.label());
Assert.assertTrue(edges.hasNext());
edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el2", edge.label());
Assert.assertFalse(edges.hasNext());
}
// query edges by BOTH
for (int i = 1000; i < 1100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.BOTH, null);
Assert.assertTrue(edges.hasNext());
HugeEdge edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 100, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el2", edge.label());
Assert.assertTrue(edges.hasNext());
edge = (HugeEdge) edges.next();
Assert.assertEquals(i + 200, edge.id().otherVertexId().asLong());
Assert.assertEquals(Directions.OUT, edge.direction());
Assert.assertEquals("el2", edge.label());
Assert.assertFalse(edges.hasNext());
}
// query edges by IN
for (int i = 1000; i < 1100; i++) {
Iterator<Edge> edges = this.edgesOfVertex(IdGenerator.of(i),
Directions.IN, null);
Assert.assertFalse(edges.hasNext());
}
}