in hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/core/VertexCoreTest.java [1639:1789]
public void testOverrideVertexWithShardIndexAndTtl() {
graph().schema().indexLabel("fanByCityAndAge").onV("fan")
.by("city", "age").shard().ifNotExist().create();
Vertex vertex1 = graph().addVertex(T.label, "fan", "name", "Baby1",
"age", 1, "city", "Beijing");
@SuppressWarnings("unused")
Vertex vertex2 = graph().addVertex(T.label, "fan", "name", "Baby2",
"age", 3, "city", "Beijing");
Vertex vertex3 = graph().addVertex(T.label, "fan", "name", "Baby3",
"age", 5, "city", "Beijing");
@SuppressWarnings("unused")
Vertex vertex4 = graph().addVertex(T.label, "fan", "name", "Baby4",
"age", 7, "city", "Beijing");
Vertex vertex5 = graph().addVertex(T.label, "fan", "name", "Baby5",
"age", 9, "city", "Beijing");
Vertex vertex6 = graph().addVertex(T.label, "fan", "name", "Baby6",
"age", 5, "city", "Shanghai");
this.commitTx();
Iterator<Vertex> vertices = graph().traversal().V().has("city",
"Shanghai");
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex6, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", 5);
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex3, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gt(7));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex5, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gte(7));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(2, IteratorUtils.count(vertices));
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lt(3));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex1, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lte(3));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(2, IteratorUtils.count(vertices));
this.commitTx();
try {
Thread.sleep(3100L);
} catch (InterruptedException e) {
// Ignore
}
Vertex vertex7 = graph().addVertex(T.label, "fan", "name", "Baby7",
"age", 2, "city", "Beijing");
@SuppressWarnings("unused")
Vertex vertex8 = graph().addVertex(T.label, "fan", "name", "Baby8",
"age", 4, "city", "Beijing");
Vertex vertex9 = graph().addVertex(T.label, "fan", "name", "Baby9",
"age", 6, "city", "Beijing");
@SuppressWarnings("unused")
Vertex vertex10 = graph().addVertex(T.label, "fan",
"name", "Baby10", "age", 8,
"city", "Beijing");
Vertex vertex11 = graph().addVertex(T.label, "fan",
"name", "Baby101", "age", 10,
"city", "Beijing");
Vertex vertex12 = graph().addVertex(T.label, "fan",
"name", "Baby12", "age", 6,
"city", "Shenzhen");
this.commitTx();
// Due to overridden vertices are expired, query will lead to async delete
vertices = graph().traversal().V().has("city", "Shanghai");
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Shenzhen");
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex12, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", 5);
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", 6);
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex9, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gt(8));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex11, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gte(8));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(2, IteratorUtils.count(vertices));
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lt(4));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(vertex7, vertices.next());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lte(4));
Assert.assertTrue(vertices.hasNext());
Assert.assertEquals(2, IteratorUtils.count(vertices));
this.commitTx();
try {
Thread.sleep(3100L);
} catch (InterruptedException e) {
// Ignore
}
// All vertices are expired after 6s
vertices = graph().traversal().V().has("city", "Shanghai");
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Shenzhen");
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", 5);
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", 6);
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gt(8));
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.gte(8));
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lt(4));
Assert.assertFalse(vertices.hasNext());
vertices = graph().traversal().V().has("city", "Beijing")
.has("age", P.lte(4));
Assert.assertFalse(vertices.hasNext());
}