in hugegraph-test/src/main/java/org/apache/hugegraph/core/EdgeCoreTest.java [1071:1200]
public void testOverrideEdgeWithRangeIndexAndTtl() {
graph().schema().indexLabel("readByDate").onE("read").by("date")
.range().ifNotExist().create();
Vertex baby = graph().addVertex(T.label, "person", "name", "Baby",
"age", 3, "city", "Beijing");
Vertex java1 = graph().addVertex(T.label, "book", "name", "Java1");
Vertex java2 = graph().addVertex(T.label, "book", "name", "Java2");
Vertex java3 = graph().addVertex(T.label, "book", "name", "Java3");
Vertex java4 = graph().addVertex(T.label, "book", "name", "Java4");
Vertex java5 = graph().addVertex(T.label, "book", "name", "Java5");
Edge edge1 = baby.addEdge("read", java1, "place", "library of school",
"date", "2019-12-23 12:00:00");
@SuppressWarnings("unused")
Edge edge2 = baby.addEdge("read", java2, "place", "library of school",
"date", "2019-12-23 13:00:00");
Edge edge3 = baby.addEdge("read", java3, "place", "library of school",
"date", "2019-12-23 14:00:00");
@SuppressWarnings("unused")
Edge edge4 = baby.addEdge("read", java4, "place", "library of school",
"date", "2019-12-23 15:00:00");
Edge edge5 = baby.addEdge("read", java5, "place", "library of school",
"date", "2019-12-23 16:00:00");
graph().tx().commit();
Iterator<Edge> edges = graph().traversal().E()
.has("date", "2019-12-23 14:00:00");
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge3, edges.next());
edges = graph().traversal().E()
.has("date", P.gt("2019-12-23 15:00:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge5, edges.next());
edges = graph().traversal().E()
.has("date", P.gte("2019-12-23 15:00:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(2, IteratorUtils.count(edges));
edges = graph().traversal().E()
.has("date", P.lt("2019-12-23 13:00:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge1, edges.next());
edges = graph().traversal().E()
.has("date", P.lte("2019-12-23 13:00:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(2, IteratorUtils.count(edges));
graph().tx().commit();
try {
Thread.sleep(3100L);
} catch (InterruptedException e) {
// Ignore
}
// Override
Edge edge6 = baby.addEdge("read", java1, "place", "library of school",
"date", "2019-12-23 12:01:00");
@SuppressWarnings("unused")
Edge edge7 = baby.addEdge("read", java2, "place", "library of school",
"date", "2019-12-23 13:01:00");
Edge edge8 = baby.addEdge("read", java3, "place", "library of school",
"date", "2019-12-23 14:01:00");
@SuppressWarnings("unused")
Edge edge9 = baby.addEdge("read", java4, "place", "library of school",
"date", "2019-12-23 15:01:00");
Edge edge10 = baby.addEdge("read", java5,
"place", "library of school",
"date", "2019-12-23 16:01:00");
graph().tx().commit();
// Due to overridden edges are expired, query will lead to async delete
edges = graph().traversal().E().has("date", "2019-12-23 14:00:00");
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E().has("date", "2019-12-23 14:01:00");
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge8, edges.next());
edges = graph().traversal().E()
.has("date", P.gt("2019-12-23 15:01:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge10, edges.next());
edges = graph().traversal().E()
.has("date", P.gte("2019-12-23 15:01:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(2, IteratorUtils.count(edges));
edges = graph().traversal().E()
.has("date", P.lt("2019-12-23 13:01:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(edge6, edges.next());
edges = graph().traversal().E()
.has("date", P.lte("2019-12-23 13:01:00"));
Assert.assertTrue(edges.hasNext());
Assert.assertEquals(2, IteratorUtils.count(edges));
graph().tx().commit();
try {
Thread.sleep(3100L);
} catch (InterruptedException e) {
// Ignore
}
// All edges are expired after 6s
edges = graph().traversal().E().has("date", "2019-12-23 14:00:00");
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E().has("date", "2019-12-23 14:01:00");
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E()
.has("date", P.gt("2019-12-23 15:01:00"));
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E()
.has("date", P.gte("2019-12-23 15:01:00"));
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E()
.has("date", P.lt("2019-12-23 13:01:00"));
Assert.assertFalse(edges.hasNext());
edges = graph().traversal().E()
.has("date", P.lte("2019-12-23 13:01:00"));
Assert.assertFalse(edges.hasNext());
}