You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/05/11 15:25:01 UTC
incubator-tinkerpop git commit: fixed a bug in BulkSet.equals() which
caused the aggregate().cap() bug. Added hashCode() and equals() tests to
BulkSetTest and added the exposing traversal to AggregateTest -- Fixed
TINKERPOP-1215. CTR.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/tp31 bce33476a -> 5165d0d94
fixed a bug in BulkSet.equals() which caused the aggregate().cap() bug. Added hashCode() and equals() tests to BulkSetTest and added the exposing traversal to AggregateTest -- Fixed TINKERPOP-1215. CTR.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5165d0d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5165d0d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5165d0d9
Branch: refs/heads/tp31
Commit: 5165d0d94a6717aa4a57e70f4e4818be2699f0b1
Parents: bce3347
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed May 11 09:24:54 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed May 11 09:24:54 2016 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 3 +-
.../process/traversal/step/util/BulkSet.java | 2 +-
.../gremlin/process/util/BulkSetTest.java | 25 ++++++++++++++
.../step/sideEffect/GroovyAggregateTest.groovy | 7 +++-
.../step/sideEffect/AggregateTest.java | 34 ++++++++++++++++++--
5 files changed, 66 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5165d0d9/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 4f0b923..e447eee 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/
TinkerPop 3.1.3 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Fixed a bug in `BulkSet.equals()` which made itself apparent when using `store()` and `aggregate()` with labeled `cap()`.
* Fixed bug in `gremlin-driver` where certain channel-level errors would not allow the driver to reconnect.
* Bumped SLF4J to 1.7.21 as previous versions suffered from a memory leak.
* Fixed a bug in `Neo4jGraphStepStrategy` where it wasn't defined properly as a `ProviderOptimizationStrategy`.
@@ -40,7 +41,7 @@ TinkerPop 3.1.3 (NOT OFFICIALLY RELEASED YET)
* Fixed bug in `:uninstall` command if the default `/ext` directory was not used.
* Added support to Gremlin Driver to allow either plain text or GSSAPI SASL authentication allowing the client to pass the SASL mechanism in the request.
* Improved dryRun functionality for the docs processor. It's now possible to dry run (or full run) only specific files.
-* Added precompile of ScriptInputFormat scripts to ScriptRecordReader to improve performance.
+* Added precompile of `ScriptInputFormat` scripts to `ScriptRecordReader` to improve performance.
[[release-3-1-2-incubating]]
TinkerPop 3.1.2 (Release Date: April 8, 2016)
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5165d0d9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
index ce29b5a..cf0c550 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
@@ -137,7 +137,7 @@ public final class BulkSet<S> extends AbstractSet<S> implements Set<S>, Serializ
@Override
public boolean equals(final Object object) {
- return this.map.equals(object);
+ return object instanceof BulkSet && this.map.equals(((BulkSet) object).map);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5165d0d9/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
index f340383..df1c54f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
@@ -26,6 +26,9 @@ import java.util.Random;
import java.util.Set;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -33,6 +36,28 @@ import static org.junit.Assert.assertEquals;
public class BulkSetTest {
@Test
+ public void shouldHaveProperHashAndEquality() {
+ final BulkSet<String> a = new BulkSet<>();
+ final BulkSet<String> b = new BulkSet<>();
+ a.add("stephen", 12);
+ a.add("marko", 32);
+ a.add("daniel", 74);
+ b.add("stephen", 12);
+ b.add("marko", 32);
+ b.add("daniel", 74);
+ assertEquals(a, b);
+ assertTrue(a.equals(b));
+ assertEquals(a.hashCode(), b.hashCode());
+ assertTrue(a.hashCode() == b.hashCode());
+ assertEquals(12, a.get("stephen"));
+ assertEquals(12, b.get("stephen"));
+ a.add("matthias", 99);
+ assertFalse(a.equals(b));
+ assertFalse(a.hashCode() == b.hashCode());
+ assertNotEquals(a.hashCode(), b.hashCode());
+ }
+
+ @Test
public void shouldHaveProperCountAndNotOutOfMemoryException() {
final Set<Boolean> list = new BulkSet<>();
final Random random = new Random();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5165d0d9/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
index a2743e9..0211f05 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
@@ -18,9 +18,9 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
import org.apache.tinkerpop.gremlin.process.traversal.Path
import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
import org.apache.tinkerpop.gremlin.structure.Vertex
/**
@@ -44,5 +44,10 @@ public abstract class GroovyAggregateTest {
public Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path() {
TraversalScriptHelper.compute("g.V.out.aggregate('a').path", g)
}
+
+ @Override
+ public Traversal<Vertex, Collection<Integer>> get_g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX() {
+ TraversalScriptHelper.compute("g.V.hasLabel('person').aggregate('x').by('age').cap('x').as('y').select('y')", g);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5165d0d9/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateTest.java
index 74fc56b..0793794 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateTest.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
import org.apache.tinkerpop.gremlin.process.traversal.Path;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
@@ -36,7 +36,10 @@ import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -51,6 +54,8 @@ public abstract class AggregateTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path();
+ public abstract Traversal<Vertex, Collection<Integer>> get_g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX();
+
//public abstract Traversal<Vertex, Path> get_g_v1_asXxX_bothE_asXeX_valueXweightX_exceptXwX_aggregateXwX_backXeX_otherV_jumpXx_true_trueX_path(final Object v1Id);
@Test
@@ -110,6 +115,26 @@ public abstract class AggregateTest extends AbstractGremlinProcessTest {
assertTrue(secondStepCounts.values().contains(1l));
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX() {
+ final Traversal<Vertex, Collection<Integer>> traversal = get_g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX();
+ final Collection<Integer> ages = traversal.next();
+ assertTrue(ages instanceof BulkSet);
+ assertEquals(4, ages.size());
+ assertTrue(ages.contains(29));
+ assertTrue(ages.contains(27));
+ assertTrue(ages.contains(32));
+ assertTrue(ages.contains(35));
+ final BulkSet<Integer> bulkSet = new BulkSet<>();
+ bulkSet.add(29);
+ bulkSet.add(27);
+ bulkSet.add(32);
+ bulkSet.add(35);
+ assertEquals(bulkSet, ages); // ensure bulk set equality
+ assertFalse(traversal.hasNext());
+ }
+
/*@Test
@LoadGraphWith(CLASSIC)
public void g_v1_asXxX_bothE_asXeX_valueXweightX_exceptXwX_aggregateXwX_backXeX_otherV_jumpXx_true_trueX_path() {
@@ -142,6 +167,11 @@ public abstract class AggregateTest extends AbstractGremlinProcessTest {
return g.V().out().aggregate("a").path();
}
+ @Override
+ public Traversal<Vertex, Collection<Integer>> get_g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX() {
+ return g.V().hasLabel("person").aggregate("x").by("age").cap("x").as("y").select("y");
+ }
+
/*public Traversal<Vertex, Path> get_g_v1_asXxX_bothE_asXeX_valueXweightX_exceptXwX_aggregateXwX_backXeX_otherV_jumpXx_true_trueX_path(final Object v1Id) {
return g.V(1).as("x").bothE().as("e").value("weight").except("w").aggregate("w").back("e").otherV().jump("x", t -> true, t -> true).path();
}*/