public void testUpdateEdgePropertyOfAggregateType()

in hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/core/EdgeCoreTest.java [6207:6345]


    public void testUpdateEdgePropertyOfAggregateType() {
        Assume.assumeTrue("Not support aggregate property",
                          storeFeatures().supportsAggregateProperty());

        HugeGraph graph = graph();
        SchemaManager schema = graph.schema();

        schema.propertyKey("startTime")
              .asDate().valueSingle().calcMin()
              .ifNotExist().create();
        schema.propertyKey("endTime")
              .asDate().valueSingle().calcMax()
              .ifNotExist().create();
        schema.propertyKey("times")
              .asLong().valueSingle().calcSum()
              .ifNotExist().create();
        schema.propertyKey("port")
              .asInt().valueSet().calcSet()
              .ifNotExist().create();
        schema.propertyKey("type")
              .asInt().valueList().calcList()
              .ifNotExist().create();

        schema.vertexLabel("ip").useCustomizeStringId().ifNotExist().create();

        schema.edgeLabel("attack").sourceLabel("ip").targetLabel("ip")
              .properties("startTime", "endTime", "times", "port", "type")
              .ifNotExist().create();

        Vertex ip1 = graph.addVertex(T.label, "ip", T.id, "10.0.0.1");
        Vertex ip2 = graph.addVertex(T.label, "ip", T.id, "10.0.0.2");

        ip1.addEdge("attack", ip2,
                    "startTime", "2019-1-1 00:00:30",
                    "endTime", "2019-1-1 00:01:00",
                    "times", 3, "port", 21, "type", 21);
        graph.tx().commit();

        Edge edge = graph.traversal().V("10.0.0.1").outE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-1 00:01:00"),
                            edge.value("endTime"));
        Assert.assertEquals(3L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21), edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21), edge.value("type"));

        edge = graph.traversal().V("10.0.0.2").inE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-1 00:01:00"),
                            edge.value("endTime"));
        Assert.assertEquals(3L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21), edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21), edge.value("type"));

        edge.property("startTime", "2019-1-1 00:04:00");
        edge.property("endTime", "2019-1-1 00:08:00");
        edge.property("times", 10);
        edge.property("port", 22);
        edge.property("type", 22);
        graph.tx().commit();

        edge = graph.traversal().V("10.0.0.1").outE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-1 00:08:00"),
                            edge.value("endTime"));
        Assert.assertEquals(13L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22), edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22), edge.value("type"));

        edge = graph.traversal().V("10.0.0.2").inE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-1 00:08:00"),
                            edge.value("endTime"));
        Assert.assertEquals(13L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22), edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22), edge.value("type"));

        edge.property("startTime", "2019-1-2 00:04:00");
        edge.property("endTime", "2019-1-2 00:08:00");
        edge.property("times", 7);
        edge.property("port", 23);
        edge.property("type", 23);
        graph.tx().commit();

        edge = graph.traversal().V("10.0.0.1").outE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-2 00:08:00"),
                            edge.value("endTime"));
        Assert.assertEquals(20L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22, 23),
                            edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22, 23),
                            edge.value("type"));

        edge = graph.traversal().V("10.0.0.2").inE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-2 00:08:00"),
                            edge.value("endTime"));
        Assert.assertEquals(20L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22, 23),
                            edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22, 23),
                            edge.value("type"));

        edge.property("startTime", "2019-1-1 00:00:00");
        edge.property("endTime", "2019-2-1 00:20:00");
        edge.property("times", 100);
        edge.property("port", 23);
        edge.property("type", 23);
        graph.tx().commit();

        edge = graph.traversal().V("10.0.0.1").outE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:00"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-2-1 00:20:00"),
                            edge.value("endTime"));
        Assert.assertEquals(120L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22, 23),
                            edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22, 23, 23),
                            edge.value("type"));

        edge = graph.traversal().V("10.0.0.2").inE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:00:00"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-2-1 00:20:00"),
                            edge.value("endTime"));
        Assert.assertEquals(120L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(21, 22, 23),
                            edge.value("port"));
        Assert.assertEquals(ImmutableList.of(21, 22, 23, 23),
                            edge.value("type"));
    }