You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/08/09 14:55:35 UTC

[40/50] tinkerpop git commit: Merge branch 'tp33'

Merge branch 'tp33'

Conflicts:
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f88ace14
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f88ace14
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f88ace14

Branch: refs/heads/TINKERPOP-1967
Commit: f88ace1420be0034108bf5f3c0c5c1d1973009c8
Parents: 9357d6a b12a3fd
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Aug 9 10:51:01 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Aug 9 10:51:01 2018 -0400

----------------------------------------------------------------------
 .../gremlin/process/remote/RemoteGraph.java     |  17 ---
 .../io/graphson/TraversalSerializersV2d0.java   |   4 -
 .../ModernGraphTypeInformation.cs               |   4 +
 .../DriverRemoteTraversalSideEffects.java       |   3 +-
 .../test/cucumber/feature-steps.js              |  15 ++-
 .../glv/GraphTraversalSource.template           |   2 +-
 .../gremlin_python/process/graph_traversal.py   |   2 +-
 .../RemoteGraphGroovyTranslatorProvider.java    |   3 +-
 gremlin-test/features/map/PageRank.feature      | 132 +++++++++++++++++++
 gremlin-test/features/map/PeerPressure.feature  |  77 +++++++++++
 .../process/AbstractGremlinProcessTest.java     |  26 ++--
 .../traversal/step/map/PageRankTest.java        |  37 +++---
 .../traversal/step/map/PeerPressureTest.java    |  24 ++--
 .../TranslationStrategyProcessTest.java         |   3 +
 .../gremlin/process/FeatureCoverageTest.java    |   6 +-
 15 files changed, 284 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
----------------------------------------------------------------------
diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index 83dfe22,0cddc02..96eeaaf
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@@ -62,7 -63,18 +63,19 @@@ const ignoreReason = 
  
  const ignoredScenarios = {
    // An associative array containing the scenario name as key, for example:
-   // 'g_V_asXa_bX_out_asXcX_path_selectXkeysX': new IgnoreError(ignoreReason.embeddedListAssertion),
+   'g_V_pageRank_hasXpageRankX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_pageRank_order_byXpageRank_decrX_byXnameX_name': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_pageRank_order_byXpageRank_decrX_name_limitX2X': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_peerPressure_hasXclusterX': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X': new IgnoreError(ignoreReason.computerNotSupported),
+   'g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX': new IgnoreError(ignoreReason.computerNotSupported),
++  'g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX': new IgnoreError(ignoreReason.computerNotSupported),
  };
  
  defineSupportCode(function(methods) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-test/features/map/PeerPressure.feature
----------------------------------------------------------------------
diff --cc gremlin-test/features/map/PeerPressure.feature
index 0000000,83f5bb2..d7368e9
mode 000000,100644..100644
--- a/gremlin-test/features/map/PeerPressure.feature
+++ b/gremlin-test/features/map/PeerPressure.feature
@@@ -1,0 -1,60 +1,77 @@@
+ # Licensed to the Apache Software Foundation (ASF) under one
+ # or more contributor license agreements.  See the NOTICE file
+ # distributed with this work for additional information
+ # regarding copyright ownership.  The ASF licenses this file
+ # to you under the Apache License, Version 2.0 (the
+ # "License"); you may not use this file except in compliance
+ # with the License.  You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing,
+ # software distributed under the License is distributed on an
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ # KIND, either express or implied.  See the License for the
+ # specific language governing permissions and limitations
+ # under the License.
+ 
+ Feature: Step - peerPressure()
+                 
+   Scenario: g_V_peerPressure_hasXclusterX
+     Given the modern graph
+     And the traversal of
+       """
+       g.withComputer().V().peerPressure().has("gremlin.peerPressureVertexProgram.cluster")
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | v[marko] |
+       | v[vadas] |
+       | v[lop] |
+       | v[josh] |
+       | v[ripple] |
+       | v[peter] |
+     And the graph should return 6 for count of "g.withComputer().V().peerPressure().has(\"gremlin.peerPressureVertexProgram.cluster\")"
+ 
+   Scenario: g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X
+     Given an unsupported test
+     Then nothing should happen because
+       """
+       The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+       specifically it has long keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+       with GraphSON 3.x.
+       """
+ 
+   Scenario: g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX
+     Given the modern graph
+     And the traversal of
+       """
+       g.withComputer().V().has("name", "ripple").in("created").peerPressure().by(__.outE()).by("cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster")
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"name": ["marko"], "cluster": [1]}] |
+       | m[{"name": ["vadas"], "cluster": [2]}] |
+       | m[{"name": ["lop"], "cluster": [4]}] |
+       | m[{"name": ["josh"], "cluster": [4]}] |
+       | m[{"name": ["ripple"], "cluster": [4]}] |
+       | m[{"name": ["peter"], "cluster": [6]}] |
++
++  Scenario: g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX
++    Given the modern graph
++    And the traversal of
++      """
++      g.withComputer().V().has("name", "ripple").in("created").peerPressure().with("~tinkerpop.peerPressure.edges",__.outE()).with("~tinkerpop.peerPressure.propertyName", "cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster")
++      """
++    When iterated to list
++    Then the result should be unordered
++      | result |
++      | m[{"name": ["marko"], "cluster": [1]}] |
++      | m[{"name": ["vadas"], "cluster": [2]}] |
++      | m[{"name": ["lop"], "cluster": [4]}] |
++      | m[{"name": ["josh"], "cluster": [4]}] |
++      | m[{"name": ["ripple"], "cluster": [4]}] |
++      | m[{"name": ["peter"], "cluster": [6]}] |
++

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
index b70cb02,be4ce9a..d53ec3e
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
@@@ -22,8 -22,8 +22,9 @@@ package org.apache.tinkerpop.gremlin.pr
  import org.apache.tinkerpop.gremlin.LoadGraphWith;
  import org.apache.tinkerpop.gremlin.TestHelper;
  import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+ import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
  import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
 +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
  import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
  import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
  import org.apache.tinkerpop.gremlin.structure.Vertex;
@@@ -51,20 -54,12 +55,14 @@@ public abstract class PeerPressureTest 
  
      public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
  
 +    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
 +
      @Test
      @LoadGraphWith(MODERN)
-     public void g_V_peerPressure() {
-         final Traversal<Vertex, Vertex> traversal = get_g_V_peerPressure();
+     public void g_V_peerPressure_hasXclusterX() {
+         final Traversal<Vertex, Vertex> traversal = get_g_V_peerPressure_hasXclusterX();
          printTraversalForm(traversal);
-         int counter = 0;
-         while (traversal.hasNext()) {
-             final Vertex vertex = traversal.next();
-             counter++;
-             assertTrue(vertex.property(PeerPressureVertexProgram.CLUSTER).isPresent());
-         }
-         assertEquals(6, counter);
+         assertEquals(6, IteratorUtils.count(traversal));
      }
  
      @Test
@@@ -102,29 -97,7 +100,29 @@@
          assertTrue(ids.contains(convertToVertexId("josh")));
          assertTrue(ids.contains(convertToVertexId("peter")));
      }
 -    
 +
 +    @Test
 +    @LoadGraphWith(MODERN)
 +    public void g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
 +        TestHelper.assumeNonDeterministic();
 +        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
 +        printTraversalForm(traversal);
 +        final List<Map<String, List<Object>>> results = traversal.toList();
 +        assertEquals(6, results.size());
 +        final Map<String, Object> clusters = new HashMap<>();
 +        results.forEach(m -> clusters.put((String) m.get("name").get(0), m.get("cluster").get(0)));
 +        assertEquals(2, results.get(0).size());
 +        assertEquals(6, clusters.size());
 +        assertEquals(clusters.get("josh"), clusters.get("ripple"));
 +        assertEquals(clusters.get("josh"), clusters.get("lop"));
 +        final Set<Object> ids = new HashSet<>(clusters.values());
 +        assertEquals(4, ids.size());
 +        assertTrue(ids.contains(convertToVertexId("marko")));
 +        assertTrue(ids.contains(convertToVertexId("vadas")));
 +        assertTrue(ids.contains(convertToVertexId("josh")));
 +        assertTrue(ids.contains(convertToVertexId("peter")));
 +    }
-     
++
      public static class Traversals extends PeerPressureTest {
  
          @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f88ace14/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 5739629,2cca50b..e09156b
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@@ -53,10 -53,11 +53,12 @@@ import org.apache.tinkerpop.gremlin.pro
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
+ import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
+ import org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
 +import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
  import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest;