public void testAddAndUpdateEdgePropertyOfAggregateType()

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


    public void testAddAndUpdateEdgePropertyOfAggregateType() {
        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");

        Edge edge = ip1.addEdge("attack", ip2,
                                "startTime", "2019-1-1 00:00:30",
                                "endTime", "2019-1-1 00:01:00",
                                "times", 3, "port", 21, "type", 21);
        edge.property("startTime", "2019-1-1 00:04:00");
        edge.property("endTime", "2019-1-1 00:08:00");
        edge.property("times", 10L);
        edge.property("port", 21);
        edge.property("type", 21);

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

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

        graph.tx().commit();

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

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

        edge = ip1.addEdge("attack", ip2,
                           "startTime", "2019-1-1 00:00:30",
                           "endTime", "2019-1-1 00:01:00",
                           "times", 3, "port", 22, "type", 22);

        edge.property("startTime", "2019-1-2 00:00:30");
        edge.property("endTime", "2019-1-2 00:01:00");
        edge.property("times", 2);
        edge.property("port", 23);
        edge.property("type", 23);

        Assert.assertEquals(Utils.date("2019-1-2 00:00:30"),
                            edge.value("startTime"));
        Assert.assertEquals(Utils.date("2019-1-2 00:01:00"),
                            edge.value("endTime"));
        Assert.assertEquals(2L, edge.value("times"));
        Assert.assertEquals(ImmutableSet.of(22, 23),
                            edge.value("port"));
        Assert.assertEquals(ImmutableList.of(22, 23),
                            edge.value("type"));

        Assert.assertEquals(Utils.date("2019-1-2 00:00:30"),
                            edge.property("startTime").value());
        Assert.assertEquals(Utils.date("2019-1-2 00:01:00"),
                            edge.property("endTime").value());
        Assert.assertEquals(2L, edge.property("times").value());
        Assert.assertEquals(ImmutableSet.of(22, 23),
                            edge.property("port").value());
        Assert.assertEquals(ImmutableList.of(22, 23),
                            edge.property("type").value());

        graph.tx().commit();
        result = graph.traversal().V("10.0.0.1").outE().next();
        Assert.assertEquals(Utils.date("2019-1-1 00:04:00"),
                            result.property("startTime").value());
        Assert.assertEquals(Utils.date("2019-1-2 00:01:00"),
                            result.property("endTime").value());
        Assert.assertEquals(12L, result.property("times").value());
        Assert.assertEquals(ImmutableSet.of(21, 22, 23),
                            result.property("port").value());
        Assert.assertEquals(ImmutableList.of(21, 21, 22, 23),
                            result.property("type").value());

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